vb黑白棋游戲課程設(shè)計報告_第1頁
已閱讀1頁,還剩12頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論