版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、目錄摘 要3第一部分 設(shè)計(jì)總概3一設(shè)計(jì)目的3二設(shè)計(jì)要求及內(nèi)容4三設(shè)計(jì)方法4四系統(tǒng)分析與設(shè)計(jì)4一 . 概要設(shè)計(jì)4二. 詳細(xì)設(shè)計(jì)4第二部分 數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)5一:主系統(tǒng)的函數(shù)5二:頭文件5第三部分 功能實(shí)現(xiàn)與程序調(diào)試5一:程序?qū)崿F(xiàn)的功能流程圖6二:程序?qū)崿F(xiàn)源代碼61. 頭文件62.cpp文件代碼9三 程序?qū)崿F(xiàn)截圖101.界面102. 進(jìn)入游戲開始下棋103.判斷棋局勝負(fù):124:結(jié)束游戲:12第四部分 完成設(shè)計(jì)13一、 實(shí)驗(yàn)總結(jié)13摘 要用所學(xué)的語言,設(shè)計(jì)簡單的一字棋游戲。關(guān)鍵字:博弈,啟發(fā)式搜索 第一部分 設(shè)計(jì)總概一設(shè)計(jì)目的 理解和掌握博弈樹的啟發(fā)式搜索過程,能夠用選定的編程語言實(shí)現(xiàn)簡單的博弈游戲。
2、二設(shè)計(jì)要求及內(nèi)容 設(shè)計(jì)一個(gè)不少于3行3列的棋盤,自己給出估價(jià)函數(shù),采用極大極小搜索方法。采用人機(jī)對弈的方式,一方走步夠等待對方,對弈過程的棋局變化在屏幕上顯示。三設(shè)計(jì)方法 采用c語言編寫程序?qū)崿F(xiàn) 四系統(tǒng)分析與設(shè)計(jì)一 . 概要設(shè)計(jì) A:進(jìn)入主界面 主界面包括導(dǎo)語及游戲操作步驟及其規(guī)則 B:進(jìn)入游戲,開始下棋 C:判斷輸贏,結(jié)束游戲 D:判斷是否重新開始游戲 是則返回B步驟 否則結(jié)束游戲 二. 詳細(xì)設(shè)計(jì) 1.進(jìn)入vs2010,選擇win32項(xiàng)目,新建程序 2 界面設(shè)計(jì) 利用所學(xué)的c語言知識,設(shè)計(jì)一個(gè)簡單的棋盤游戲界面3. 函數(shù)設(shè)計(jì) 利用所學(xué)的算法,編寫棋盤分析函數(shù)第二部分 數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)一:主系統(tǒng)的
3、函數(shù)窗口創(chuàng)建函數(shù),消息響應(yīng)函數(shù)皆放在主函數(shù)cpp里面 二:頭文件 存放具體的操作步驟及其函數(shù) 第三部分 功能實(shí)現(xiàn)與程序調(diào)試 開始 主界面 判斷輸贏 棋盤 開始下棋分出勝負(fù) 平局 結(jié)束,是否重新開始游戲 結(jié)束是否否是一:程序?qū)崿F(xiàn)的功能流程圖 二:程序?qū)崿F(xiàn)源代碼1. 頭文件 A:定義類:#include #include using namespace std;class CGobang /棋子類private:char chSort; /棋子的類別int nWin; /贏棋的次數(shù)int nLose; /輸棋的次數(shù)static int nDraw; /平局次數(shù)static char achBoar
4、d33; /棋盤static int nSize; /棋盤的尺寸 nSize X nSizepublic:CGobang(char chsort) /構(gòu)造函數(shù),決定一方棋子的類別chSort=chsort;nWin=nLose=nDraw=0;void PlayTurn(void); /走1步棋int Judge(); /判斷是否連成一線,是則返回1,否則返回0void Win(void); /贏棋void Lose(void); /輸棋static void Draw(void); /平局void PrintInfo(void); /輸出總體情況static void PrintBoard(
5、void); /輸出棋盤static int GetFull(void); /判斷棋盤是否已布滿棋子static void InitialBoard(void); /初始化棋盤;B:操作函數(shù): #include lei.h#includechar CGobang:achBoard33;int CGobang:nSize = 3;int CGobang:nDraw = 0;void CGobang:Draw()cout nntt平局!nn;nDraw+;void CGobang:InitialBoard() /初始化棋盤for(int i=0;inSize;i+)for(int j=0;jnSi
6、ze;j+)achBoardij= ;void CGobang:PrintBoard() /輸出棋盤system(CLS);cout endl;cout 1 2 3 endl;cout 1 achBoard00 | achBoard01 | achBoard02 endl;cout -|-|- endl;cout 2 achBoard10 | achBoard11 | achBoard12 endl;cout -|-|- endl;cout 3 achBoard20 | achBoard21 | achBoard22 endl;cout endl;cout endl;int CGobang:G
7、etFull() /判斷棋盤是否布滿棋子,若是返回1for(int i=0;inSize;i+)for(int j=0;jnSize;j+)if(achBoardij= )return 0;return 1;void CGobang:Win() /贏棋CGobang:PrintBoard(); /輸出棋盤cout nnttchSort方獲勝!nn;nWin+;void CGobang:Lose() /輸棋nLose+;void CGobang:PlayTurn(void) /走1步棋int nRow,nCol;cout 現(xiàn)在該 chSort nRow nCol; /輸入坐標(biāo)if(nRownSi
8、ze | nColnSize|nRow1|nCol1) /判斷坐標(biāo)越界cout 輸入的坐標(biāo)越界,x與y的范圍應(yīng)小于等于nSize并且大于0,請重新輸入n;else if(achBoardnRow-1nCol-1!= ) /判斷坐標(biāo)合理cout 棋盤(nRow ,nCol )處已有棋子,請重新輸入n;elseachBoardnRow-1nCol-1=chSort; /在坐標(biāo)處放上棋子break; /退出循環(huán)while(1);int CGobang:Judge() /判斷是否棋子連成一線,若是返回1/以下是各種可能連成一線的情況if(achBoard00=chSort & achBoard11=c
9、hSort & achBoard22=chSort)return 1;else if(achBoard20=chSort & achBoard11=chSort & achBoard02=chSort)return 1;else if(achBoard00=chSort & achBoard10=chSort & achBoard20=chSort)return 1;else if(achBoard01=chSort & achBoard11=chSort & achBoard21=chSort)return 1;else if(achBoard02=chSort & achBoard12=c
10、hSort & achBoard22=chSort)return 1;else if(achBoard00=chSort & achBoard01=chSort & achBoard02=chSort)return 1;else if(achBoard10=chSort & achBoard11=chSort & achBoard12=chSort)return 1;else if(achBoard20=chSort & achBoard21=chSort & achBoard22=chSort)return 1;elsereturn 0; /沒有連成一線則返回0void CGobang:Pr
11、intInfo(void) /打印總體情況cout Side chSort方共計(jì)贏 nWin 局,輸 nLose 局,平 nDraw 局。endl;void PrintRule(void) /打印規(guī)則cout nt*歡迎使用三子棋游戲!* endl endl;cout nt* endl ;cout t* 游戲規(guī)則: * endl;cout t* a.每1步輸入要下棋的格子的x,y坐標(biāo),按Enter鍵 *n;cout t* b.有1方首先3個(gè)棋子連成一線即判獲勝 *n;cout t* c.當(dāng)棋子布滿棋盤但仍無獲勝方即為平局 *n;cout t* d.X方先行 *n;cout t* endl ;c
12、out nntt請按任意鍵開始下棋!nn;int JudgePlay(CGobang & SideX,CGobang & SideO) /每下1步要進(jìn)行輸贏的判斷,有結(jié)果則返回1if(SideX.Judge() /X方獲勝SideX.Win();SideO.Lose();return 1;else if(SideO.Judge() /O方獲勝SideO.Win();SideX.Lose();return 1;elsereturn 0;void Play(CGobang & SideX,CGobang & SideO) /開始一局游戲while(1)CGobang:PrintBoard(); /
13、輸出棋盤SideX.PlayTurn(); /X方下棋if(JudgePlay(SideX,SideO) /判斷輸贏break;if(CGobang:GetFull() /判斷是否平局CGobang:Draw();break;CGobang:PrintBoard(); /輸出棋盤SideO.PlayTurn(); /O方下棋if(JudgePlay(SideX,SideO) /判斷輸贏break;if(CGobang:GetFull() /判斷是否平局CGobang:Draw();break;2.cpp文件代碼#include #include #include juti.hint main(
14、void)system(color 88);CGobang SideX(X),SideO(O); /定義兩個(gè)棋子類對象,分別代表X方與O方PrintRule();cin.get();string strChoice;doCGobang:InitialBoard(); /初始化棋盤Play(SideX,SideO); /開始下一局cout strChoice;while(strChoice = Y | strChoice = y);SideX.PrintInfo();SideO.PrintInfo();cout nnt歡迎再次使用三子連珠游戲! endl endl;return 0;3 程序?qū)崿F(xiàn)截圖1.界面2. 進(jìn)入游戲開始下棋 輸入坐標(biāo)開始棋局判斷輸入坐標(biāo)是否合理:3.判斷棋局勝負(fù):4:結(jié)束游戲: 第四部分 完
溫馨提示
- 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 助聽器產(chǎn)業(yè)鏈招商引資的調(diào)研報(bào)告
- 襯衫袖扣項(xiàng)目運(yùn)營指導(dǎo)方案
- 區(qū)塊鏈與人工智能融合行業(yè)市場調(diào)研分析報(bào)告
- 寵物用牙刷產(chǎn)品供應(yīng)鏈分析
- 噴霧美黑服務(wù)行業(yè)市場調(diào)研分析報(bào)告
- 多處理器芯片產(chǎn)業(yè)鏈招商引資的調(diào)研報(bào)告
- 電耦合器項(xiàng)目營銷計(jì)劃書
- 電子香煙電池充電器市場發(fā)展前景分析及供需格局研究預(yù)測報(bào)告
- 羊毛剪市場發(fā)展前景分析及供需格局研究預(yù)測報(bào)告
- 乳罩產(chǎn)品供應(yīng)鏈分析
- 外研上冊(一起)六年級知識匯總
- 大學(xué)生國家安全教育智慧樹知到答案章節(jié)測試2023年廣西科技大學(xué)
- 《2019版預(yù)防和治療壓力性損傷快速參考指南》簡要分享
- 頂管基坑支護(hù)方案
- GB/T 7597-2007電力用油(變壓器油、汽輪機(jī)油)取樣方法
- GB/T 617-1988化學(xué)試劑熔點(diǎn)范圍測定通用方法
- GB/T 320-2006工業(yè)用合成鹽酸
- GB/T 14410.7-2008飛行力學(xué)概念、量和符號第7部分:飛行點(diǎn)和飛行包線
- CNC品質(zhì)管控流程圖
- 河北省石家莊市藥品零售藥店企業(yè)藥房名單目錄
- 乒乓球技術(shù)統(tǒng)計(jì)表
評論
0/150
提交評論