




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、江蘇大學編程及軟件應用實踐課程設計說明書江 蘇 大 學編程及軟件應用實踐課程設計說明書五子棋游戲學生姓名:黃小寶 學 號: 3070302019 年級專業:2007級測控技術與儀器 班 級:測控 0701 班指導老師:張 世 慶學 院:機械工程學院江蘇鎮江提交日期:2009年7月五子棋游戲黃小寶(江蘇大學,中國,鎮江 212013)摘要:該游戲軟件在windows系統為玩家提供傳統五子棋游戲的基本功能,在這簡單的五子棋中,玩家通過鼠標進行兩個人的游戲。游戲中包含姓名輸入、開始/重新開始、悔棋、是否同意和回放等功能,游戲的主戰場為15行15列的棋盤。游戲結束,如果有輸贏,則輸出誰勝,否則,輸出平
2、局的信息框。關鍵詞:五子棋;視窗操作系統;游戲;mfcthe game of gobangxiaobao huang (jiangsu university, china, zhenjiang 212013)abstract: to provide a traditional gobang game, this game software in the windows system, is for players with the basic functions in this simple gobang, the audiences through a mouse for a two-per
3、son game.you can enter your names included in the game, it has a start / restart, hui qi, agree or not and playback functions, the main battlefield of the game for 15 to 15 of the chessboard. the end of the game, if a win or lose, who wins and output, or output tie the information box.keywords: goba
4、ng; windows system; game;mfc 目 錄課程設計任務書1一、課程設計題目:五子棋游戲1二、目的與要求:11、目的:12、基本要求:13、創新要求:14、寫出設計說明書1三、設計方法和基本原理:1四、設計中涉及到的重要內容:1五、程序設計和調試:2六、答辯與評分標準:21 前言32 需求分析32.1系統概述32.1.1概述32.2系統運行環境32.2.1運行環境32.3功能需求描述32.3.1功能需求33 總體設計43.1開發與設計的總體思想43.1.1屏幕的組成43.1.2形狀的組成43.1.3形狀的統一44 概要設計54.1系統流程圖54.2 系統功能模塊55 詳細設
5、計65.1.界面的設計65.2游戲中棋盤的形成75.3游戲下子功能代碼85.4判斷功能代碼105.5設置項目中的功能代碼125.6悔棋功能代碼125.7回放功能代碼146 測試分析157 心得體會15參考文獻16致 謝1716 課程設計任務書一、課程設計題目:五子棋游戲二、目的與要求:1、目的:(1)要求學生達到熟練掌握c+語言的基本知識和c+調試技能;(2)基本掌握面向對象程序設計的基本思路和方法;(3)能夠利用所學的基本知識和技能,解決簡單的面向對象程序設計問題。(4)培養學生綜合利用c語言進行程序設計的能力,主要是培養學生利用系統提供的標準圖形函數進行創新設計。2、基本要求:(1)在開始
6、編寫程序以前,要完成對系統的分析,畫出程序的流程框圖。(2)要求用c+類的思想來完成程序的設計。(3)要求的程序中至少要定義兩個類(例如:坐標position類,棋子chess類等),類中要有多個屬性和方法。(4)完成的程序界面要美觀,能夠完成五子棋的基本游戲功能(兩人對戰)。3、創新要求:在基本要求達到后,進行創新設計,完善與增加游戲的功能,例如悔棋功能。4、寫出設計說明書按照設計過程寫出設計說明書。三、設計方法和基本原理:1、創建棋盤大小(可任意),并且要保存棋盤上各個點的位置;2、創建棋子類及其屬性和方法;3、從盤鍵分別獲取兩個用戶的輸入,根據用戶的身份及輸入的位置,調用棋子類的相應方法
7、,完成棋子的走動;4、輸贏的判斷;5、游戲結束。四、設計中涉及到的重要內容:1、對話框應用程序的編寫方法及其相關函數;2、繪圖工具的使用方法;五、程序設計和調試:六、答辯與評分標準:1、完成基本功能:40分;2、設計報告及使用說明書:30分;3、設置錯誤或者按照要求改變結果:15分;4、回答問題:15分。1 前言隨著社會發展,人類的生產生活越來越離不開信息。誰擁有了更多更有效的信息,誰就將在競爭中處于有利地位。信息產業正在成為一個國家的支柱。只有擁有了先進的數據庫技術,才能有效地管理好浩如煙海的數據,并從中提取出對自己有用的信息來加以利用。作為計算機應用的一部分,使用計算機對信息進行管理,具有
8、手工管理所無法比擬的優點。例如:檢索迅速、查找方便、可靠性高、存儲量大、保密性好、壽命長、成本低等。這些優點能夠極大地提高管理的效率,也是正規化管理與世界接軌的重要條件。在下面的各章中我們將以開發一個五子棋游戲為例,談談其開發過程和所涉及到的問題及解決方法。2 需求分析2.1系統概述2.1.1概述該游戲軟件在windows系統為玩家提供五子棋游戲兩人對戰的基本功能,玩家可以通過鼠標在棋盤的相應位置下子,一方為白色,另一方為黑色,先下的為黑子(主場)。游戲過程中,只要有一人先連成五個棋子,不論橫、豎或斜,就會在屏幕上顯示是誰贏了比賽,也可以是平局收場,從而可以進行下一場比賽。在比賽過程中,如果一
9、方需要悔棋,先得通過對手的同意才可以。在右下方,有黑子和白子,且還有“0”和“1”,“1”表示輪到此色子下了。2.2系統運行環境2.2.1運行環境(1)硬件環境。本系統適用于那種inter386以上計算機,內存容量為128m,應配備鍵盤、鼠標、顯示器等外部設備。(2)軟件環境。本系統的設計采用visual c+6.0編寫。在windows xp sp2環境下測試通過。(3)本游戲軟件在windows平臺下都可以運行。2.3功能需求描述2.3.1功能需求這是一次新的嘗試,也是一次比較成功的設計,其算法與程序結構足以讓人滿意。這個游戲,不僅可以滿足游戲愛好者對游戲的要求,同時我們增加了美觀因素,讓
10、游戲有一個比較美觀的界面,滿足我們游戲愛好者的視覺要求,回放效果更是讓玩家欣賞自己是如何贏得或輸的。3 總體設計3.1開發與設計的總體思想3.1.1屏幕的組成一個游戲一定要有一個界面供游戲者對游戲控制。這個界面中要包含讓游戲者更加清楚游戲狀態的信息,比如,白方要下子時,必須要先看一看所有黑子的排列情況,決定是防守還是進攻,這關系著玩家要如何放置自己的棋子,讓整體有個更加的布局,有利于游戲的進行。屏幕由15行15列的網格組成;其中行的眉頭上標有字母a、b、co;列的方向標有數字1、2、315。菜單欄中的組成部分:3.1.2形狀的組成每一種形狀都是由五個棋子組成,比如或 由五個棋子排列而成。3.1
11、.3形狀的統一妻子的排列,如:等共有8種形狀(黑白的形狀歸為不同的形狀)。如圖形狀:黑棋的四種情況: 圖3.1白棋的四種情況: 圖3.24 概要設計4.1系統流程圖系統流程圖是對系統的大致流程進行描述,本游戲的系統流程圖如下:游戲結束登陸輸入玩家姓名選擇誰先下子(繼續)下子判斷是否連成五子yn悔棋對手是否同意請求者退回一步重下反對者繼續下子yn回放功能圖4.1 功能模塊 圖4.1 系統流程圖 4.2 系統功能模塊系統功能模塊是對系統的大致功能進行描述,本游戲的系統功能模塊如下:五子棋游戲功能輸入雙方姓名功能悔棋功能是否同意悔棋功能回放功能輸贏輸出圖4.2 系統功能模塊5 詳細設計根據上面所介紹
12、的本系統的各個模塊及其需要實現的功能,下面詳細設計如下:5.1.界面的設計程序界面程序在啟動運行時,系統會通過調用視圖類中的重繪圖函數對界面進行界面的初始化。使程序界面更加友好,在使用上給用戶一種清新怡然的感覺。5.2游戲中棋盤的形成實現此功能相關代碼如下:void cck19view:ondraw(cdc* pdc)cck19doc* pdoc = getdocument();assert_valid(pdoc);/ todo: add draw code for native data here cbitmap bitmap;/背景棋盤bitmap.loadbitmap(idb_bitma
13、p1);cdc mem,mem1,mem2,qzh, qzb;mem.createcompatibledc(pdc);mem.selectobject(&bitmap);pdc-bitblt(0,0,600,400,&mem,0,0,srccopy); cbitmap bitmap5;/死騎bitmap5.loadbitmap(idb_bitmap5);mem2.createcompatibledc(pdc);mem2.selectobject(&bitmap5);pdc-bitblt(350,0,600,352,&mem2,0,0,srccopy); cbitmap bitmap4;/五子棋
14、bitmap4.loadbitmap(idb_bitmap4);mem1.createcompatibledc(pdc);mem1.selectobject(&bitmap4);pdc-bitblt(420,285,600,400,&mem1,0,0,srccopy); cbitmap bitmap2;/黑子bitmap2.loadbitmap(idb_bitmap2);qzh.createcompatibledc(pdc);qzh.selectobject(&bitmap2); cbitmap bitmap3;/白子bitmap3.loadbitmap(idb_bitmap3);qzb.cr
15、eatecompatibledc(pdc);qzb.selectobject(&bitmap3);/以下是顯示棋子的代碼 crect rect;/矩形區域getclientrect(&rect);/獲得窗口矩形區域pdc-bitblt(0,0,rect.width(),rect.height(),&qp,0,0,srccopy);/繪圖for(int i=0;i15;i+)for(int j=0;jbitblt(18+i*24,18+j*24,20,20,&qzh,0,0,srccopy);else if(qzij=2)pdc-bitblt(18+i*24,18+j*24,20,20,&qzb
16、,0,0,srccopy);5.3游戲下子功能代碼int qz1515;/棋子的二維數組實現此功能相關代碼如下:void cck19view:onlbuttondown(uint nflags, cpoint point) / todo: add your message handler code here and/or call defaultint i=(point.x-10)/24;int j=(point.y-10)/24;if(i15&jgetdc(); position p(i,j,qzij);/position類記錄各棋子的位置和值 /int hs,ss,ps,ns;是判斷點(i
17、,j)的橫、豎、撇和捺有無五個子hs=p.gethorizontal(); ss=p.getvertical(); ps=p.getrightslanting(); ns=p.getleftslanting(); if(hs=5|ss=5|ps=5|ns=5)if(qzij=1)messagebox( 你真是太牛了!n 恭喜你,黑子贏了!n 游戲結束,請重新開始。);if(qzij=2) messagebox( 你真是太牛了!n 恭喜你,白子贏了!n 游戲結束,請重新開始。);if(count=225)&(hs!=5)&(ss!=5)&(ps!=5)&(ns!=5)messagebox(你倆都
18、很棒!n 平手!,請握手言和,mb_ok);cview:onlbuttondown(nflags, point);5.4判斷功能代碼此代碼用來判斷當某一方下完子后是否有練成五個子的可能性。自己創建一個類并判斷class position /坐標position類public:position(int m,int n,int k)x=m;y=n;f=k;int gethorizontal();/獲得水平連續棋子的個數int getvertical();/獲得垂直連續棋子的個數int getrightslanting();/獲得右斜連續棋子的個數int getleftslanting();/獲得左
19、斜連續棋子的個數private:int f;/記錄棋子的顏色,1為黑子,2為白子 int x;/行數int y;/列數int hsy;/水平向右int hsz;/水平向左 int sss;/豎直向上int ssx;/豎直向下int ys;/右上int zx;/左下int yx;/右下int zs;/左上;實現此功能相關代碼如下:int position:gethorizontal()/水平方向hsy=hsz=0; for(int i=1;y-i=0;i+) if(qzxy-i!=f) break;hsz=i-1; for(i=1;y+i=0)&(y+i=14);i+) if(qzx-iy+i!
20、=f) break;ys=i-1; for(i=1;(x+i=0);i+) if(qzx+iy-i!=f) break;zx=i-1;return (ys+zx+1);int position:getrightslanting()/右斜方向yx=zs=0; for(int i=1;(x-i=0)&(y-i=0);i+) if(qzx-iy-i!=f) break;zs=i-1; for(i=1;(x+i=14)&(y+i=0;i+) if(qzx-iy!=f) break;sss=i-1; for(i=1;y+i=14;i+) if(qzx+iy!=f) break;ssx=i-1;retur
21、n (sss+ssx+1);5.5設置項目中的功能代碼此功能用來在游戲結束后,用來“開始/重新開始”。并且一次性消去棋盤上所有的棋子。實現此功能相關代碼如下:void cck19view:onstart() / todo: add your command handler code herefor(int i=0;i15;i+)for(int j=0;j15;j+)qzij=0;ondraw(getdc();5.6悔棋功能代碼此功能是體現一種人性化,當某一方玩家覺得此步走錯了,向對方提出悔棋請求。當對方同意后,棋盤上會自動消除玩家剛下的一步棋。程序的具體實現部分如程序清單如下所示。void c
22、ck19view:onblackagree() /黑方同意/ todo: add your command handler code here for(int i=0;i15;i+)for(int j=0;j15;j+)if(jlij=count)qzij=0;count-; ondraw(getdc();void cck19view:onblacknoagree() /黑方不同意/ todo: add your command handler code here messagebox( sooryn我不同意!);void cck19view:onblackstone() /黑方提出悔棋請求/
23、 todo: add your command handler code heremessagebox(黑棋提出悔棋請求!n 白棋同意嗎?);void cck19view:onwhiteagree() /白方同意/ todo: add your command handler code herefor(int i=0;i15;i+)for(int j=0;j15;j+)if(jlij=count)qzij=0; count-; ondraw(getdc();void cck19view:onwhitenoagree() /白方不同意/ todo: add your command handle
24、r code heremessagebox(不好意思啦!n 不同意!);void cck19view:onwhitestone() /白方提出悔棋請求/ todo: add your command handler code heremessagebox(白棋提出悔棋請求!n 黑氣同意嗎?);5.7回放功能代碼為了進一步觀察自己的得失和對手的技術,這一功能是一個比較好的平臺,具體代碼如下:class chess/棋子chess類public:chess()i=0;j=0;k=1;void remember();/記住棋子的位置及次序private:int i,j,k;void chess:remember() for(k=1;k=count;k+) for(i=0;i15;i+) for(j=0;j15;j+) if(jlij=k) cpk.x=i; cpk.y=j;
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 保存劑與穩定劑在藝術品中的應用考核試卷
- 印刷設備維護工具維護計劃制定考核試卷
- 公共設施安全設施維護考核試卷
- 印刷技術在圖書裝幀中的特殊印刷工藝應用考核試卷
- 兔飼養與森林資源合理利用考核試卷
- 智能環保監測技術考核試卷
- 品牌價值評估在出版業的運用考核試卷
- 古籍收藏與歷史研究考核試卷
- 部編六年級語文上冊全冊試卷(含答案)
- 2025年中國IP電話計費軟件數據監測研究報告
- 呼和浩特市國企招聘考試試題及答案2025
- 金融計量學知到智慧樹章節測試課后答案2024年秋山東管理學院
- 機械制圖-形成性任務2-國開(ZJ)-參考資料
- 糖葫蘆課件教學課件
- 華南理工大學《機器學習》2023-2024學年期末試卷
- 氣胸完整版本
- 十七個崗位安全操作規程手冊
- 大學世界現代史世界當代史名詞解釋主觀題復習資料
- 貴州省貴陽市云巖區2023-2024學年四年級下學期期末語文試題
- QCT1177-2022汽車空調用冷凝器
- 2024年單獨考試招生嬰幼兒托育與管理專業考試題庫(含答案)
評論
0/150
提交評論