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