五子棋系統(tǒng)實(shí)驗(yàn)報(bào)告_第1頁(yè)
五子棋系統(tǒng)實(shí)驗(yàn)報(bào)告_第2頁(yè)
五子棋系統(tǒng)實(shí)驗(yàn)報(bào)告_第3頁(yè)
五子棋系統(tǒng)實(shí)驗(yàn)報(bào)告_第4頁(yè)
五子棋系統(tǒng)實(shí)驗(yàn)報(bào)告_第5頁(yè)
已閱讀5頁(yè),還剩11頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

湖南工業(yè)大學(xué)課程設(shè)計(jì)任務(wù)書(shū)—年第2學(xué)期計(jì)算機(jī)與通信學(xué)院(系、部)計(jì)算機(jī)科學(xué)與技術(shù)專業(yè)計(jì)算機(jī)1502班級(jí)課程名稱:面向?qū)ο蟪绦蛟O(shè)計(jì)設(shè)計(jì)題目:五子棋完成期限:自年6月13日至年6月19日共1周內(nèi)容及任務(wù)設(shè)計(jì)主要技術(shù)參數(shù)函數(shù)調(diào)用類與對(duì)象const與static應(yīng)用指針應(yīng)用使用了MFC中OnLButtonUp()函數(shù),BitBlt()函數(shù),SelectObject()函數(shù),AfxGetApp()函數(shù),MoveTo()函數(shù),LineTo()函數(shù),二、設(shè)計(jì)任務(wù)功效1、模擬真實(shí)棋盤(pán)棋子功效2、模擬人與人對(duì)戰(zhàn)下棋功效3、模擬實(shí)時(shí)勝敗判斷功效4、模擬棋局存放與讀取設(shè)計(jì)工作量1、函數(shù)編碼設(shè)計(jì)2、程序界面設(shè)計(jì)3、函數(shù)代碼調(diào)試運(yùn)行4、系統(tǒng)調(diào)試運(yùn)行進(jìn)度安排起止日期工作內(nèi)容.6.13~6.15設(shè)計(jì)系統(tǒng)模擬下棋,勝敗判斷等模塊,編譯系統(tǒng)代碼.6.15~6.16上機(jī)調(diào)試運(yùn)行,進(jìn)行錯(cuò)誤分析.6.17~6.18完成試驗(yàn)匯報(bào)主要參考資料指導(dǎo)教師(簽字):年月日系(教研室)主任(簽字):年月日面向?qū)ο蟪绦蛟O(shè)計(jì)課程設(shè)計(jì)設(shè)計(jì)說(shuō)明書(shū)五子棋起止日期:年6月13日至年6月18日學(xué)生姓名王回班級(jí)計(jì)算機(jī)1502學(xué)號(hào)成績(jī)指導(dǎo)教師(簽字)計(jì)算機(jī)與通信學(xué)院6月18日

五子棋一、課題介紹和課題任務(wù)設(shè)計(jì)課題名稱:五子棋實(shí)現(xiàn)以下功效:功效1、模擬真實(shí)棋盤(pán)棋子功效2、模擬人與人對(duì)戰(zhàn)下棋功效3、模擬實(shí)時(shí)勝敗判斷功效4、模擬棋局存放與讀取二、設(shè)計(jì)要求具備動(dòng)畫(huà)功效(即圖像能即時(shí)移動(dòng)),能實(shí)現(xiàn)人與人進(jìn)行簡(jiǎn)單對(duì)玩,能實(shí)現(xiàn)簡(jiǎn)單勝敗判斷三、系統(tǒng)分析和系統(tǒng)中類設(shè)計(jì)CWZQApp類作用:初始化應(yīng)用程序及運(yùn)行該程序所需要組員函數(shù)CWZQDoc類作用:存放應(yīng)用程序數(shù)據(jù)以及實(shí)現(xiàn)文件保留,加載功效CMainFrame類作用:管理應(yīng)用程序窗口,顯示標(biāo)題欄,狀態(tài)欄,工具欄等,同時(shí)處理針對(duì)窗口操作信息CAboutDlg類作用:向?qū)ё詣?dòng)生成對(duì)話框類CWZQView類作用:管理視圖窗口,在框架窗口中實(shí)現(xiàn)用戶數(shù)據(jù)顯示和打印,存放添加功效模塊CWZQView類中組員函數(shù)與數(shù)據(jù)組員: voidSave();//****//保留文件voidOnOpen()//打開(kāi)文件 voidover(CPointpoint);//****//檢驗(yàn)是否結(jié)束voidOnDraw(CDC*pDC)//畫(huà)棋盤(pán)函數(shù)voidOnLButtonUp(UINTnFlags,CPointpoint)//模擬下棋函數(shù) HCURSORhcursorwhite;//****//兩個(gè)鼠標(biāo) HCURSORhcursorblack;//**** intwzq[19][19];//****//棋盤(pán)數(shù)組 boolcolorwhite;//****//colorwhiteTRUE時(shí)白棋下,不然黑棋下 CBitmapm_bmblack;//****//棋子位圖 CBitmapm_bmwhite;//****voidCWZQView::OnDraw(CDC*pDC)//結(jié)構(gòu)棋盤(pán),顯示白棋以及黑棋GetDocument()//獲取文檔指針,在視圖中顯示文檔內(nèi)容CBrush//用于結(jié)構(gòu)CBrush對(duì)象,然后傳給需要畫(huà)刷CDC組員函數(shù)pDC->FillRect(myrect1,&mybrush1)//畫(huà)黑框線四、系統(tǒng)實(shí)現(xiàn)及調(diào)試添加功效:1.圖標(biāo),光標(biāo)以及位圖繪制程序運(yùn)行開(kāi)始鼠標(biāo)在進(jìn)入棋盤(pán)界面未放下棋子時(shí)變?yōu)轭愃破遄庸鈽?biāo),此處需要描繪2種棋子光標(biāo): 黑白鼠標(biāo)Cursor以替換當(dāng)前鼠標(biāo): IDC_CURSOR1 黑棋子 IDC_CURSOR2 白棋子

說(shuō)明:因?yàn)橄缕鍟r(shí)我們必須把鼠標(biāo)熱點(diǎn)設(shè)置在中間,點(diǎn)擊下列圖(圖3-1-3)最右邊按扭,然后把鼠標(biāo)移動(dòng)到圖像中你想設(shè)置為熱點(diǎn)地方,按下鼠標(biāo)左鍵。繪圖過(guò)程:點(diǎn)擊ResouceView,打開(kāi)Cursor,創(chuàng)建2個(gè)光標(biāo),分別命名為光標(biāo)1和2,采取單色[32*32]面板進(jìn)行繪制。在下棋者點(diǎn)擊鼠標(biāo)落下棋子后,需要黑白兩種圖標(biāo)做為統(tǒng)計(jì),此處需要描繪2中圖標(biāo):黑白位圖Bitmap以表示棋盤(pán)上面棋子: IDB_BLACK IDB_WHITE2.菜單欄繪制在menu欄中繪制菜單: 菜單以供操作: 開(kāi)始: ID_START 保留: ID_SAVE 打開(kāi): ID_OPEN 工具欄:如上圖所表示。 說(shuō)明:工具欄通常都是依照菜單項(xiàng)選擇項(xiàng)而產(chǎn)生,它ID通常都能從菜單ID中找到。2、設(shè)置鼠標(biāo),以及鼠標(biāo)圖形變換函數(shù)使得每下完一步棋鼠標(biāo)都會(huì)變成對(duì)方旗子換做對(duì)方下3、畫(huà)棋盤(pán)程序開(kāi)啟時(shí)顯示棋盤(pán)格式(先畫(huà)背景后畫(huà)黑框線)4、下棋操作:voidCWZQView::OnLButtonUp(UINTnFlags,CPointpoint)函數(shù)功效:模擬人與人交替下棋過(guò)程詳細(xì)實(shí)現(xiàn)步驟:第一步:判斷旗子是否在棋盤(pán)內(nèi)(point.x>30&&point.x<410&&point.y>30&&point.y<410)第二步:若在棋盤(pán)內(nèi)則判斷該位置是否已經(jīng)有棋子(if(colorwhite&&wzq[px][py]==0)表示該位置沒(méi)有棋子)第三步:使用SelectObject()函數(shù)把一個(gè)對(duì)象(位圖、畫(huà)筆、畫(huà)刷等)選入指定設(shè)備描述表。新對(duì)象代替同一類型老對(duì)象,在本程序中對(duì)象為黑白棋子位圖。使用BitBlt()函數(shù)用于把源設(shè)備環(huán)境中位圖復(fù)制到當(dāng)前設(shè)備環(huán)境中本程序BitBlt(px*20+32,py*20+32,160,160,&Dc,0,0,SRCCOPY)內(nèi)部參數(shù)表示:目標(biāo)區(qū)域左上角點(diǎn)x坐標(biāo)目標(biāo)區(qū)域左上角點(diǎn)y坐標(biāo)目標(biāo)區(qū)域?qū)挾饶繕?biāo)區(qū)域高度源貼圖區(qū)域DC指針(源位圖設(shè)備環(huán)境)源貼圖區(qū)域x坐標(biāo)源貼圖區(qū)域y坐標(biāo)像素直接拷貝模式第四步:檢驗(yàn)是否結(jié)束(即給數(shù)組wzq[px][py]是否等于1或-1),若結(jié)束則換另一個(gè)顏色棋子下調(diào)試:在實(shí)現(xiàn)下棋操作時(shí)候剛開(kāi)始使用OnLButtonDown(UINTnFlags,CPointpoint)函數(shù),運(yùn)行時(shí)發(fā)覺(jué)Down函數(shù)時(shí)是在鼠標(biāo)按下時(shí)放下棋子,但當(dāng)我們按下后意識(shí)到下錯(cuò)了就沒(méi)方法移動(dòng)了,這么實(shí)際體驗(yàn)沒(méi)有達(dá)成預(yù)期效果,依照資料我們將Down函數(shù)改為了OnLButtonUp(UINTnFlags,CPointpoint)函數(shù),這表示當(dāng)鼠標(biāo)鍵松開(kāi)時(shí)放下棋子,這么修改后實(shí)際操作就變得人性化很多。5、判斷勝?。簐oidCWZQView::over(CPointpoint)用一個(gè)over()函數(shù)判斷是否結(jié)束,是則結(jié)束并重新開(kāi)始;不然,接著把鼠標(biāo)變成對(duì)方棋子,表示對(duì)方下棋。函數(shù)功效:利用剛下棋位置為中心,檢驗(yàn)它各個(gè)方向上連續(xù)五個(gè)棋子是否同色,是則結(jié)束并重新開(kāi)始。將五子棋數(shù)組賦值為1和-1(若為白棋子則為1,黑棋子為-1)利用連續(xù)五個(gè)棋子值相加,假如它們值絕對(duì)值等于5,則說(shuō)明是同色。詳細(xì)實(shí)現(xiàn)步驟:第一步:獲取鼠標(biāo)指向數(shù)組位置x和y第二步:計(jì)算開(kāi)始判斷坐標(biāo)xx和yy第三步:檢驗(yàn)各個(gè)方向上連續(xù)5個(gè)棋子顏色(橫向、豎向、向右下角、向左下角)假如五個(gè)棋子都是白色(a=a+wzq[xx+i][yy+i]==5則利用AfxMessageBox()函數(shù)彈出”白棋勝”窗口。假如五個(gè)棋子都是黑色(a=a+wzq[xx+i][yy+i]==-5)則利用AfxMessageBox()函數(shù)彈出”黑棋勝”窗口。第四步:執(zhí)行OnStart()函數(shù)重新開(kāi)始6、文件保留和讀取函數(shù)功效:實(shí)現(xiàn)棋局存放和讀取詳細(xì)實(shí)現(xiàn)步驟:第一步:利用CFileDialog類生成一個(gè)windows慣用文件對(duì)話框?qū)ο螅–FileDialog類封裝了Windows慣用文件對(duì)話框。慣用文件對(duì)話框提供了一個(gè)簡(jiǎn)單與Windows標(biāo)準(zhǔn)相一致文件打開(kāi)和文件存盤(pán)對(duì)話框功效。)設(shè)置保留文件,后綴名wzq設(shè)置對(duì)話框格調(diào),通常為OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,即隱藏只讀選項(xiàng)和覆蓋已經(jīng)有文件前提醒 .OFN_HIDEREADONLY== 隱藏只讀選項(xiàng)OFN_OVERWRITEPROMPT==覆蓋已經(jīng)有文件前提FALSE為保留文件對(duì)話框"wzq"為缺省擴(kuò)展名NULL缺省顯示在文件名組合框編輯框文件名,通??蛇xNULL設(shè)置文件篩選類型如: "(*.WZQ)|*.wzq|AllFiles|*.*||",它指明可供選擇文件類型和對(duì)應(yīng)擴(kuò)展名。 this父窗口指針第二步:循環(huán)把棋盤(pán)數(shù)組值寫(xiě)入文件第三步:關(guān)閉文件五、系統(tǒng)使用說(shuō)明1、程序基本界面圖:2、菜單欄中文件下開(kāi)始能夠開(kāi)始一局新棋局,保留能夠保留當(dāng)前棋局,打開(kāi)能夠打開(kāi)保留過(guò)wzq文件大致流程以下:1、畫(huà)棋盤(pán);2、畫(huà)棋子;3、為棋盤(pán)數(shù)組賦值,在界面上顯示為將棋子放置在棋盤(pán)上4、每下一步判斷輸贏;5、實(shí)現(xiàn)文件保留于讀取使用說(shuō)明:1、一開(kāi)始是白棋先下,假如白棋贏則下一把黑棋先下,假如黑棋贏則還是白棋先下2、某一方勝利后彈出一個(gè)對(duì)話框宣告勝利。點(diǎn)擊確定按鈕即重新開(kāi)始新一回合棋局。3、假如玩家在游戲過(guò)程中希望重新開(kāi)始游戲、暫時(shí)保留棋局或者繼續(xù)以前棋局,則能夠經(jīng)過(guò)菜單欄中”文件”進(jìn)行操作;六、總結(jié)本五子棋設(shè)計(jì)實(shí)現(xiàn)了基本棋局模擬,包含棋盤(pán)初始化,棋局棋子實(shí)物模擬,人人對(duì)戰(zhàn),實(shí)時(shí)判斷勝敗,保留與讀取未完成棋局。經(jīng)過(guò)MFC程序設(shè)計(jì)使得界面友好真是不過(guò)離真正五子棋游戲還有還有距離。程序優(yōu)點(diǎn):程序界面友好,效率較高,經(jīng)過(guò)調(diào)

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論