五子棋游戲程序設(shè)計報告_第1頁
五子棋游戲程序設(shè)計報告_第2頁
五子棋游戲程序設(shè)計報告_第3頁
已閱讀5頁,還剩25頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、計算機(jī)學(xué)院網(wǎng)絡(luò)工程專業(yè)程序設(shè)計綜合課程設(shè)計報告(2011/2012 學(xué)年 第一學(xué)期)學(xué)生姓名:學(xué)生班級:網(wǎng)絡(luò)工學(xué)生學(xué)號:指導(dǎo)教師:2011 12 30 日雙人五子棋目錄 HYPERLINK l _TOC_250022 第一章 課程設(shè)計目的和要求1課程設(shè)計的目的1 HYPERLINK l _TOC_250021 課程設(shè)計的要求1 HYPERLINK l _TOC_250020 第二章 課程設(shè)計任務(wù)內(nèi)容2 HYPERLINK l _TOC_250019 課程設(shè)計的主要內(nèi)容2 HYPERLINK l _TOC_250018 系統(tǒng)設(shè)計原則2 HYPERLINK l _TOC_250017 第三章 設(shè)計

2、說明3 HYPERLINK l _TOC_250016 游戲分析和介紹3 HYPERLINK l _TOC_250015 游戲分析3 HYPERLINK l _TOC_250014 游戲介紹3 HYPERLINK l _TOC_250013 重點模塊說明3 HYPERLINK l _TOC_250012 棋盤界面Showboard()3 HYPERLINK l _TOC_250011 下棋Play()4 HYPERLINK l _TOC_250010 覆蓋棋盤Recoverboard()7 HYPERLINK l _TOC_250009 游戲結(jié)束后初始化棋盤Unitboard()7 HYPER

3、LINK l _TOC_250008 保存棋盤CopyB()8 HYPERLINK l _TOC_250007 函數(shù)清單8接口9 HYPERLINK l _TOC_250006 第四章 軟件使用說明10 HYPERLINK l _TOC_250005 4.1 測試10 HYPERLINK l _TOC_250004 4.2 限制條件13 HYPERLINK l _TOC_250003 第五章 課程設(shè)計心得體會14 HYPERLINK l _TOC_250002 附錄一 程序流程圖15 HYPERLINK l _TOC_250001 附錄二 程序代碼16 HYPERLINK l _TOC_250

4、000 附錄三 參考文獻(xiàn)26第一章 課程設(shè)計目的和要求課程設(shè)計的目1,C想,加深對高級語言基本語言要素和控制結(jié)構(gòu)的理解。2,全面系統(tǒng)的學(xué)習(xí)面向?qū)ο蟪绦蛟O(shè)計的基本概念、基本語法和編程方法,與同學(xué)合作設(shè)計整套程序,并且獨立完成一定工作量的程序設(shè)計.3,掌握程序設(shè)計中的常用算法和格。C 語言的程序技巧,培養(yǎng)良好的程序設(shè)計風(fēng)4,運用所學(xué)的知識了解五子棋游戲的制作結(jié)構(gòu),將所學(xué)的知識運用于實踐中。課程設(shè)計的要求1,與同學(xué)合作設(shè)計、編制、調(diào)試出一款雙人五子棋游戲,并單獨完成其中一定量的函數(shù)模塊。2,要求該游戲具有趣味性和可操作性,能夠正常運行。其中用到C+語言中的(3,雙人五子棋要求能夠進(jìn)入歡迎界面,二人對

5、弈,當(dāng)有五顆同色棋子相連時, 判斷出輸贏等一系列游戲流程。第二章 課程設(shè)計任務(wù)內(nèi)容課程設(shè)計的主要內(nèi)容任務(wù)內(nèi)容就是設(shè)計一款老少皆宜、能夠鍛煉個人策略謀劃能力、較為傳統(tǒng)的16*16,橫、豎、斜線上的五個同色棋子練成不間斷的一排則勝出。系統(tǒng)設(shè)計原則1,系統(tǒng)性。系統(tǒng)作為統(tǒng)一整體而存在,因此,在設(shè)計中,要從系統(tǒng)的角度考慮。系統(tǒng)的代碼要統(tǒng)一,傳遞語言要盡可能一致。2,可靠性??煽啃允侵赶到y(tǒng)抵御外界干擾的能力及外界干擾時的恢復(fù)能力。3,規(guī)范性。游戲的運用以吸引玩家的樂趣為前提,一方面,系統(tǒng)設(shè)計應(yīng)盡量避免不必要的復(fù)雜化,另一方面模塊應(yīng)盡量簡潔,以縮短處理流程。第三章 設(shè)計說明游戲分析和介紹游戲分析置悔棋的相關(guān)

6、模塊。游戲介紹(若是輸入的坐標(biāo)超出棋盤或者該位子已經(jīng)有子則會提示玩家重新輸入坐標(biāo)位子則退出游戲。重點模塊說明Showboard()出現(xiàn)棋盤的界面,對棋盤上每一個點進(jìn)行定位,并在棋盤上顯示相關(guān)的信息。相關(guān)代碼如下:int Showboard()/棋盤界面system(CLS); cout for(int s=1;s=10) cout s-10 ; else cout s ;cout endl; for(i=0;i16;i+)printf(%2d,i+1); for(j=0;j16;j+)cout mapij;if(i=6)cout退出:輸入: 0 0 ;if(i=8)cout步數(shù)(Step):

7、Step;if(i=12)cout制作人:吳憶蕓 余迎香。;if(i=14)cout請輸入棋子的縱坐標(biāo)、橫坐標(biāo)下子! ;cout endl;return(1);Play()在這個小游戲中,黑方先下棋,然后可以輪流進(jìn)行。而在 Play(Interface(),CopyB(), 判斷棋子的位子是否合法 bool legal() bool Overflow(),判斷同色五顆棋子judgewin()相關(guān)代碼如下: int Play()char a03=;char a13=;Showboard();cout 黑方下:endl;while(cout x,cout y)if(x=0&y=0)Recoverb

8、oard(); Interface(); break;if(Overflow() if(legal()continue;x-;y-;if(flag=1)/輸入的是白棋mapxy0=a00;mapxy1=a01; Step+; Showboard(); if(judgewin()cout Switch;if(Switch!=n)unitboard();Play();elsereturn 1;cout 黑方下:endl; flag=0;elsemapxy0=a10;mapxy1=a11; Step+; Showboard(); if(judgewin()cout n 黑方勝利了! Switch;i

9、f(Switch!=n)unitboard();Play();elsereturn 1;cout 綠方下:endl; flag=1;elsecout It already have a chessman!Please Reenter:n此位置已有子!請重新輸入:;Recoverboard()棋盤,從而使棋盤達(dá)到清屏的效果,但是卻能夠保存所下的棋的步數(shù)。相關(guān)代碼如下:void Recoverboard()/覆蓋棋盤,使棋盤恢復(fù)到原始狀態(tài)Step=0; for(i=0;i16;i+)for(j=0;j16;j+)mapij0=copymapij0;mapij1=copymapij1;Unitboa

10、rd()相關(guān)代碼如下:int unitboard()/游戲結(jié)束后界面初始化for(int i=0;i16;i+) for(int j=0;j16;j+)mapij0=copymapij0;mapij1=copymapij1;return 1;CopyB()的保存,若是沒有這個函數(shù),最終將判斷不出勝負(fù)。相關(guān)代碼如下:void CopyB()/調(diào)用字符數(shù)組保存原始棋盤for(i=0;i16;i+) for(j=0;j16;j+)copymapij0=mapij0;copymapij1=mapij1;函數(shù)清單char map16168/繪制 16*16 的棋盤copymap16168/在重新玩一局游

11、戲的時候顯示最初的空棋盤Showboard()/棋盤界面棋盤界面/最初的歡迎界面unitboard()/游戲結(jié)束后棋盤初始化judgewin()/判斷輸贏Play()/下棋Recoverboard()/覆蓋棋盤legal()/判斷棋子是否合法判斷棋子是否在棋盤內(nèi)部函數(shù)接口Int mainInt mainInterface()SystemSystemSystemCopyB()titlecolor()mode()Play()歡迎界面SnowboardRecoverboardOverflowLegalJudgewin圖 3-1第四章 軟件使用說明測試如下所示,是運行過程中的各種界面顯示: 1,如圖所

12、示是五子棋的歡迎界面圖 4-12,選擇“1”時則出現(xiàn)如下棋盤界面圖 4-23,選擇“2”時,出現(xiàn)如下界面圖 4-34,進(jìn)入棋盤界面下棋,當(dāng)該位子已經(jīng)有子的時候,界面顯示如下圖 4-45,進(jìn)入棋盤界面下棋,當(dāng)輸入的坐標(biāo)超出棋盤時,界面顯示如下:圖 4-56,當(dāng)五顆同色的棋子相連的時候,界面顯示如下:圖 4-67,選擇“y”時,回到空棋盤,顯示如下:圖 4-78,當(dāng)選擇“n”時,會出現(xiàn)如下界面:限制條件圖 4-8這個游戲由于比較小,而且是雙人對戰(zhàn),所以沒有設(shè)計悔棋這一步驟。這是一個相當(dāng)大的限制。另外,只能是人人對戰(zhàn),而實現(xiàn)不了人機(jī)對戰(zhàn)。第五章 課程設(shè)計心得體會明白了只有通過自己不斷地動手實踐才能找

13、出不足、找出問題和提高自己的能 識及應(yīng)用方法,為我更好的完成報告付出了辛勤的勞動。附錄一 程序流程圖開始開始ii=1i=2打印棋盤街面黑方下,輸入坐標(biāo)值 ( x,y)判斷棋子位置是否合法畫判斷是否五子連珠黑方獲勝綠方下,輸入坐標(biāo)值 ( x,y)判斷棋子位置是否合法畫判斷是否五子連珠綠方獲勝是否繼續(xù)程序結(jié)束結(jié)束附錄二 程序代碼#include #include #include #include #include #include using namespace std; int x,y,Step=0;bool int i,j; char char map16168=, ;char copyma

14、p16168;/保存棋盤初始狀態(tài),恢復(fù)初始狀態(tài)int Showboard(),Interface(),unitboard(),judgewin(),Play();/界面,游戲結(jié)束后初始化棋盤,判斷輸贏,下棋void Recoverboard(); /覆蓋棋盤bool legal(),Overflow();/判斷位子是否合法,判斷位子是否在棋盤內(nèi)部int Interface()char a;cout nnn ttntt n;cout endl;cout endl;cout 1:TwoPersonGamesendl;cout (人人對戰(zhàn))endl;cout endl;cout2:Exitendl;

15、cout (退出)endl;cout endl;cout endl;cout a;Please select(請選擇):;if(a=1) Play(); elsecout n( coutgetch();return 0;return 1;void Recoverboard()/恢復(fù)到棋盤原始狀態(tài)Step=0;for(i=0;i16;i+) for(j=0;j16;j+)mapij0=copymapij0;mapij1=copymapij1;void CopyB()/調(diào)用字符數(shù)組保存原始棋盤for(i=0;i16;i+) for(j=0;j16;j+)copymapij0=mapij0;copy

16、mapij1=mapij1;int unitboard()/游戲結(jié)束后界面初始化for(int i=0;i16;i+) for(int mapij0=copymapij0;mapij1=copymapij1;return 1;int judgewin()/5 就返回 10int cx,cy,dx,dy;char a,a03=,a13=; if(flag=1)a=a01;elsea=a11;cx=x;cy=y;dx=x;dy=y; while(mapcxcy1=a)cx-;cy-;/向左上檢測if(cx0|cy15|dy15)break;if(dx=(cx+6)|dy=(cy+6) return

17、 1;cx=x;cy=y;dx=x;dy=y; while(mapcxcy1=a)cx-;/向上豎直檢測if(cx15)break;if(dx=(cx+6) return 1;cx=x;cy=y;dx=x;dy=y; while(mapcxcy1=a)cy-;/水平向左檢測if(cy15)break;if(dy=(cy+6) return 1;cx=x;cy=y;dx=x;dy=y; while(mapcxcy1=a)cx+;cy-;/向左下方檢測if(cx15|cy0) break;while(mapdxdy1=a)dx-;dy+;/向右上方檢測if(dx15) break;if(cx=(d

18、x+6)|dy=(cy+6) return 1;return 0;int Showboard()/棋盤界面system(CLS); cout for(int s=1;s=10) cout s-10 ; else cout s ;cout endl; for(i=0;i16;i+)printf(%2d,i+1); for(j=0;j16;j+)cout mapij;if(i=6) if(i=8)cout 退出:輸入: 0 0 ; cout 步數(shù)(Step): if(i=12)cout 制作人:吳憶蕓 余迎香; if(i=14)cout 請輸入棋子的縱坐標(biāo)、橫坐標(biāo)下子 cout 16|x16|y1)cout 此位置不合法!請重新輸入:endl; return 1;elsereturn 0;int Play()char a03=;char a13=; Showboard();cout 黑方下:endl;while(cout x,cout y)if(x=0&y=0)Recoverboard();Interface(); break;if(Overflow() continue; if(legal()x-;y-;if(flag=1)/輸入的是白棋mapxy0=a00;mapxy1=a01; Step+; Showboard(); if(judgewin()cout

溫馨提示

  • 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論