




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、五子棋游戲 詳細(xì)設(shè)計(jì)1、利用 MFC 生成五子棋游戲應(yīng)用程序框架具體 執(zhí)行 VC 程 擇Fil w命令,彈出 New框.單擊 標(biāo)簽,轉(zhuǎn)到 Projects MFC name文本框中輸入Fivechess_44 。Lacat 文本框是指項(xiàng)目的本地路徑 。單擊按鈕,彈出 MFC 1 對(duì)話框。選中單選按 (3)單擊完成按鈕,則建立一個(gè)單文檔應(yīng)用 。2 發(fā)2.1 棋盤(pán)設(shè)計(jì)1.在已創(chuàng)建的 中添加畫(huà)棋盤(pán) 先” 頭文件中定義一個(gè)用于顯示棋盤(pán)的自定義公有 void Checkerboard(CDC*pDC);然后在“Fivechess_44View.cpp”源文件中實(shí) void CFivechess_44Vi
2、ew:Checkerboard(CDC*pDC)for(int i=0;iMoveTo(i*50,0);/畫(huà)筆移動(dòng)到 點(diǎn)pDC-LineTo(i*50,1000); / 畫(huà)筆從點(diǎn)到(i*50,1000)點(diǎn)for(i=0;iMoveTo(0,i*50);pDC-LineTo(1000,i*50);2.在應(yīng)用程序 的 On 函數(shù)中調(diào)用該畫(huà)棋盤(pán)函 將 pDC 對(duì)象作為實(shí)參 傳遞給 Checkerboard()函數(shù),代碼如下:void CFivechess_44View:OnDraw(CDC* pDC) pDoc = GetDoASSERT_VALID(pDoc);/ TODO: add draw c
3、ode for nativedata here/調(diào)用自定義的畫(huà)鍵盤(pán)函 數(shù)3.編譯運(yùn)行得到如下效果:一個(gè)空棋盤(pán)2.2 放置棋子功能的開(kāi)發(fā)按照規(guī)劃,棋子使用鼠標(biāo)的左鍵和右鍵(分別用這兩鍵來(lái)表示下棋的雙方)來(lái)進(jìn)行單機(jī)下棋,即是當(dāng)用戶單擊左鍵時(shí),下黑色棋子,用戶單擊右鍵時(shí),下白色棋子。因此,必須為鼠標(biāo)添加鼠標(biāo)左鍵和鼠標(biāo)右鍵單擊的鼠標(biāo)消息處理 如下:1.右擊 CFiw 類,調(diào)用添加消息處理函數(shù) Add dler2.添加消息處 數(shù) 和 處理函 Exisiting退出對(duì)話框。并添加消息處理函數(shù)代碼。如下圖所示 :添加鼠標(biāo)左鍵和右鍵的消息處理函 (1).左鍵消息void nFlags,CPointpoint)
4、/ TODO: Add your messa code here and/orcall default brush = new ;/定義黑色畫(huà) 刷CDC* pDC = this-GetDC();/獲取當(dāng)前的圖形設(shè)備指 針/選中該黑色 pDC-SelectObject(brush);for(int i = 0 ; i 1000 ; i+=50)for(int j = 0 ; j Ellipse(tempPoint.x-20,tempPoint.y-20,tempPoint.x+20,tempPoint.y+20); point(2).右鍵消息void CFivechess_44View:OnRB
5、uttonDown(UINT nFlags,CPointpoint)/ TODO: Add your handlercode here and/orcall default brush = new CBrush(RGB(255,255,255) ;/定義白色畫(huà) 刷CDC* pDC = this-GetDC();/獲取當(dāng)前的圖形設(shè)備指 針/選中該白色 pDC-SelectObject(brush);for(int i = 0 ; i 1000 ; i+=50)for(int j = 0 ; j Ellipse(tempPoint.x-20,tempPoint.y-20,tempPoint.x+2
6、0,tempPoint.y+20); point到此便將畫(huà)棋盤(pán)和棋子的代碼編好,編譯運(yùn)行如下:左擊鼠標(biāo)左鍵畫(huà)黑點(diǎn),右擊鼠標(biāo)右 點(diǎn)3.但程序至此尚有兩點(diǎn)未 其一,下棋子的約束條件,即雙方按順序一人下一次才可第二次落棋子。其二,同一方格不能重復(fù)下棋 解決第一個(gè)問(wèn)題,添加以下代 (1) 在 中添加一個(gè)公有的整形變量int ; /定義保存左鍵或右鍵下棋的標(biāo)記變 量(2) 構(gòu)造函數(shù)將下棋的順序初始化為左 CFivechess_44View:CFivechess_44View()/ TODO: add constructioncode hereRightORLet=0;/初始化默認(rèn) 下(3) 修改鼠標(biāo)的左
7、鍵和右鍵的單擊消息處理函數(shù),在畫(huà)棋子之前判斷輪到 哪方下棋,代碼如下:左鍵代碼:void nFlags,CPointpoint)/ TODO: Add your messa handlercode here and/or call default ) brush = new ;/定義黑色畫(huà) 刷CDC* pDC = this-GetDC();pDC-SelectObject(brush);/獲取當(dāng)前的圖形設(shè)備指 針/選中該黑色 for(int i = 0 ; i 1000 ; i+=50)for(int j = 0 ; j Ellipse(tempPoint.x-20,tempPoint.y-2
8、0,tempPoint.x+20,tempPoint.y+20);/鼠標(biāo)狀態(tài)變 0 point右鍵代碼:void CFivechess_44View:OnRButtonDown(UINT nFlags,CPointpoint)/ TODO: Add your messa handlercode here and/or call default CBrus brush= new CBrush(RGB(255,255,255) ;/定義白色畫(huà) 刷CDC* pDC = this-GetDC();/獲取當(dāng)前的圖形設(shè)備指 針/選中該白色 pDC-SelectObject(brush);for(int i
9、 = 0 ; i 1000 ; i+=50)for(int j = 0 ; j Ellipse(tempPoint.x-20,tempPoint.y-20,tempPoint.x+20,tempPoint.y+20);RightORLeft-;/鼠標(biāo)狀態(tài)變 ,鼠標(biāo)右鍵按下后,再次改變鼠 態(tài) point其二,解決第二個(gè) (1)在 Fivechess_44View.h 頭文件中加入 3 行公有代碼,并且在該頭文件中包含r的頭文件,代碼如下:# vectorlass : CView; chess ;bool is Locat (CPointcp);void tcp);.;(2)根據(jù)函數(shù)名在正確位置添
10、加或修改 數(shù).添加實(shí)現(xiàn)放置棋子函數(shù)額判斷放置 bool CFivechess_44View:isLocation(CPointcp)bool isLoc = true ;for(int i= 0 ; i chess ; i+)if(cp.x = & cp.y = chessisLoc= false ;isLoc ;void tcp)chessVec.push_back(cp);修改鼠標(biāo)左鍵和右鍵單擊的消息處理函數(shù)代碼如下,并注意為了消除該缺陷,“鼠標(biāo)消息標(biāo)志變量變化 約束條件全部實(shí)現(xiàn)了 。void nFlags,CPointpoint)/ TODO: Add your messa handle
11、rcode here and/or call defaultif(RightORLeft= 0 ) brush = new ;/定義黑色畫(huà) 刷CDC* pDC = this-GetDC();/獲取當(dāng)前的圖形設(shè)備指 針/選中該黑色 pDC-SelectObject(brush);for(int i = 0 ; i 1000 ; i+=50)for(int j = 0 ; j Ellipse(tempPoint.x-20,tempPoint.y-20,tempPoint.x+20,tempPoint.y+20);oint); ;/畫(huà)了該點(diǎn)后,將該點(diǎn)插入 中/鼠標(biāo)消息標(biāo)志變量變化 ) pointvo
12、id CFivechess_44View:OnRButtonDown(UINT nFlags,CPointpoint)/ TODO: Add your messa handl code here and/or call if(RightORLeft= 1 ) brush = new CBrush(RGB(255,255,255) ;/定義白色畫(huà) 刷CDC* pDC = this-GetDC();/選中該白色 pDC-SelectObject(brush);for(int i = 0 ; i 1000 ; i+=50)for(int j = 0 ; j Ellipse(tempPoint.x-2
13、0,tempPoint.y-20,tempPoint.x+20,tempPoint.y+20);oint); ;/鼠標(biāo)消息標(biāo)志變量變化 ) point2.3 游戲獲勝?zèng)Q斷的開(kāi)發(fā)1.該功能是棋牌游戲中較難的功能。所以編寫(xiě)程序時(shí)要細(xì)心。游戲規(guī)則是這樣能夠的 :如果某一方(黑棋或白棋 有5個(gè)同色的棋子,則該顏色的這一方就獲勝。因此可以使用一個(gè)整形二維數(shù)組來(lái)記錄當(dāng)前的棋局情況,二維數(shù)組的值定義如下 :0:表示該位子 1:表示該位置已經(jīng)放了黑 ;2:表示該位置已經(jīng)放了白 ;解決的問(wèn)題 :?jiǎn)栴} 1:要在下每個(gè)棋子后,將數(shù)組變量對(duì)應(yīng)位置的數(shù)組元素值 “12”,這個(gè)只需要在鼠標(biāo)消息處理函數(shù)中 函數(shù)后改變數(shù)組元
14、素值 。問(wèn)題 2:下每個(gè)棋子后,判斷在這個(gè) 連續(xù) 5 戲,輪到下一方 具體實(shí)施步 ;(1) 增加棋盤(pán)狀態(tài)記錄數(shù)組 頭文件中定義一個(gè)公有的整形數(shù) int chessArr2020;并在視圖類的構(gòu)造函數(shù)中將整形數(shù)組初始化為 CFivechess_44View:CFivechess_44View()/ TODO: add constructioncode here/初始化棋盤(pán),左鍵先下棋for(int i=0;i20;i+)for(int j=0;j 0 & i 0 & i 0 & j 0 & j 0 & j 0 & i 0 & j 0 & i 0 & j 0 & i 0 & j 0 & i Get
15、DC();/獲取當(dāng)前的圖形設(shè)備指 針/選中該黑色 pDC-SelectObject(brush);for(int i = 0 ; i 1000 ; i+=50)for(int j = 0 ; j Ellipse(tempPoint.x-20,tempPoint.y-20,tempPoint.x+20,tempPoint.y+20);oint);/畫(huà)了該點(diǎn)后,將該點(diǎn)插入 中chessArrtempPoint.x/50tempPoint.y/50= 1 ;if( isWin(point)(黑色棋子獲 ); ; point鼠標(biāo)右鍵具有輸贏判斷的鼠標(biāo)消息處理函數(shù)與 void nFlags,CPointpoint)/ TODO: Add your messa handlercode here and/or call defaultif(RightORLeft= 1 ) brush = new CBrush(RGB(255,255,255) ;CDC* pDC = this-GetDC();pDC-SelectObject(brush);for(int i = 0 ; i 1000 ; i+=50)for(int j = 0 ; j Ellipse(tempPoint.x-20,tempPoint.y-
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- Unit 5 Topic 2 Section C 教學(xué)設(shè)計(jì)-2024-2025學(xué)年仁愛(ài)科普版八年級(jí)英語(yǔ)下冊(cè)
- 二年級(jí)下冊(cè)數(shù)學(xué)教案-6.1菜園衛(wèi)士-連續(xù)進(jìn)位、退位的三位數(shù)加減三位數(shù) 青島版
- 六年級(jí)下冊(cè)數(shù)學(xué)教案-四 比例 面積的變化|蘇教版
- 一年級(jí)上冊(cè)數(shù)學(xué)教案- 老鷹捉小雞 青島版
- 中建三局房屋建筑實(shí)測(cè)實(shí)量培訓(xùn)
- (??家族e(cuò)題)2022-2023學(xué)年三年級(jí)上冊(cè)期末高頻考點(diǎn)數(shù)學(xué)試卷(蘇教版)
- 2024年科創(chuàng)大數(shù)據(jù)項(xiàng)目投資申請(qǐng)報(bào)告代可行性研究報(bào)告
- 2025年甘孜職業(yè)學(xué)院?jiǎn)握新殬I(yè)技能測(cè)試題庫(kù)及答案一套
- 2025年黑龍江冰雪體育職業(yè)學(xué)院?jiǎn)握新殬I(yè)技能測(cè)試題庫(kù)必考題
- 2024年人工種植牙項(xiàng)目資金需求報(bào)告代可行性研究報(bào)告
- 出租共享菜園合同范例
- 八年級(jí)班主任學(xué)生心理健康計(jì)劃
- 整體施工勞務(wù)服務(wù)方案
- 傳統(tǒng)節(jié)日端午節(jié)模板37
- 2024 貴州公務(wù)員考試行測(cè)真題(省直)
- 2025年泰山職業(yè)技術(shù)學(xué)院高職單招職業(yè)適應(yīng)性測(cè)試近5年常考版參考題庫(kù)含答案解析
- 2025春季開(kāi)學(xué)第一次全體教師會(huì)上校長(zhǎng)講話稿
- 2025年三方買賣協(xié)議標(biāo)準(zhǔn)版本(2篇)
- 2025年南京旅游職業(yè)學(xué)院高職單招職業(yè)適應(yīng)性測(cè)試近5年??及鎱⒖碱}庫(kù)含答案解析
- 【歷史】唐朝建立與“貞觀之治”課件-2024~2025學(xué)年統(tǒng)編版七年級(jí)歷史下冊(cè)
- 《小腦梗死護(hù)理查房》課件
評(píng)論
0/150
提交評(píng)論