版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 目錄</b></p><p> ?。赫n程設(shè)計目的和要求·······················2</p><
2、p> 1.1 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計的目的 ··························2</p><p> 1.2 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計實現(xiàn)的要
3、求······················2</p><p> ?。赫n程設(shè)計任務(wù)內(nèi)容·········
4、················3</p><p> 2.1 五子棋對弈系統(tǒng)···············
5、;····················3</p><p> ?。涸敿?xì)設(shè)計說明···········
6、183;·················4</p><p> 3.1 功能設(shè)計·············
7、83;··························4</p><p> 3.2五子棋對弈系統(tǒng)流程圖····
8、··························4</p><p> 3.3 軟件中實現(xiàn)各項功能的函數(shù)與程序代碼···&
9、#183;····5</p><p> ?。撼绦蜻\行環(huán)境說明··························10
10、</p><p> 4.1 程序運行環(huán)境說明及出現(xiàn)的問題·····················10</p><p> 4.2 運行結(jié)果···
11、····································
12、3;·10</p><p> 第五章:課程設(shè)計心得與體會····················14</p><p> 附錄····
13、83;···································15</
14、p><p> 源程序:·································
15、····16</p><p><b> 五子棋</b></p><p><b> 課程設(shè)計目的和要求</b></p><p> 1.1 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計的目的 </p><p> 進(jìn)一步培養(yǎng)結(jié)構(gòu)化程序設(shè)計的思想,加深對高級系統(tǒng)語言基本語言要素和控制結(jié)構(gòu)
16、的理解,針對數(shù)據(jù)結(jié)構(gòu)中的重點和難點內(nèi)容進(jìn)行訓(xùn)練,獨立完成有一定工作量的程序設(shè)計任務(wù),同時強調(diào)好的程序設(shè)計風(fēng)格。</p><p> 此課程設(shè)計著眼于知識的運用,把平常學(xué)的知識運用到課程實踐中來,本身就是考察我們知識運用能力。要求熟悉運用一些編程軟件,對我們所學(xué)的理論知識進(jìn)一步的深化。</p><p> 1.2 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計實現(xiàn)的要求</p><p> 使用
17、C++語言編寫一個基于控制臺的簡單程序,使學(xué)生掌握簡單的程序設(shè)計技巧。同時設(shè)計一個簡單的五子棋對弈系統(tǒng),可以實現(xiàn)五子棋的基本功能,是一款娛樂用的小型程序。</p><p><b> 課程設(shè)計任務(wù)內(nèi)容</b></p><p> 2.1五子棋對弈系統(tǒng) </p><p> 設(shè)計一個五子棋系統(tǒng)程序,實現(xiàn)對五子棋進(jìn)行運行。</p>
18、<p> 基本要求:五子棋是有兩個人在一盤棋上進(jìn)行對抗的競技活動。在對局開始時,先由用戶選擇哪方開局,先開局一方將一枚棋子落在一點上,然后由另一方在對方棋周圍交叉點上落子,如此輪流落子,知道某一方首先在棋盤的直線、橫線或斜線上形成連續(xù)的五子則該方程就算獲勝。</p><p> 此時算法結(jié)束,當(dāng)有任何一方退時出,都可在算法中實現(xiàn)。</p><p> 第三章 詳細(xì)設(shè)計說明&
19、lt;/p><p><b> 3.1 功能設(shè)計</b></p><p> (1)由兩個玩家分別下棋,當(dāng)某一玩家五子相連,則贏。</p><p> ?。?)界面要求:初始狀態(tài)——顯示棋盤,并顯示兩個玩家的操作鍵及初始玩家名稱;游戲進(jìn)行狀態(tài)——動態(tài)顯示棋盤,不同玩家的棋子用不同符號顯示,屏幕上顯示當(dāng)前玩家號,結(jié)束時顯示贏家名稱。</p>
20、;<p> 3.2五子棋對弈系統(tǒng)流程圖</p><p><b> 是</b></p><p><b> 否</b></p><p><b> 是</b></p><p> 否
21、 </p><p><b> 否</b></p><p><b> 是</b></p><p><b> 是</b></p><p> 圖 3-1程序總體圖</p><p><b>
22、 圖3-2算法流程圖</b></p><p> 3.3 軟件中實現(xiàn)各項功能的函數(shù)與程序代碼</p><p> 主要函數(shù)、結(jié)構(gòu)體和鏈表</p><p> Int a; //紀(jì)錄坐標(biāo)位置</p><p> Int b; //紀(jì)錄坐標(biāo)位置</p><p>
23、Char achBoard[i][j],//用于在【a】【b】處落子</p><p> chSort;; //棋子的類別</p><p> Int nWin ////贏棋的次數(shù)</p><p><b> 類的使用:</b></p><p> class CGobang<
24、/p><p><b> {private:</b></p><p> char chSort; //棋子的類別</p><p> int nWin; //贏棋的次數(shù)</p><p> int nLose;
25、 //輸棋的次數(shù)</p><p> static int nDraw; //平局次數(shù)</p><p><b> public:</b></p><p> static char achBoard[19][19]; //棋盤</p>&
26、lt;p> static int nSize; //棋盤的尺寸nSize*nSize</p><p> CGobang(char chsort) //構(gòu)造函數(shù),決定一方棋子的類別</p><p><b> {</b></p><p> chSort=chsort;&l
27、t;/p><p> nWin=nLose=nDraw=0;</p><p><b> }</b></p><p> friend void huiqi(); //悔棋</p><p> static void savefile(); //將棋盤保存至文件</p&
28、gt;<p> static void readBoard(); //從文件中讀入棋盤</p><p> void continute(); //接著上次的游戲玩</p><p> void PlayTurn(void); //走一步棋</p><p> int Judg
29、e(); //判斷是否連成五子,是則返回1</p><p> void Win(void); //贏棋</p><p> void Lose(void); //輸棋</p><p> static void Draw(void); //平局&
30、lt;/p><p> void PrintInfo(void); //打印總體情況</p><p> static void PrintBoard(void); //輸出棋盤</p><p> static int GetFull(void); //判斷棋盤是否一滿</p><p> static vo
31、id InitialBoard(void); //初始化棋盤</p><p><b> };}</b></p><p> 本次程序設(shè)計主要設(shè)計了五個模塊</p><p><b> 1.繪制棋盤模塊</b></p><p> 當(dāng)游戲初始化時,和每當(dāng)落子消息觸發(fā)時,都需要對棋盤進(jìn)行重繪。這里
32、用特殊符號“o”“@”分別來描繪白子、黑子。這個函數(shù)主要完成了以下工作:</p><p> ●裝載棋盤二位數(shù)組并進(jìn)行繪制。</p><p> ●根據(jù)棋盤數(shù)據(jù)繪制棋子。</p><p> ●繪制最后落子指示規(guī)矩。</p><p><b> 圖3-3</b></p><p> 2.鍵盤操作控
33、制模塊</p><p> 此模塊主要用于處理與用戶的交互過程。即完成落子判斷過程。</p><p> 此模塊主要完成以下工作:</p><p> 判斷是否在棋盤內(nèi)按落子鍵,和移動是否超出棋盤范圍。</p><p> 判斷落子點是否已有棋子。</p><p><b> 3.判斷勝負(fù)模塊</b&g
34、t;</p><p> 這是游戲中一個極其重要的算法,用來判斷當(dāng)前棋盤的形勢是哪一方獲勝。五子棋的勝負(fù),在于判斷棋盤上是否有一個點,從這個點開始的右、下、右下、左下四個方向是否有連續(xù)的五個同色棋子出現(xiàn),如圖:</p><p> 圖 3-5判斷勝負(fù)方向</p><p> 這個算法是本系統(tǒng)里的nWin成員函數(shù)。需要它接受一個棋子顏色的參數(shù),然后返回一個布爾值,這個
35、值指示是否勝利。</p><p> 1).橫向判斷流程圖“——”</p><p><b> 圖3-6</b></p><p> 2).豎向判斷流程圖“|”</p><p> 3).從左到右斜方向“\”</p><p><b> 圖3-8</b></p>
36、<p> 4) .從右到左斜方向“/”</p><p><b> 圖3-9</b></p><p><b> 圖3-9</b></p><p><b> 4.重置棋盤模塊</b></p><p> 在每局游戲開始的時候都需要調(diào)用這個函數(shù)InitialBoa
37、rd(void)將棋盤初始化,也就是棋盤的初始化工作。在這個函數(shù)中,主要發(fā)生了這么幾件事情:</p><p> ●將achBoard[N][N]中每一個落子位都置為無子狀態(tài)(0)。</p><p> ●默認(rèn)的先手順序是黑子先手,置player=1。</p><p><b> 5.游戲結(jié)束模塊</b></p><p>
38、; 這一模塊主要用于釋放內(nèi)存,用輸出流語句輸出結(jié)束信息,并控制循環(huán)退出程序。</p><p> 第四章 程序運行環(huán)境說明</p><p> 4.1 程序運行環(huán)境說明及出現(xiàn)的問題</p><p> 該程序可以實現(xiàn)對學(xué)生信息的錄入和顯示,可以采用Dev-c或者Visual C++</p><p> 運行,可以實現(xiàn)簡單的界面化,使程序
39、方便使用和修改。</p><p><b> 4.2 運行結(jié)果</b></p><p><b> 軟件使用結(jié)果</b></p><p> 1.進(jìn)入游戲→主界面</p><p><b> 圖4-1</b></p><p> 2.點擊1→開始游戲&
40、lt;/p><p><b> 圖4-2</b></p><p> 3.繼續(xù)點擊1或2→游戲過程中</p><p><b> 圖4-3</b></p><p><b> 4.判斷勝負(fù)</b></p><p><b> 圖4-4</b&
41、gt;</p><p> 5.在主界面中點擊0→退出游戲</p><p><b> 圖4-6</b></p><p> 第五章 課程設(shè)計心得與體會</p><p> 課程設(shè)計是培養(yǎng)學(xué)生綜合運用所學(xué)知識 ,發(fā)現(xiàn),提出,分析和解決實際問題,鍛煉實踐能力的重要環(huán)節(jié),是對我們的實際工作能力的具體訓(xùn)練和考察過程.隨著科學(xué)
42、技術(shù)發(fā)展的日新月異,當(dāng)今計算機(jī)應(yīng)用在生活中可以說得是無處不在。因此作為二十一世紀(jì)的大學(xué)來說掌握程序開發(fā)技術(shù)是十分重要的,而C++語言又是最常見,功能最強大的一種高級語言,因此做好C++語言課程設(shè)計是十分必要的。</p><p> 通過幾周的課程設(shè)計使我們懂得了理論與實際相結(jié)合是很重要的,只有理論知識是遠(yuǎn)遠(yuǎn)不夠的,只有把所學(xué)的理論知識與實踐相結(jié)合起來,從理論中得出結(jié)論,才能真正為社會服務(wù),從而提高自己的實際動手能
43、力和獨立思考的能力。在設(shè)計的過程中遇到問題,可以說得是困難重重,這畢竟第一次做這么長的程序設(shè)計,難免會遇到過各種各樣的問題,同時在設(shè)計的過程中發(fā)現(xiàn)了自己的不足之處,對一些前面學(xué)過的知識理解得不夠深刻,掌握得不夠牢固,通過這次課程設(shè)計之后,我們把前面所學(xué)過的知識又重新溫故了一遍。</p><p> 我做的是五子棋設(shè)計,雖然是很簡單的一個小的程序,但對我來說卻是一個很大的困難。更加是第一次做課程設(shè)計,所以做了一個下
44、午卻絲毫沒有進(jìn)展,最主要是不知從何開始,這個時候才知道上課老師們不厭其煩的教導(dǎo)是多么的寶貴,這個時候才后悔上課的時候沒有認(rèn)真的聽講??墒乾F(xiàn)在一切都晚了,還好時間還算是充裕,只好拿出書本重新復(fù)習(xí)一下。</p><p> 開始的時候真的感覺編程是一件很無聊的事情,不過當(dāng)一個程序運行成功的時候那種喜悅是無法言語的,那種成就感是無法比擬的。又經(jīng)過幾天的努力,終于把程序完成了,盡管程序還是有很多功能上的欠缺和漏洞,可我還
45、是很高興的。無論如何是自己的勞動成果,是自己經(jīng)過努力得到的成績,同時也是學(xué)習(xí)C++語言的一次實踐作業(yè),自己進(jìn)步的證明。</p><p> 在課程設(shè)計過程中,收獲知識,提高能力的同時,我也學(xué)到了很多人生的哲理,懂得怎么樣去制定計劃,怎么樣去實現(xiàn)這個計劃,并掌握了在執(zhí)行過程中怎么樣去克服心理上的不良情緒。因此在以后的生活和學(xué)習(xí)的過程中,我一定會把課程設(shè)計的精神帶到生活中,不畏艱難,勇往直前!</p>
46、<p><b> 附錄1:參考文獻(xiàn)</b></p><p> 1、譚浩強 著.C++程序設(shè)計教程.清華大學(xué)出版社</p><p> 2、陳維興 林小茶 編著.C++面向?qū)ο蟪绦蛟O(shè)計.中國鐵道出版社</p><p> 3、田淑清, C語言程序設(shè)計,北京:高等教育出版社,2006年1月</p><p>
47、4、David J.Kruglinski,Scot Wingo,George Shepherd,Visual C++6.0技術(shù)內(nèi)幕(第五版),希望圖書室譯,北京:北京希望電子出版社,2001 年1月</p><p><b> 源程序:</b></p><p> #include <iostream></p><p> #inc
48、lude <string></p><p> #include <fstream></p><p> #include <iomanip></p><p> int a[90],b[90]; //定義全局?jǐn)?shù)組</p><p><
49、b> int k=0;</b></p><p> using namespace std;</p><p> class CGobang //棋子類</p><p><b> {</b></p><p><b>
50、 private:</b></p><p> char chSort; //棋子的類別</p><p> int nWin; //贏棋的次數(shù)</p><p> int nLose; //輸棋的次
51、數(shù)</p><p> static int nDraw; //平局次數(shù)</p><p><b> public:</b></p><p> static char achBoard[19][19]; //棋盤</p><p> static int nSize;
52、 //棋盤的尺寸nSize*nSize</p><p> CGobang(char chsort) //構(gòu)造函數(shù),決定一方棋子的類別</p><p><b> {</b></p><p> chSort=chsort;</p><p> nWin=n
53、Lose=nDraw=0;</p><p><b> }</b></p><p> friend void huiqi(); //悔棋</p><p> static void savefile(); //將棋盤保存至文件</p><p> static void
54、 readBoard(); //從文件中讀入棋盤</p><p> void continute(); //接著上次的游戲玩</p><p> void PlayTurn(void); //走一步棋</p><p> int Judge(); //
55、判斷是否連成五子,是則返回1</p><p> void Win(void); //贏棋</p><p> void Lose(void); //輸棋</p><p> static void Draw(void); //平局</p><p> void
56、PrintInfo(void); //打印總體情況</p><p> static void PrintBoard(void); //輸出棋盤</p><p> static int GetFull(void); //判斷棋盤是否一滿</p><p> static void InitialBoard(void); //
57、初始化棋盤</p><p><b> };</b></p><p> char CGobang::achBoard[19][19];</p><p> int CGobang::nSize=0;</p><p> int CGobang::nDraw=0;</p><p> void C
58、Gobang::Draw()</p><p><b> {</b></p><p> cout<<"\n\n\t\t平局!\n\n";</p><p><b> nDraw++;</b></p><p><b> }</b></p&
59、gt;<p> void CGobang::InitialBoard() //初始化棋盤</p><p><b> {</b></p><p> for(int i=0;i<nSize;i++)</p><p> for(int j=0;j<nSize;j++)
60、</p><p> achBoard[i][j]=' ';</p><p><b> } </b></p><p> void CGobang::PrintBoard() //輸出棋盤</p><p><b> {</b>
61、;</p><p><b> int i,j;</b></p><p> cout<<endl;</p><p> cout<<setw(5)<<endl;</p><p> for(i=1;i<=nSize;i++)</p><p><b&
62、gt; {</b></p><p> cout<<setw(4)<<i;</p><p><b> }</b></p><p> cout<<endl;</p><p> for(i=0;i<nSize;i++)</p><p>&l
63、t;b> {</b></p><p> cout<<setw(3)<<endl;</p><p> cout<<i+1;</p><p> for(j=0;j<nSize;j++)</p><p> cout<<achBoard[i][j]<<&qu
64、ot; | ";</p><p> cout<<endl;</p><p><b> }</b></p><p><b> }</b></p><p> int CGobang::GetFull() //判斷棋盤
65、是否一滿,若是返回1</p><p><b> {</b></p><p> for(int i=0;i<nSize;i++)</p><p> for(int j=0;j<nSize;j++)</p><p> if(achBoard[i][j]==' ')</p>&
66、lt;p><b> return 0;</b></p><p><b> return 1;</b></p><p><b> }</b></p><p> void CGobang::Win() //贏棋<
67、;/p><p><b> {</b></p><p> cout<<"\n\n\t\t"<<chSort<<"方獲勝!\n\n";</p><p><b> nWin++;</b></p><p><b> }
68、</b></p><p> void CGobang::savefile() //將棋盤保存至文件</p><p><b> {</b></p><p> ofstream outfile("C++.txt",ios::out);</p
69、><p> if(!outfile)</p><p> {cerr<<"open file error!"<<endl;</p><p><b> exit(1);</b></p><p><b> }</b></p><p>
70、 for(int i=0;i<nSize;i++)</p><p> for(int j=0;j<nSize;j++)</p><p> outfile.write((char *) &achBoard[i][j],sizeof(achBoard[i][j]));</p><p> outfile.close();</p>
71、<p><b> }</b></p><p> void CGobang::Lose() //輸棋</p><p><b> {</b></p><p><b> nLose++;</b></p>
72、<p><b> }</b></p><p> void CGobang::PlayTurn(void) //走一步棋</p><p><b> {</b></p><p> int nRow,nCol;</p><p&
73、gt; char choice1,choice2;</p><p><b> do</b></p><p><b> {</b></p><p> cout<<"\t現(xiàn)在該"<<chSort<<"方下棋,請輸入棋盤坐標(biāo)(x,y):";<
74、;/p><p> cin>>nRow>>nCol;</p><p> if(nRow>nSize||nCol>nSize)</p><p> cout<<"\t輸入的坐標(biāo)越界,x與y的范圍應(yīng)小于等于"<<nSize<<",請重新輸入\n";</p&
75、gt;<p><b> else</b></p><p> if(nRow>0&&nCol>0&&achBoard[nRow-1][nCol-1]!=' ')</p><p> cout<<"\t棋盤("<<nRow<<",
76、"<<nCol<<")處已有棋子,請重新輸入\n"; </p><p> else if(nRow==-1)</p><p><b> huiqi();</b></p><p> else if(nRow==0&&nCol==0)</p><p&g
77、t;<b> {</b></p><p> cout<<"\t確認(rèn)你想結(jié)束游戲嗎(y,n)?";</p><p> cin.get();</p><p> cin>>choice1;</p><p> if(choice1=='y'||choice1=
78、='Y')</p><p><b> {</b></p><p> cout<<"\t是否保存(y,n)?:";</p><p> cin.get();</p><p> cin>>choice2;</p><p> if(ch
79、oice2=='y'||choice2=='Y')</p><p><b> {</b></p><p> CGobang::savefile();</p><p> cout<<"\t保存成功,歡迎下次再玩!\n";</p><p><b>
80、; exit(1);</b></p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p> cout<<"\t游戲結(jié)束,歡迎再次使用五子棋游戲!";
81、</p><p> cout<<endl;</p><p><b> exit(0);</b></p><p><b> }</b></p><p><b> }</b></p><p><b> }</b>&
82、lt;/p><p><b> else {</b></p><p> achBoard[nRow-1][nCol-1]=chSort;</p><p> a[k]=nRow-1;</p><p> b[k]=nCol-1;</p><p><b> k++;</b>&l
83、t;/p><p><b> break;</b></p><p><b> }</b></p><p> }while(1);</p><p><b> }</b></p><p> int CGobang::Judge()
84、 //判斷是否連成五子,是則返回1</p><p><b> {</b></p><p><b> int i,j;</b></p><p> for(i=0;i<nSize;i++)</p><p> for(j=0;j<nSize;j++)</
85、p><p><b> {</b></p><p> if(achBoard[i][j]==chSort)</p><p><b> {</b></p><p> if(j+4<nSize)</p><p><b> {</b></p&g
86、t;<p> if(achBoard[i][j+1]==chSort&&achBoard[i][j+2]==chSort&&achBoard[i][j+3]==chSort&&achBoard[i][j+4]==chSort)</p><p><b> return 1;</b></p><p><
87、;b> }</b></p><p> if(i+4<nSize)</p><p><b> {</b></p><p> if(achBoard[i+1][j]==chSort&&achBoard[i+2][j]==chSort&&achBoard[i+3][j]==chSort&
88、amp;&achBoard[i+4][j]==chSort)</p><p><b> return 1;</b></p><p><b> }</b></p><p> if(i+4<nSize&&j+4<nSize)</p><p><b>
89、 {</b></p><p> if(achBoard[i+1][j+1]==chSort&&achBoard[i+2][j+2]==chSort&&achBoard[i+3][j+3]==chSort&&achBoard[i+4][j+4]==chSort)</p><p><b> return 1;</b
90、></p><p><b> }</b></p><p> if(i-4>0&&j+4<nSize)</p><p><b> {</b></p><p> if(achBoard[i-1][j+1]==chSort&&achBoard[i-
91、2][j+2]==chSort&&achBoard[i-3][j+3]==chSort&&achBoard[i-4][j+4]==chSort)</p><p><b> return 1;</b></p><p><b> }</b></p><p><b> }</
92、b></p><p><b> }</b></p><p><b> return 0;</b></p><p><b> }</b></p><p> void CGobang::PrintInfo(void)
93、 //打印總體情況</p><p><b> {</b></p><p> cout<<"Size"<<chSort<<"方共計贏"<<nWin<<"局,輸"<<nLose<<"局,平"
94、;<<nDraw<<"局。"<<endl;</p><p><b> }</b></p><p> void CGobang::readBoard() //以二進(jìn)制形式從文件中讀出棋盤</p><p><b> {</
95、b></p><p> ifstream infile("C++.txt",ios::in);</p><p> if(!infile)</p><p><b> {</b></p><p> cerr<<"open file eror!"<<
96、endl;</p><p><b> exit(1);</b></p><p><b> }</b></p><p><b> else </b></p><p><b> { </b></p><p> for(int
97、i=0;i<nSize;i++)</p><p> for(int j=0;j<nSize;j++)</p><p> infile.read((char *) &achBoard[i][j],sizeof(achBoard[i][j]));</p><p> infile.close();</p><p><
98、b> }</b></p><p><b> }</b></p><p> void huiqi() //悔棋 </p><p><b> {</b></p><p><b&
99、gt; k--;</b></p><p> CGobang::achBoard[a[k]][b[k]]=' ';</p><p><b> k--;</b></p><p> CGobang::achBoard[a[k]][b[k]]=' ';</p><p> CG
100、obang::PrintBoard();</p><p><b> }</b></p><p> void PrintRule(void) //打印游戲規(guī)則</p><p><b> {</b></p><p> cout
101、<<"\t☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆\n\n";</p><p> cout<<"\t\t歡迎使用五子連珠游戲!"<<endl<<endl;</p><p> cout<<"\t☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆\n\n";</p>
102、<p> cout<<"\t游戲規(guī)則:"<<endl;</p><p> cout<<"\t1.每1步輸入要下棋子的格子的x,y坐標(biāo),按Enter鍵\n";</p><p> cout<<"\t2.有1方首先5個棋子連成一線即判獲勝\n";</p>
103、<p> cout<<"\t3.當(dāng)旗子布滿棋盤但仍無獲勝方即為平局\n";</p><p> cout<<"\t4.一局結(jié)束后,若想繼續(xù)按Y鍵,若退出則按其他鍵\n";</p><p> cout<<"\t5.若想中途退出游戲,請輸入(0,0),再按照提示保存游戲\n";<
104、/p><p> cout<<"\t6.悔棋請輸入(-1,0)\n";</p><p> cout<<"\t6.X方先行\(zhòng)n";</p><p> cout<<"\n\n\t\t請按任意鍵開始下棋!\n\n";</p><p><b>
105、 }</b></p><p> int JudgePlay(CGobang &SideX,CGobang &SideO) //每下一步要進(jìn)行輸贏的判斷,有贏的則返回1 </p><p><b> {</b></p><p> if(SideX.Judge())
106、 //X方獲勝</p><p><b> {</b></p><p> SideX.Win();</p><p> SideO.Lose();</p><p><b> return 1;</b></p><p><b>
107、; }</b></p><p> else if(SideO.Judge()) //O方獲勝</p><p><b> {</b></p><p> SideO.Win();</p><p> SideX.Lose();</p>
108、;<p><b> return 1;</b></p><p><b> }</b></p><p><b> else</b></p><p><b> return 0;</b></p><p><b> }</
109、b></p><p> void Play(CGobang &SideX,CGobang &SideO) //開始一局游戲</p><p><b> {</b></p><p><b> while(1)</b></p><p><b&g
110、t; {</b></p><p> system("cls");</p><p> cout<<"\t*************************************************\n";</p><p> cout<<"\t\t※.悔棋請輸入(-1,0
111、)\n";</p><p> cout<<"\t\t※.中途退出請輸出(0,0),并根據(jù)提示保存\n";</p><p> cout<<"\t*************************************************\n";</p><p> CGobang::P
112、rintBoard(); //輸出棋盤</p><p> SideX.PlayTurn(); //X方下棋</p><p> if(JudgePlay(SideX,SideO)) //判斷輸贏</
113、p><p><b> break;</b></p><p> if(CGobang::GetFull()) //判斷是否平局</p><p><b> {</b></p><p> CGobang::Draw();</p&g
114、t;<p><b> break;</b></p><p><b> }</b></p><p> system("cls"); //清屏</p><p> cout<<"\t
115、*************************************************\n";</p><p> cout<<"\t\t※.悔棋請輸入(-1,0)\n";</p><p> cout<<"\t\t※.中途退出請輸出(0,0),并根據(jù)提示保存\n";</p><p&g
116、t; cout<<"\t*************************************************\n";</p><p> CGobang::PrintBoard(); //輸出棋盤</p><p> SideO.PlayTurn();
117、 //O方下棋</p><p> if(JudgePlay(SideX,SideO)) //判斷輸贏</p><p><b> break;</b></p><p> if(CGobang::GetFull())
118、 //判斷是否平局</p><p><b> {</b></p><p> CGobang::Draw();</p><p><b> break;</b></p><p><b> }</b></p>
119、<p><b> }</b></p><p><b> }</b></p><p> void continute() //接著上次的游戲玩</p><p><b> { </b></p>&l
120、t;p><b> char str;</b></p><p> cin.get();</p><p> cout<<"\t你是否接著玩上一次的游戲(y/n)?:";</p><p><b> cin>>str;</b></p><p> i
121、f(str=='Y'||str=='y')</p><p> CGobang::readBoard();</p><p><b> else </b></p><p> cout<<"\t請玩新游戲~~~~~\n";</p><p><b&g
122、t; }</b></p><p> int main(void) </p><p><b> {</b></p><p> CGobang SideX('@'),SideO('O'); //定義兩個旗子類對象,分別代表X方與O方</p
123、><p> system("cls");</p><p> PrintRule();</p><p> cin.get();</p><p> string strChoice;</p><p><b> do</b></p><p><b&
124、gt; {</b></p><p> cout<<"請選擇棋盤大小(10~19):";</p><p> cin>>CGobang::nSize;</p><p> cout<<endl;</p><p> if(CGobang::nSize>19||CGob
125、ang::nSize<10)</p><p><b> {</b></p><p> cout<<"請重新輸入:";</p><p> cin>>CGobang::nSize;</p><p> cout<<endl;</p><p
126、><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p> system("PAUSE");</p><p> system("cls");</p>
127、;<p> CGobang::InitialBoard(); //初始化棋盤</p><p> continute();</p><p> Play(SideX,SideO); //開始下一局棋</p><p> cout<&l
128、t;"是否繼續(xù)(Y/N)? ";</p><p> cin>>strChoice;</p><p><b> }</b></p><p> }while(strChoice=="Y"||strChoice=="y");</p><p> Si
129、deX.PrintInfo();</p><p> SideO.PrintInfo();</p><p> cout<<"\n\n\t歡迎再次使用五子連珠游戲!"<<endl<<endl;</p><p><b> return 0;</b></p><p>
溫馨提示
- 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 五子棋c++課程設(shè)計
- c++課程設(shè)計——五子棋
- c++五子棋課程設(shè)計報告
- c++課程設(shè)計--五子棋游戲
- c語言五子棋課程設(shè)計
- 五子棋課程設(shè)計
- 《c++語言程序設(shè)計》課程設(shè)計報告--五子棋
- java五子棋課程設(shè)計
- 五子棋-課程設(shè)計報告
- c語言課程設(shè)計--五子棋游戲設(shè)計
- java課程設(shè)計--五子棋
- 五子棋java課程設(shè)計
- 五子棋java課程設(shè)計
- c語言圖形五子棋課程設(shè)計報告
- c語言課程設(shè)計---五子棋(雙人對戰(zhàn))
- c語言圖形五子棋課程設(shè)計報告
- java課程設(shè)計--五子棋游戲
- java課程設(shè)計--對戰(zhàn)五子棋
- 五子棋小游戲課程設(shè)計
- c語言課程設(shè)計報告五子棋游戲課程設(shè)計
評論
0/150
提交評論