




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、計(jì)算機(jī)實(shí)習(xí)報(bào)告姓名: 班級(jí): 學(xué)號(hào): 系部: 專業(yè)方向: 指導(dǎo)老師 : 電子科技學(xué)院 2006年9月18一: 選題需求分析 題目要求:設(shè)計(jì)一個(gè)圖形工作方式下的10*10黑白棋棋盤,模仿兩個(gè)棋手對(duì)弈的過程,并報(bào)告最終輸贏結(jié)果。題目分析:設(shè)計(jì)黑白棋為人機(jī)對(duì)弈,人執(zhí)白旗,計(jì)算機(jī)執(zhí)黑棋,輪流走棋,人所執(zhí)白棋落定后,計(jì)算機(jī)(執(zhí)黑棋)選擇最優(yōu)擺子點(diǎn)擺子,每方都試圖在游戲結(jié)束前讓自己棋子的數(shù)目多于對(duì)方,棋子多者勝。據(jù)選題要求將棋盤設(shè)計(jì)為10*10格,初始狀態(tài)在棋盤中央交叉排放黑白旗各兩枚,為統(tǒng)計(jì)棋子個(gè)數(shù),有一個(gè)棋子記一分,人執(zhí)白棋,計(jì)算機(jī)執(zhí)黑棋,且白棋先走。下棋時(shí),棋子的位置必須是以自己的棋子能包圍住對(duì)手一
2、個(gè)或多個(gè)棋子,被包圍的對(duì)手棋子將變成自己的棋子。包圍的方向可以使上下左右斜線共8個(gè)方向,只要能連成一條線即可。當(dāng)一方擺子,但沒有可以包圍對(duì)手棋子的位置時(shí),該方必須聽步,通過放棄一子讓對(duì)手走棋,直到該方可以走子為止。當(dāng)棋盤上有一方的棋子為0(也就是被對(duì)方吃完)或下滿100格,游戲結(jié)束,旗子少者輸。二:程序設(shè)計(jì) 1:設(shè)計(jì)思路從程序界面,考慮此為一個(gè)二維平面圖,所以可以用數(shù)組形式表示棋盤上的位置。則該程序接收到棋手按鍵操作,既棋手放子,就判定是不是有效位置,也就是能不能包圍住對(duì)方棋子,如果能,便對(duì)棋子所在的位置往上下,左右,左上,左下,右上,右下8個(gè)方向?qū)ふ冶话鼑〉乃衅遄樱ū仨毷沁B續(xù)的,中間不能
3、有空格),將這些被包圍住的對(duì)手棋子都變成自己的棋子。當(dāng)白棋落定后,計(jì)算機(jī)(執(zhí)黑棋)選擇最優(yōu)擺子點(diǎn)擺子并吃掉白子即將其變?yōu)楹谧?。如果沒有這樣的位置可以落子,則停步,讓對(duì)方走棋,重復(fù)上述步驟,直到游戲結(jié)束。然后對(duì)當(dāng)前棋盤中的黑白棋個(gè)數(shù)進(jìn)行統(tǒng)計(jì)并輸出結(jié)果。如果想提前終止游戲,可以提前按退出。2.設(shè)計(jì)流程圖 3.設(shè)計(jì)流程及測(cè)試結(jié)果 (1) 定義變量 定義使用到的常數(shù)、全局變量等。如游戲的時(shí)間、狀態(tài)、黑白棋子的個(gè)數(shù)等。(2) Form_Load()設(shè)置游戲的初始界面 首先設(shè)置窗口的位置,檢測(cè)程序是否正在運(yùn)行以防止多次打開程序。再設(shè)置后退按鍵不可按,放棄一子鍵不可按,且黑白英雄榜不可見。最后調(diào)用drawn
4、ewqp 畫棋盤表格。即可得到游戲初始界面如下所示: 在游戲一欄中包含開始游戲、載入游戲、保存游戲、退出及黑白棋英雄榜幾個(gè)按鈕。在幫助一欄中有游戲規(guī)則及關(guān)于按鈕。(3)drawnewqp()畫棋盤表格 設(shè)置棋盤的可用的區(qū)域,剩余區(qū)域用于顯示時(shí)間、坐標(biāo)、黑白棋計(jì)數(shù)顯示、提示棋手所執(zhí)棋子為白色以及工具欄(包括游戲開始、載入、推出、放棄棋子、后退和游戲規(guī)則等)。然后畫10*10的表格線,再設(shè)置線條寬度等。如上圖所示。(4)窗體的設(shè)置 窗體的設(shè)置中包含了游戲窗體以及黑白英雄榜中各個(gè)按鈕控件的設(shè)置在屬性窗口中可設(shè)置它們的屬性。設(shè)計(jì)出的窗體如下圖所示: (4)開始新游戲() 在窗口工具欄的游戲中按下開始游
5、戲鍵,游戲開始,此時(shí)在棋盤中央交叉處已排放黑白棋子各兩枚,則顯示白棋先有2子及黑棋現(xiàn)有2子且可以計(jì)數(shù),時(shí)間開始計(jì)時(shí),坐標(biāo)值隨鼠標(biāo)移動(dòng)而改變,放棄一子鍵可按。該函數(shù)在調(diào)用時(shí)都將清空棋盤以及將游戲時(shí)間清零,這樣在按下開始游戲鍵后游戲自動(dòng)進(jìn)入新一局。開始時(shí)的界面如下所示: (5)放子() 1首先判斷是否可以放子:從上下、左右、左上、左下、右上、右下8個(gè)方向判斷是否可以放子。放置棋子的位置必須是以自己的棋子能包圍住對(duì)手一個(gè)或多個(gè)棋子,包圍的方向可以使上下左右斜線共8個(gè)方向,只要能連成一條線即可滿足要求。若放子位置有棋則無效。 2調(diào)用qp_MouseMove(Button As Integer, Shi
6、ft As Integer, X As Single, Y As Single)用于提示棋手鼠標(biāo)所在處是否可以放子,如果鼠標(biāo)所在區(qū)域可以放子,則鼠標(biāo)為“十字”圖標(biāo),否則為“禁止”圖標(biāo)。3若有多處可以放子,則可選最優(yōu)位置放子;如若整個(gè)棋盤有空格但不符合放子要求,即無棋可走,則需放棄此步,讓對(duì)方下棋。(6)翻轉(zhuǎn)棋子() 當(dāng)一方棋子落定后,就要分別往8個(gè)方向判斷是否包圍住對(duì)方棋子,如果是,則改變棋子顏色,也就是棋盤上黑白棋子的個(gè)數(shù)要發(fā)生變化。i代表行,j代表列,對(duì)于10*10的棋盤,它們的值為0-9,如果j若黑棋與白棋個(gè)數(shù)相同,則為平局,則會(huì)顯示如下窗口,提示該局為平局,且會(huì)提示你是否再來一局,按下
7、是,則開始新游戲;按下否,則結(jié)束游戲,所有窗口關(guān)閉。 3若白棋多于黑棋棋子數(shù),則棋手贏。此時(shí)將調(diào)用mn英雄榜_Click(),如果棋手成績(jī)能夠上榜,即能進(jìn)入前三名,則會(huì)出現(xiàn)如下界面,時(shí)間停止計(jì)時(shí),游戲鍵及放棄一子鍵不可按,界面也將提示你輸入姓名,刷新界面且列出你的名次: 而若不能夠進(jìn)入前三名,但白棋多于黑棋數(shù),則會(huì)出現(xiàn)以下界面,顯示你的用時(shí),且提示棋手勝利并問你是否再來一局。 三:調(diào)試分析 本次實(shí)驗(yàn)用Visual Basic 程序設(shè)計(jì)語言進(jìn)行編譯,在實(shí)驗(yàn)過程中遇到的問題如下: 1:需要設(shè)計(jì)10*10格的棋盤,但棋盤設(shè)計(jì)時(shí)得到11個(gè)棋格? 答:界面在顯示坐標(biāo)時(shí)是由(1,1)到(10,10),但由
8、于考慮界面為二維平面圖,所以用數(shù)組形式表示棋盤上的位置,則數(shù)組下標(biāo)應(yīng)由(0,0)開始到(9,9)結(jié)束才能得到10*10的棋盤表格。 2:在設(shè)置窗體中的控件時(shí),控件不可移? 答:設(shè)置控件位置時(shí)可以在屬性窗口中修改,也可直接將其移動(dòng)到所需位置。出現(xiàn)控件不可移時(shí)可查看工具欄中格式選項(xiàng)中的鎖定控件是否被鎖定,若被鎖定,解除鎖定即可。 3:打開界面直接運(yùn)行時(shí),窗體顯示的棋盤棋格數(shù)不標(biāo)準(zhǔn),只有在點(diǎn)擊工程窗體后,再啟動(dòng),才能得到正常10*10棋盤表格? 答:這應(yīng)屬于窗口屬性問題。10*10棋盤在改變?cè)绑w大小后得到,而原窗體不能適應(yīng)改變后的大小,導(dǎo)致直接運(yùn)行時(shí)窗口屬性不正確。重設(shè)原窗體屬性大小使之適應(yīng)現(xiàn)行窗
9、口大小即可。但在本次試驗(yàn)中,未能找到對(duì)原窗體屬性進(jìn)行設(shè)置的屬性欄,所以未能將其改正。 該程序是用于人機(jī)對(duì)弈,計(jì)算機(jī)依據(jù)所設(shè)優(yōu)先級(jí)別選擇有限級(jí)別最高的位置放子,所以當(dāng)人了解這一規(guī)律即可贏過計(jì)算機(jī)。且該程序不分難度,所以可改進(jìn)該程序,設(shè)置難度級(jí)別,已過級(jí)形式或棋手自選難度級(jí)別形式出現(xiàn)會(huì)提高游戲趣味性。而難度級(jí)別的設(shè)置可通過兩種方法實(shí)現(xiàn):(1)通過改變計(jì)算機(jī)優(yōu)先級(jí)別的設(shè)置來降低難度;(2)通過先定下子的位置來提高難度?;蛘呦拗坪笸随I的使用次數(shù)來提高難度。四:使用說明 本次實(shí)習(xí)是使用面向?qū)ο笤O(shè)計(jì)環(huán)境,用面向?qū)ο蟮某绦蛟O(shè)計(jì)語言Visual Basic 制作的黑白棋小游戲,實(shí)現(xiàn)人機(jī)對(duì)弈。 具體操作為:按下
10、啟動(dòng)鍵運(yùn)行程序,則會(huì)出現(xiàn)游戲初始界面,在工具欄的游戲選項(xiàng)中點(diǎn)擊開始游戲,此時(shí)棋盤界面中央交叉處已有黑白棋各兩個(gè),且開始計(jì)時(shí),這樣即可開始與計(jì)算機(jī)下棋。下棋過程中允許放棄一子或后退。幫助選項(xiàng)中有游戲規(guī)則可供棋手參考。若想結(jié)束游戲,可以在游戲選項(xiàng)中選擇退出從而結(jié)束游戲。在一局結(jié)束后,會(huì)顯示棋手成績(jī)并提示棋手是否再來一盤,再依據(jù)棋手選擇情況結(jié)束游戲或者開始新一局。五:實(shí)習(xí)總結(jié) 本次計(jì)算機(jī)實(shí)習(xí)主要是通過對(duì)所給選題進(jìn)行設(shè)計(jì)來提高編程能力。選題由老師給定。由于選題難度較高,所以參考資料以幫助完成實(shí)驗(yàn)。本次選題要求設(shè)計(jì)一個(gè)10*10的黑白棋游戲,由于需要在圖形工作方式下進(jìn)行,所以選用VB語言進(jìn)行編譯。由于以前未使用過VB語言,所以使用時(shí)由很多不明了的地方。但通過查閱書籍對(duì)VB語言有了一定的了解:用VB 編程時(shí),首先創(chuàng)建項(xiàng)目,然后設(shè)計(jì)界面,在此可添加需要的按鈕控件,在屬性窗口中可以設(shè)置其屬性,最后就是添加代碼,在代碼窗口可以添加窗體、按鈕等的代碼。在這些工作完成后即可運(yùn)行程序,如果出錯(cuò),計(jì)算機(jī)將提示編譯有錯(cuò),且在出錯(cuò)語句標(biāo)識(shí)為黃色,則在工具欄中點(diǎn)擊調(diào)試選項(xiàng)中的逐句調(diào)試或逐過程調(diào)試,再出錯(cuò)語句處按下F1,則計(jì)算機(jī)將提示你為何出錯(cuò),幫助你改正錯(cuò)誤。在VB應(yīng)用程序的
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 益智課題申報(bào)書范文
- 和老外合同范例
- 課題申報(bào)書范例范文
- 代替舊合同新合同范例
- 教育范式 課題申報(bào)書
- 原液供貨合同范本
- 課題申報(bào)書質(zhì)問點(diǎn)
- 合伙買車經(jīng)營合同范本
- 牡丹江課題立項(xiàng)申報(bào)書
- 買房付款寫合同范本
- 2024年遼寧省大連市檢驗(yàn)檢測(cè)認(rèn)證技術(shù)服務(wù)中心招聘12人歷年高頻考題難、易錯(cuò)點(diǎn)模擬試題(共500題)附帶答案詳解
- 醫(yī)療護(hù)理查對(duì)制度課件
- Unit 5 Humans and nature Topic Talk 教學(xué)設(shè)計(jì)-2023-2024學(xué)年高中英語北師大版(2019)必修第二冊(cè)
- 環(huán)衛(wèi)車輛投標(biāo)方案(技術(shù)方案)
- 醛固酮增多癥與原發(fā)性醛固酮增多癥概述
- 高速公路建設(shè)承攬合同
- 20以內(nèi)破十法練習(xí)題-A4打印版
- 安全生產(chǎn)治本攻堅(jiān)三年行動(dòng)實(shí)施方案(2024-2026年) - 副本
- 物業(yè)公司人員培訓(xùn)及考核方案
- 山東省淄博市2023-2024學(xué)年高一下學(xué)期期末教學(xué)質(zhì)量檢測(cè)數(shù)學(xué)試題
- 數(shù)據(jù)中心容災(zāi)備份解決方案
評(píng)論
0/150
提交評(píng)論