版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 計算機(jī)實習(xí)報告</b></p><p> 姓名: </p><p> 班級: </p><p> 學(xué)號: </p><p> 系部: </p><p> 專業(yè)方向:
2、 </p><p> 指導(dǎo)老師 : </p><p><b> 電子科技學(xué)院</b></p><p><b> 2006年9月18</b></p><p><b> 一: 選題需求分析</b></p><p> 題目要求:設(shè)
3、計一個圖形工作方式下的10*10黑白棋棋盤,模仿兩個棋手對弈的過程,并報告最終輸贏結(jié)果。</p><p> 題目分析:設(shè)計黑白棋為人機(jī)對弈,人執(zhí)白旗,計算機(jī)執(zhí)黑棋,輪流走棋,人所執(zhí)白棋落定后,計算機(jī)(執(zhí)黑棋)選擇最優(yōu)擺子點擺子,每方都試圖在游戲結(jié)束前讓自己棋子的數(shù)目多于對方,棋子多者勝。</p><p> 據(jù)選題要求將棋盤設(shè)計為10*10格,初始狀態(tài)在棋盤中央交叉排放黑白旗各兩枚,為統(tǒng)
4、計棋子個數(shù),有一個棋子記一分,人執(zhí)白棋,計算機(jī)執(zhí)黑棋,且白棋先走。下棋時,棋子的位置必須是以自己的棋子能包圍住對手一個或多個棋子,被包圍的對手棋子將變成自己的棋子。包圍的方向可以使上下左右斜線共8個方向,只要能連成一條線即可。當(dāng)一方擺子,但沒有可以包圍對手棋子的位置時,該方必須聽步,通過放棄一子讓對手走棋,直到該方可以走子為止。當(dāng)棋盤上有一方的棋子為0(也就是被對方吃完)或下滿100格,游戲結(jié)束,旗子少者輸。</p>&l
5、t;p><b> 二:程序設(shè)計</b></p><p><b> 1:設(shè)計思路</b></p><p> 從程序界面,考慮此為一個二維平面圖,所以可以用數(shù)組形式表示棋盤上的位置。則該程序接收到棋手按鍵操作,既棋手放子,就判定是不是有效位置,也就是能不能包圍住對方棋子,如果能,便對棋子所在的位置往上下,左右,左上,左下,右上,右下8個方
6、向?qū)ふ冶话鼑〉乃衅遄樱ū仨毷沁B續(xù)的,中間不能有空格),將這些被包圍住的對手棋子都變成自己的棋子。當(dāng)白棋落定后,計算機(jī)(執(zhí)黑棋)選擇最優(yōu)擺子點擺子并吃掉白子即將其變?yōu)楹谧?。如果沒有這樣的位置可以落子,則停步,讓對方走棋,重復(fù)上述步驟,直到游戲結(jié)束。然后對當(dāng)前棋盤中的黑白棋個數(shù)進(jìn)行統(tǒng)計并輸出結(jié)果。如果想提前終止游戲,可以提前按退出。</p><p><b> 2.設(shè)計流程圖 </b><
7、;/p><p> 3.設(shè)計流程及測試結(jié)果 </p><p><b> 定義變量</b></p><p> 定義使用到的常數(shù)、全局變量等。如游戲的時間、狀態(tài)、黑白棋子的個數(shù)等。</p><p> Form_Load()設(shè)置游戲的初始界面</p><p> 首先設(shè)置窗口的位置,檢測程序是否正在運
8、行以防止多次打開程序。再設(shè)置‘后退’按鍵不可按,‘放棄一子’鍵不可按,且黑白英雄榜不可見。最后調(diào)用drawnewqp 畫棋盤表格。即可得到游戲初始界面如下所示:</p><p> 在游戲一欄中包含開始游戲、載入游戲、保存游戲、退出及黑白棋英雄榜幾個按鈕。在幫助一欄中有游戲規(guī)則及關(guān)于按鈕。</p><p> ?。?)drawnewqp()畫棋盤表格</p><p>
9、 設(shè)置棋盤的可用的區(qū)域,剩余區(qū)域用于顯示時間、坐標(biāo)、黑白棋計數(shù)顯示、提示棋手所執(zhí)棋子為白色以及工具欄(包括游戲開始、載入、推出、放棄棋子、后退和游戲規(guī)則等)。然后畫10*10的表格線,再設(shè)置線條寬度等。如上圖所示。</p><p><b> ?。?)窗體的設(shè)置</b></p><p> 窗體的設(shè)置中包含了游戲窗體以及黑白英雄榜中各個按鈕控件的設(shè)置在屬性窗口中可設(shè)置
10、它們的屬性。設(shè)計出的窗體如下圖所示:</p><p> ?。?)開始新游戲()</p><p> 在窗口工具欄的游戲中按下開始游戲鍵,游戲開始,此時在棋盤中央交叉處已排放黑白棋子各兩枚,則顯示‘白棋先有2子’及‘黑棋現(xiàn)有2子’且可以計數(shù),時間開始計時,坐標(biāo)值隨鼠標(biāo)移動而改變,‘放棄一子’鍵可按。該函數(shù)在調(diào)用時都將清空棋盤以及將游戲時間清零,這樣在按下開始游戲鍵后游戲自動進(jìn)入新一局。開始時
11、的界面如下所示:</p><p><b> ?。?)放子()</b></p><p> 1〉首先判斷是否可以放子:從上下、左右、左上、左下、右上、右下8個方向判斷是否可以放子。放置棋子的位置必須是以自己的棋子能包圍住對手一個或多個棋子,包圍的方向可以使上下左右斜線共8個方向,只要能連成一條線即可滿足要求。若放子位置有棋則無效。 </p><p&g
12、t; 2〉調(diào)用qp_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)用于提示棋手鼠標(biāo)所在處是否可以放子,如果鼠標(biāo)所在區(qū)域可以放子,則鼠標(biāo)為“十字”圖標(biāo),否則為“禁止”圖標(biāo)。</p><p> 3〉若有多處可以放子,則可選最優(yōu)位置放子;如若整個棋盤有空格但不符合放子要求,即無棋可走,則需放棄此步,讓對方下棋。<
13、/p><p><b> ?。?)翻轉(zhuǎn)棋子()</b></p><p> 當(dāng)一方棋子落定后,就要分別往8個方向判斷是否包圍住對方棋子,如果是,則改變棋子顏色,也就是棋盤上黑白棋子的個數(shù)要發(fā)生變化。i代表行,j代表列,對于10*10的棋盤,它們的值為0-9,如果j<8,往右邊判斷,從當(dāng)前位置開始,用循環(huán)語句判斷判斷右邊是否有一個或連續(xù)多個對手的棋子,遇到自己的棋子或空
14、格則結(jié)束循環(huán),如果循環(huán)結(jié)束不是遇到空白,且列坐標(biāo)小于10,則說明這些位置的棋子是被自己包圍的對手棋子,將它們吃掉,也就是改變?yōu)樽约旱钠遄?,同樣的方法向左、上、下?個方向進(jìn)行判斷。</p><p> (7) 黑子隨即下子并吃掉白子()</p><p> 由于設(shè)置由計算機(jī)執(zhí)黑子,則應(yīng)先對黑子可以放子的地方劃分等級,等級高的位置優(yōu)先走。共將其分為15個等級:</p><
15、p><b> 0級:不能放子</b></p><p><b> 1級:</b></p><p> 2級:四個角的旁邊一格</p><p> 3級:四條邊框的旁邊一格</p><p> 4級:只能吃一個方向的子,且吃了別人后,容易被別人吃回去</p><p>
16、 5級:只能吃一個方向的子,但不容易被別人吃回去</p><p> 6級:能吃二個方向的子</p><p> 7級:能吃三個方向的子</p><p> 8級:能吃四個方向的子</p><p> 9級:能吃五個方向的子</p><p> 10級:能吃六個方向的子</p><p> 11
17、級:能吃七個方向的子</p><p> 12級:能吃八個方向的子</p><p><b> 13級:</b></p><p><b> 14級:棋盤的四邊</b></p><p> 15級:棋盤的四個角</p><p> 計算機(jī)根據(jù)優(yōu)先級別擇優(yōu)下子后自動將所包圍的棋
18、子變?yōu)楹谄濉?lt;/p><p> ?。?) ended() 判斷輸贏</p><p> 當(dāng)格子已占滿100格或一方棋子個數(shù)為0,則游戲結(jié)束:</p><p> 1〉若白棋棋子個數(shù)少于黑棋,則會顯示窗口(如下所示),提示‘你輸了’以及‘再來一盤’。若選擇‘是’,則開始新游戲;選擇‘否’,則結(jié)束游戲,所有都窗口關(guān)閉。</p><p> 2&g
19、t;若黑棋與白棋個數(shù)相同,則為平局,則會顯示如下窗口,提示該局為平局,且會提示你是否再來一局,按下‘是’,則開始新游戲;按下‘否’,則結(jié)束游戲,所有窗口關(guān)閉。</p><p> 3〉若白棋多于黑棋棋子數(shù),則棋手贏。此時將調(diào)用mn英雄榜_Click(),如果棋手成績能夠上榜,即能進(jìn)入前三名,則會出現(xiàn)如下界面,時間停止計時,‘游戲’鍵及‘放棄一子’鍵不可按,界面也將提示你輸入姓名,刷新界面且列出你的名次:</
20、p><p> 而若不能夠進(jìn)入前三名,但白棋多于黑棋數(shù),則會出現(xiàn)以下界面,顯示你的用時,且提示棋手勝利并問你是否再來一局。</p><p><b> 三:調(diào)試分析</b></p><p> 本次實驗用Visual Basic 程序設(shè)計語言進(jìn)行編譯,在實驗過程中遇到的問題如下:</p><p> 1〉:需要設(shè)計10*10
21、格的棋盤,但棋盤設(shè)計時得到11個棋格?</p><p> 答:界面在顯示坐標(biāo)時是由(1,1)到(10,10),但由于考慮界面為二維平面圖,所以用數(shù)組形式表示棋盤上的位置,則數(shù)組下標(biāo)應(yīng)由(0,0)開始到(9,9)結(jié)束才能得到10*10的棋盤表格。</p><p> 2〉:在設(shè)置窗體中的控件時,控件不可移?</p><p> 答:設(shè)置控件位置時可以在屬性窗口中修改
22、,也可直接將其移動到所需位置。出現(xiàn)控件不可移時可查看工具欄中格式選項中的‘鎖定控件’是否被鎖定,若被鎖定,解除鎖定即可。</p><p> 3〉:打開界面直接運行時,窗體顯示的棋盤棋格數(shù)不標(biāo)準(zhǔn),只有在點擊工程窗體后,再啟動,才能得到正常10*10棋盤表格?</p><p> 答:這應(yīng)屬于窗口屬性問題。10*10棋盤在改變原窗體大小后得到,而原窗體不能適應(yīng)改變后的大小,導(dǎo)致直接運行時窗口
23、屬性不正確。重設(shè)原窗體屬性大小使之適應(yīng)現(xiàn)行窗口大小即可。但在本次試驗中,未能找到對原窗體屬性進(jìn)行設(shè)置的屬性欄,所以未能將其改正。</p><p> 該程序是用于人機(jī)對弈,計算機(jī)依據(jù)所設(shè)優(yōu)先級別選擇有限級別最高的位置放子,所以當(dāng)人了解這一規(guī)律即可贏過計算機(jī)。且該程序不分難度,所以可改進(jìn)該程序,設(shè)置難度級別,已過級形式或棋手自選難度級別形式出現(xiàn)會提高游戲趣味性。而難度級別的設(shè)置可通過兩種方法實現(xiàn):(1)通過改變計算
24、機(jī)優(yōu)先級別的設(shè)置來降低難度;(2)通過先定下子的位置來提高難度?;蛘呦拗啤笸恕I的使用次數(shù)來提高難度。</p><p><b> 四:使用說明</b></p><p> 本次實習(xí)是使用面向?qū)ο笤O(shè)計環(huán)境,用面向?qū)ο蟮某绦蛟O(shè)計語言Visual Basic 制作的黑白棋小游戲,實現(xiàn)人機(jī)對弈。</p><p> 具體操作為:按下‘啟動’鍵運行程
25、序,則會出現(xiàn)游戲初始界面,在工具欄的游戲選項中點擊‘開始游戲’,此時棋盤界面中央交叉處已有黑白棋各兩個,且開始計時,這樣即可開始與計算機(jī)下棋。下棋過程中允許‘放棄一子’或‘后退’。幫助選項中有游戲規(guī)則可供棋手參考。若想結(jié)束游戲,可以在游戲選項中選擇‘退出’從而結(jié)束游戲。在一局結(jié)束后,會顯示棋手成績并提示棋手是否再來一盤,再依據(jù)棋手選擇情況結(jié)束游戲或者開始新一局。</p><p><b> 五:實習(xí)總結(jié)
26、</b></p><p> 本次計算機(jī)實習(xí)主要是通過對所給選題進(jìn)行設(shè)計來提高編程能力。選題由老師給定。由于選題難度較高,所以參考資料以幫助完成實驗。本次選題要求設(shè)計一個10*10的黑白棋游戲,由于需要在圖形工作方式下進(jìn)行,所以選用VB語言進(jìn)行編譯。由于以前未使用過VB語言,所以使用時由很多不明了的地方。但通過查閱書籍對VB語言有了一定的了解:</p><p> 用VB 編程
27、時,首先創(chuàng)建項目,然后設(shè)計界面,在此可添加需要的按鈕控件,在屬性窗口中可以設(shè)置其屬性,最后就是添加代碼,在代碼窗口可以添加窗體、按鈕等的代碼。在這些工作完成后即可運行程序,如果出錯,計算機(jī)將提示編譯有錯,且在出錯語句標(biāo)識為黃色,則在工具欄中點擊調(diào)試選項中的逐句調(diào)試或逐過程調(diào)試,再出錯語句處按下F1,則計算機(jī)將提示你為何出錯,幫助你改正錯誤。在VB應(yīng)用程序的工具欄中各選項都可以利用來幫助你完成實驗。如視圖選項中的各個窗口都可顯示,從而使你
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 黑白棋游戲課程設(shè)計
- c語言課程設(shè)計---黑白棋游戲
- c語言課程設(shè)計--黑白棋游戲
- 黑白棋游戲數(shù)據(jù)結(jié)構(gòu)課程設(shè)計
- c語言課程設(shè)計報告--黑白棋
- 黑白棋游戲畢業(yè)設(shè)計
- 嵌入式wince課程設(shè)計報告(黑白棋)
- 黑白棋畢業(yè)論文---黑白棋游戲設(shè)計與開發(fā)(含外文翻譯)
- 基于qt的黑白棋游戲
- 黑白棋游戲畢業(yè)論文
- c語言程序設(shè)計課程設(shè)計(論文)-黑白棋
- 黑白棋游戲設(shè)計與開發(fā)畢業(yè)論文
- 基于qt的黑白棋游戲開發(fā)(論文)
- 計算機(jī)技術(shù)基礎(chǔ)課程設(shè)計---黑白棋
- 基于Qt的黑白棋游戲(終稿).doc
- 基于java me的黑白棋游戲設(shè)計及實現(xiàn)畢業(yè)設(shè)計
- 基于java me的黑白棋游戲設(shè)計及實現(xiàn)畢業(yè)設(shè)計
- 基于Alpha-Btea剪枝算法的黑白棋游戲的設(shè)計與開發(fā).pdf
- vb打字游戲課程設(shè)計報告
- vb課程設(shè)計報告---打字游戲
評論
0/150
提交評論