版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 計算機與信息學(xué)院</b></p><p><b> 課程設(shè)計報告</b></p><p><b> 年 月 日</b></p><p> 目 錄</p><p> 1.設(shè)計目的.......................
2、..........................................4</p><p> 2.設(shè)計要求................................................................4</p><p> 3.設(shè)計方案...................................................
3、.............4</p><p> 4.設(shè)計內(nèi)容................................................................7</p><p> 4.1系統(tǒng)的主要結(jié)構(gòu)和類結(jié)構(gòu)..................................................7</p><p>
4、4.2 (2)五子棋類的結(jié)構(gòu).......................................................7</p><p> 4.3 ⑶ 系統(tǒng)工作流程介紹.................................................... 7</p><p> 4.4 ⑷ 類的介紹..........................
5、...................................8</p><p> 4.5 (5) 各個模塊的介紹......................................................8</p><p> 4.6 (6)程序運行圖示.......................................................
6、.14</p><p> 5.總結(jié).....................................................................16</p><p> 參考文獻...................................................................17</p><p>&l
7、t;b> 1.設(shè)計目的</b></p><p> (1)加深我對面向?qū)ο蟪绦蚧镜睦斫夂驼莆铡?lt;/p><p> (2)熟練掌握基本流程圖的繪制。</p><p> (3)熟練visio的一些操作方法。(4)能夠在調(diào)試程序中快速發(fā)現(xiàn)并排除程序中的錯誤。(5)提高面向?qū)ο蟪绦蛘Z言解決實際中的問題的能力。</p>&l
8、t;p><b> 2.設(shè)計要求</b></p><p> 五子棋是玩家在游戲棋盤上逐個輸入黑子或白子的坐標(biāo),因此游戲要求在DOS界面生成一個可供操作的棋盤。通過輸入坐標(biāo)完成對應(yīng)落子情況,在輸入過程中判斷落子是否正確、是否有一方勝利等情況。編寫代碼可以在VC6.0下編譯通過。游戲要能實現(xiàn)五子棋游戲的簡單操作。程序中要體現(xiàn)面向?qū)ο笏枷搿?lt;/p><p><
9、b> 3.設(shè)計方案</b></p><p> ?。ū仨毎到y(tǒng)功能說明、用例圖和類圖)</p><p><b> 用例圖</b></p><p><b> 落子</b></p><p><b> 基于用戶的用例圖</b></p><
10、p><b> 步數(shù)用例圖</b></p><p><b> 系統(tǒng)用例圖</b></p><p> 1)輸出棋盤界面菜單及圖像2)開始進入控制3)黑白棋正確輸入格式控制4)判斷黑白輸贏控制5)正確計數(shù)對羿步數(shù)及下一步所要走的棋盤界面</p><p><b> 類圖</b></p>
11、;<p><b> 4.設(shè)計內(nèi)容</b></p><p> ⑴本系統(tǒng)的主要結(jié)構(gòu)和類結(jié)構(gòu)</p><p> 1)五子棋功能實現(xiàn)的主要結(jié)構(gòu)函數(shù)</p><p> void getpointxy(); //白棋出子函數(shù)</p><p> void getpointmn(); //黑棋出子函數(shù)</p
12、><p> void showqipan(); //實現(xiàn)20行20列正方形界面輸出</p><p> void print(); //輸出下一棋盤界面及計數(shù)</p><p> bool IsxyWin(); //白棋獲勝</p><p> bool IsmnWin(); //黑棋獲勝</p><p> void
13、menu();//顯示開始菜單界面</p><p> (2)五子棋類的結(jié)構(gòu)</p><p> class five </p><p><b> {</b></p><p> int x,y,m,n,num_xy,num_mn; </p><p> char qipan[20][20];
14、//定義20行20列的數(shù)組</p><p><b> public: </b></p><p> five(int X = 0,int Y =0,int M = 0,int N = 0,int Num_xy = 0,int Num_mn = 0) //構(gòu)造函數(shù)初始化</p><p><b> {</b></p&
15、gt;<p><b> x = X; </b></p><p><b> y = Y; </b></p><p><b> m = M; </b></p><p><b> n = N; </b></p><p> num_xy =
16、 Num_xy; </p><p> num_mn = Num_mn; </p><p> for(int i = 0 ; i < 20 ; i ++) //輸出20行20列的棋盤界面</p><p><b> { </b></p><p> for(int j = 0 ;j < 20 ; j ++)
17、 </p><p> qipan[i][j] = '.'; </p><p><b> } </b></p><p><b> } </b></p><p> ?、?系統(tǒng)工作流程介紹。</p><p><b> ?、?類的介紹:</b&g
18、t;</p><p> 該類完成了對輸入棋子坐標(biāo)的初始化,通過for循環(huán)實現(xiàn)了一個20行20列的坐標(biāo),在公有成員中定義了相應(yīng)的功能函數(shù)</p><p> void getpointxy(); //白棋出子及計數(shù)</p><p> void getpointmn(); //黑棋出子及計數(shù)</p><p> void showqipan(
19、); //實現(xiàn)20行20列正方形界面輸出</p><p> void print(); //輸出下一棋盤界面</p><p> bool IsxyWin(); //白棋獲勝</p><p> bool IsmnWin(); //黑棋獲勝</p><p> void menu();//顯示開始菜單界面</p><p&
20、gt; (5)各個模塊的介紹:</p><p> 1)類的實現(xiàn):包括對數(shù)據(jù)成員的賦值和成員函數(shù)的初始化還有通過for循環(huán)實現(xiàn)對20行20列坐標(biāo)的定義:源代碼如下</p><p> class five </p><p><b> {</b></p><p> int x,y,m,n,num_xy,num_mn;
21、 </p><p> char qipan[20][20]; //定義20行20列的數(shù)組</p><p><b> public: </b></p><p> five(int X = 0,int Y =0,int M = 0,int N = 0,int Num_xy = 0,int Num_mn = 0) //構(gòu)造函數(shù)初始化</p
22、><p><b> {x = X; </b></p><p><b> y = Y; </b></p><p><b> m = M; </b></p><p><b> n = N; </b></p><p> num_x
23、y = Num_xy; </p><p> num_mn = Num_mn; </p><p> for(int i = 0 ; i < 20 ; i ++) //輸出20行20列的棋盤界面</p><p> { for(int j = 0 ;j < 20 ; j ++) qipan[i][j] = '.'; } </p>
24、;<p><b> } </b></p><p> void getpointxy(); //白棋出子及計數(shù)</p><p> void getpointmn(); //黑棋出子及計數(shù)</p><p> void showqipan(); //實現(xiàn)20行20列正方形界面輸出</p><p> vo
25、id print(); //輸出下一棋盤界面</p><p> bool IsxyWin(); //白棋獲勝</p><p> bool IsmnWin(); //黑棋獲勝</p><p> void menu();//顯示開始菜單界面</p><p><b> };</b></p><p&g
26、t; 2)白棋和黑棋落子情況的判斷的實現(xiàn),源代碼如下:</p><p> void five::getpointxy() //判斷白棋出子情況及對其計數(shù)</p><p> { std::cout<<"請分別輸入第"<<num_xy+1<<"步白棋○的橫坐標(biāo)和縱坐標(biāo):"; </p><p
27、> std::cin >> y >> x; </p><p> if (!(1<=x&&x<=20&&1<=y&&y<=20))</p><p> { std::cout << "輸入錯誤,請重新輸入:"<<endl ; </p&
28、gt;<p> getpointxy(); </p><p><b> } </b></p><p> else if(qipan[y-1][x-1] != '.' ) </p><p> { std::cout << "請所下的位置已經(jīng)有棋子,請重新輸入:" <&
29、lt;endl; </p><p> getpointxy(); </p><p><b> } </b></p><p> else if(num_xy+num_mn >= 400) </p><p> { std::cout << "棋盤已滿,平局!" <<
30、; endl; </p><p><b> exit(0); </b></p><p><b> } </b></p><p><b> else </b></p><p> { qipan[y-1][x-1] = 'O'; </p>
31、<p> num_xy++; </p><p><b> }</b></p><p><b> } </b></p><p> void five::getpointmn() //判斷黑棋出子情況及對其計數(shù)</p><p> { std::cout<<"
32、請分別輸入第"<<num_mn+1<<"步黑棋●的橫坐標(biāo)和縱坐標(biāo):"; </p><p> std::cin >> n >> m; </p><p> if (!(1<=m&&m<=20&&1<=n&&n<=20))</p>
33、<p> { std::cout << "輸入錯誤,請重新輸入:"<<endl ; </p><p> getpointmn(); </p><p><b> } </b></p><p> else if(qipan[n-1][m-1]!='.') </
34、p><p> { std::cout << "請所下的位置已經(jīng)有棋子,請重新輸入:" <<endl; </p><p> getpointmn(); </p><p><b> } </b></p><p> else if(num_xy+num_mn >= 40
35、0) </p><p> { std::cout << "棋盤已滿,平局!" << endl; </p><p><b> exit(0); </b></p><p><b> } </b></p><p><b> else <
36、;/b></p><p> { qipan[n-1][m-1] = '*'; </p><p> num_mn++; </p><p><b> } </b></p><p><b> }</b></p><p><b> 3)菜
37、單界面模塊</b></p><p> void five::menu()//進入菜單界面</p><p> {char *q=new char[9];</p><p><b> cin>>q;</b></p><p> if(strcmp(q,"c"))</p&
38、gt;<p> five::showqipan();</p><p><b> }</b></p><p><b> 4)輸出模塊</b></p><p> void five::showqipan() //輸出20行20列的坐標(biāo)數(shù)值</p><p> { int p=0,
39、q=0; </p><p> for(int i = 0 ; i <= 20 ; i++) </p><p> { if(p<10) </p><p> { std::cout << p <<' '; } </p><p><b> else </b>&l
40、t;/p><p> std::cout << p ; </p><p><b> p++; </b></p><p><b> } </b></p><p> cout << endl; </p><p> for(i = 0 ; i <
41、20 ; i++) </p><p> { if(i>=0) </p><p><b> { q++; </b></p><p> if(q<10) std::cout << q <<' '; </p><p> else std::cout <&l
42、t; q; </p><p><b> } </b></p><p> for(int j = 0 ; j < 20 ; j ++) std::cout << qipan[i][j]<<' ' ; </p><p> std::cout << endl; </p>&
43、lt;p><b> } </b></p><p><b> } </b></p><p> void five::print() </p><p> { int p=0,q=0; </p><p> for(int i = 0 ; i <= 20 ; i++) </p&
44、gt;<p> { if(p<10) </p><p> { std::cout << p <<' '; } </p><p> else std::cout << p ; </p><p><b> p++; </b></p><p>&l
45、t;b> } </b></p><p> std::cout << endl; </p><p> for(i = 0 ; i < 20 ; i++) </p><p> { if(i>=0) </p><p><b> { q++; </b></p>&
46、lt;p> if(q<10) std::cout << q <<' '; </p><p> else std::cout << q; </p><p><b> } </b></p><p> for(int j = 0 ; j < 20 ; j ++) <
47、/p><p> { std::cout << qipan[i][j]<<' ' ; } </p><p> std::cout << endl; </p><p><b> } </b></p><p><b> }</b></p>
48、<p> 5)黑白棋輸贏的判斷,其源代碼如下:</p><p> bool five::IsxyWin()//白棋獲勝實現(xiàn)函數(shù)</p><p> { int num1=1,num2=1,num3=1,num4=1; </p><p> for(int i = x ; i < x+5&& x+5<20 ; i ++)
49、 </p><p> { if(qipan[y-1][i] != 'O') break; </p><p> if(qipan[y-1][i] == 'O') num1++; </p><p><b> } </b></p><p> for(i = x-2; i >= 0
50、; i --) </p><p> { if(qipan[y-1][i] != 'O') break; </p><p> if(qipan[y-1][i] == 'O') num1++; </p><p><b> } </b></p><p> for( i = y ; i &
51、lt; y+5 ; i ++) </p><p> { if(qipan[i][x-1] != 'O') break; </p><p> if(qipan[i][x-1] == 'O') num2++; </p><p><b> } </b></p><p> for(i =
52、 y-2; i >= 0 ; i --) </p><p> { if(qipan[i][x-1] != 'O') break; </p><p> if(qipan[i][x-1] == 'O') num2++; </p><p><b> } </b></p><p>
53、 for(i = 0 ; i < 5 && x+i<20 && y+i<20; i++ ) </p><p> { if(qipan[y+i][x+i] != 'O') break; </p><p> if(qipan[y+i][x+i] =='O') num3++; </p>&l
54、t;p><b> } </b></p><p> for(i = 0 ; x - i -2>=0 && y-i-2>=0 && i < 5;i++ ) </p><p> { if(qipan[y-i-2][x-i-2] != 'O') break; </p><p&
55、gt; if(qipan[y-i-2][x-i-2] == 'O') num3++; </p><p><b> } </b></p><p> for(i = 0 ; x + i < 20 && y - i - 2 >= 0 && i < 5;i ++) </p><p>
56、; { if(qipan[y-i-2][x+i] != 'O') break; </p><p> if(qipan[y-i-2][x+i] == 'O') num4++; </p><p><b> } </b></p><p> for(i = 0 ; y + i < 20 &&am
57、p; x - i - 2 >= 0 && i < 5;i ++) </p><p> { if(qipan[y+i][x-i-2] != 'O') break; </p><p> if(qipan[y+i][x-i-2] == 'O') num4++; </p><p><b> }
58、</b></p><p> if(num1>=5||num2>=5||num3>=5||num4>=5)return 1; </p><p> else return 0; </p><p><b> } </b></p><p> 黑棋獲勝情況與白棋類似</p>
59、<p><b> 6)主函數(shù)模塊</b></p><p> void main() </p><p> { std::cout<<"*************歡迎使用*^_^*`~******************"<<endl;</p><p> std::cout<
60、;<"______________________________________________"<<endl;</p><p> std::cout<<"|╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋|"<<endl;</p><p> std::cout<<"|╋╋╋╋╋╋╋╋
61、╋╋╋╋╋╋╋╋╋╋╋╋╋╋|"<<endl;</p><p> std::cout<<"|╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋|"<<endl;</p><p> std::cout<<"|╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋|"<<endl;</p&g
62、t;<p> std::cout<<"|╋╋╋╋●╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋|"<<endl;</p><p> std::cout<<"|╋╋╋╋╋╋○╋╋╋╋╋○╋╋╋╋╋╋╋╋╋|"<<endl;</p><p> std::cout<<"|╋╋╋
63、╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋|"<<endl;</p><p> std::cout<<"|╋╋╋╋╋╋╋╋●╋╋╋╋╋╋╋╋╋╋╋╋╋|"<<endl;</p><p> std::cout<<"|╋╋╋╋●╋╋╋╋╋●○╋╋╋╋╋╋╋╋╋╋|"<<endl;<
64、;/p><p> std::cout<<"|╋╋╋╋╋╋╋╋○○╋○╋╋╋╋╋╋╋╋╋╋|"<<endl;</p><p> std::cout<<"|╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋|"<<endl;</p><p> std::cout<<"
65、;|╋╋╋╋╋╋●╋╋╋╋●╋╋╋╋╋╋╋╋╋╋|"<<endl;</p><p> std::cout<<"|╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋|"<<endl;</p><p> std::cout<<"|╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋|"<<end
66、l;</p><p> std::cout<<"|╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋|"<<endl;</p><p> std::cout<<"|╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋|"<<endl;</p><p> std::cout<<
67、"|╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋|"<<endl;</p><p> std::cout<<"|---------------------------------------------"<<endl;</p><p> std::cout<<"進入按任意鍵";
68、</p><p> five a; //定義一個類的對象</p><p> int temp; </p><p><b> a.menu();</b></p><p> std::cout << "這是本游戲的棋盤,請按坐標(biāo)輸入棋子:" << endl; </p&
69、gt;<p> a.showqipan(); //通過對象調(diào)用功能函數(shù)</p><p> std::cout << "確認(rèn)請按1,退出請按其他鍵:"; </p><p> std::cin >> temp; </p><p> if(temp !=1) //游戲開始及退出控制</p>&
70、lt;p><b> exit(1); </b></p><p> if(temp == 1) </p><p> { std::cout << "游戲開始:" << endl; </p><p> for(int i = 0 ; ; i ++) </p><p>
71、;<b> { </b></p><p> a.getpointxy(); </p><p> a.print();</p><p> if(a.IsxyWin()) </p><p><b> { </b></p><p> std::cout <&l
72、t; "白棋勝!" << endl; </p><p><b> break; </b></p><p><b> } </b></p><p> a.getpointmn(); </p><p> a.print();</p><p>
73、; if(a.IsmnWin()) </p><p><b> { </b></p><p> std::cout << "黑棋勝!" << endl; </p><p><b> break; </b></p><p><b> }&
74、lt;/b></p><p><b> }</b></p><p><b> }</b></p><p> std::cout << "游戲結(jié)束\n"; </p><p><b> }</b></p><p&g
75、t; (6)程序運行圖示:</p><p><b> 進入游戲界面</b></p><p><b> 棋盤界面</b></p><p> 通過輸入橫縱坐標(biāo)完成落子</p><p> 下在同一個地方的情況</p><p><b> 獲勝情況</b&g
76、t;</p><p><b> 5.總結(jié)</b></p><p> ?。保┩ㄟ^此次課程設(shè)計,讓我產(chǎn)生對益智游戲編程的興趣,尤其是當(dāng)我真正把那程序運行出來時,那種興奮勁,無法比擬。</p><p> ?。玻┰谶@次課設(shè)的過程中當(dāng)然也讓我學(xué)到了很多東西,讓我學(xué)到了很多課外的相關(guān)C++高層次的東西,當(dāng)然其中也復(fù)習(xí)到了C++知識,尤其是通過類的運用,更
77、讓我體會面向?qū)ο笤诰幊痰倪^程中的作用。</p><p> 3 )由于能力所限,所以該五子棋個相關(guān)功能還比較少,代碼還過于冗長,我相信接下去只要我繼續(xù)努力,一定可以克服次問題。</p><p><b> 參考文獻</b></p><p> [1] 廉師友編著,C++面向?qū)ο蟪绦蛟O(shè)計簡明教程,西安電子科技大學(xué)出版社,1998</p>
78、;<p> [2] 李師賢等編著,面向?qū)ο蟪绦蛟O(shè)計基礎(chǔ),高等教育出版社,1998</p><p> [3] 譚浩強編著,C++程序設(shè)計,清華大學(xué)出版社,2004</p><p><b> 附加源代碼</b></p><p> #include<iostream></p><p> us
79、ing namespace std;</p><p> class five </p><p><b> {</b></p><p> int x,y,m,n,num_xy,num_mn; </p><p> char qipan[20][20]; //定義20行20列的數(shù)組</p><p&g
80、t;<b> public: </b></p><p> five(int X = 0,int Y =0,int M = 0,int N = 0,int Num_xy = 0,int Num_mn = 0) //構(gòu)造函數(shù)初始化</p><p><b> {x = X; </b></p><p><b>
81、 y = Y; </b></p><p><b> m = M; </b></p><p><b> n = N; </b></p><p> num_xy = Num_xy; </p><p> num_mn = Num_mn; </p><p> f
82、or(int i = 0 ; i < 20 ; i ++) //輸出20行20列的棋盤界面</p><p> { for(int j = 0 ;j < 20 ; j ++) qipan[i][j] = '.'; } </p><p><b> } </b></p><p> void getpointxy();
83、 //白棋出子及計數(shù)</p><p> void getpointmn(); //黑棋出子及計數(shù)</p><p> void showqipan(); //實現(xiàn)20行20列正方形界面輸出</p><p> void print(); //輸出下一棋盤界面</p><p> bool IsxyWin(); //白棋獲勝</p>
84、;<p> bool IsmnWin(); //黑棋獲勝</p><p> void menu();//顯示開始菜單界面</p><p><b> }; </b></p><p> void five::getpointxy() //判斷白棋出子情況及對其計數(shù)</p><p> { std::
85、cout<<"請分別輸入第"<<num_xy+1<<"步白棋○的橫坐標(biāo)和縱坐標(biāo):"; </p><p> std::cin >> y >> x; </p><p> if (!(1<=x&&x<=20&&1<=y&&y&l
86、t;=20))</p><p> { std::cout << "輸入錯誤,請重新輸入:"<<endl ; </p><p> getpointxy(); </p><p><b> } </b></p><p> else if(qipan[y-1][x-1] !
87、= '.' ) </p><p> { std::cout << "請所下的位置已經(jīng)有棋子,請重新輸入:" <<endl; </p><p> getpointxy(); </p><p><b> } </b></p><p> else if(n
88、um_xy+num_mn >= 400) </p><p> { std::cout << "棋盤已滿,平局!" << endl; </p><p><b> exit(0); </b></p><p><b> } </b></p><p&g
89、t;<b> else </b></p><p> { qipan[y-1][x-1] = 'O'; </p><p> num_xy++; </p><p><b> }</b></p><p><b> } </b></p>&l
90、t;p> void five::getpointmn() //判斷黑棋出子情況及對其計數(shù)</p><p> { std::cout<<"請分別輸入第"<<num_mn+1<<"步黑棋●的橫坐標(biāo)和縱坐標(biāo):"; </p><p> std::cin >> n >> m; </
91、p><p> if (!(1<=m&&m<=20&&1<=n&&n<=20))</p><p> { std::cout << "輸入錯誤,請重新輸入:"<<endl ; </p><p> getpointmn(); </p>&
92、lt;p><b> } </b></p><p> else if(qipan[n-1][m-1]!='.') </p><p> { std::cout << "請所下的位置已經(jīng)有棋子,請重新輸入:" <<endl; </p><p> getpointmn();
93、</p><p><b> } </b></p><p> else if(num_xy+num_mn >= 400) </p><p> { std::cout << "棋盤已滿,平局!" << endl; </p><p><b> exit(0
94、); </b></p><p><b> } </b></p><p><b> else </b></p><p> { qipan[n-1][m-1] = '*'; </p><p> num_mn++; </p><p><
95、b> } </b></p><p><b> } </b></p><p> void five::menu()//進入菜單界面</p><p> {char *q=new char[9];</p><p><b> cin>>q;</b></p>
96、;<p> if(strcmp(q,"c"))</p><p> five::showqipan();</p><p><b> }</b></p><p> void five::showqipan() //輸出20行20列的坐標(biāo)數(shù)值</p><p> { int p=0,
97、q=0; </p><p> for(int i = 0 ; i <= 20 ; i++) </p><p> { if(p<10) </p><p> { std::cout << p <<' '; } </p><p><b> else </b>&l
98、t;/p><p> std::cout << p ; </p><p><b> p++; </b></p><p><b> } </b></p><p> cout << endl; </p><p> for(i = 0 ; i <
99、20 ; i++) </p><p> { if(i>=0) </p><p><b> { q++; </b></p><p> if(q<10) std::cout << q <<' '; </p><p> else std::cout <&l
100、t; q; </p><p><b> } </b></p><p> for(int j = 0 ; j < 20 ; j ++) std::cout << qipan[i][j]<<' ' ; </p><p> std::cout << endl; </p>&
101、lt;p><b> } </b></p><p><b> } </b></p><p> void five::print() </p><p> { int p=0,q=0; </p><p> for(int i = 0 ; i <= 20 ; i++) </p&
102、gt;<p> { if(p<10) </p><p> { std::cout << p <<' '; } </p><p> else std::cout << p ; </p><p><b> p++; </b></p><p>&l
103、t;b> } </b></p><p> std::cout << endl; </p><p> for(i = 0 ; i < 20 ; i++) </p><p> { if(i>=0) </p><p><b> { q++; </b></p>&
104、lt;p> if(q<10) std::cout << q <<' '; </p><p> else std::cout << q; </p><p><b> } </b></p><p> for(int j = 0 ; j < 20 ; j ++) <
105、/p><p> { std::cout << qipan[i][j]<<' ' ; } </p><p> std::cout << endl; </p><p><b> } </b></p><p><b> } </b></p>
106、;<p> bool five::IsxyWin()//白棋獲勝實現(xiàn)函數(shù)</p><p> { int num1=1,num2=1,num3=1,num4=1; </p><p> for(int i = x ; i < x+5&& x+5<20 ; i ++) </p><p> { if(qipan[y-1][
107、i] != 'O') break; </p><p> if(qipan[y-1][i] == 'O') num1++; </p><p><b> } </b></p><p> for(i = x-2; i >= 0 ; i --) </p><p> { if(qipa
108、n[y-1][i] != 'O') break; </p><p> if(qipan[y-1][i] == 'O') num1++; </p><p><b> } </b></p><p> for( i = y ; i < y+5 ; i ++) </p><p> {
109、 if(qipan[i][x-1] != 'O') break; </p><p> if(qipan[i][x-1] == 'O') num2++; </p><p><b> } </b></p><p> for(i = y-2; i >= 0 ; i --) </p><
110、p> { if(qipan[i][x-1] != 'O') break; </p><p> if(qipan[i][x-1] == 'O') num2++; </p><p><b> } </b></p><p> for(i = 0 ; i < 5 && x+i<
111、;20 && y+i<20; i++ ) </p><p> { if(qipan[y+i][x+i] != 'O') break; </p><p> if(qipan[y+i][x+i] =='O') num3++; </p><p><b> } </b></p>
112、<p> for(i = 0 ; x - i -2>=0 && y-i-2>=0 && i < 5;i++ ) </p><p> { if(qipan[y-i-2][x-i-2] != 'O') break; </p><p> if(qipan[y-i-2][x-i-2] == 'O
113、9;) num3++; </p><p><b> } </b></p><p> for(i = 0 ; x + i < 20 && y - i - 2 >= 0 && i < 5;i ++) </p><p> { if(qipan[y-i-2][x+i] != 'O
114、9;) break; </p><p> if(qipan[y-i-2][x+i] == 'O') num4++; </p><p><b> } </b></p><p> for(i = 0 ; y + i < 20 && x - i - 2 >= 0 && i < 5
115、;i ++) </p><p> { if(qipan[y+i][x-i-2] != 'O') break; </p><p> if(qipan[y+i][x-i-2] == 'O') num4++; </p><p><b> } </b></p><p> if(num1
116、>=5||num2>=5||num3>=5||num4>=5) return 1; </p><p> else return 0; </p><p><b> } </b></p><p> bool five::IsmnWin() //黑棋獲勝實現(xiàn)函數(shù)</p><p> { int
117、 num1=1,num2=1,num3=1,num4=1; </p><p> for(int i = m ; i < m+5&& m+5<20 ; i ++) </p><p> { if(qipan[n-1][i] != '*') break; </p><p> if(qipan[n-1][i] ==
118、39;*') num1++; </p><p><b> } </b></p><p> for(i = m-2; i >= 0 ; i --) </p><p> { if(qipan[n-1][i] != '*') break; </p><p> if(qipan[n-1]
119、[i] == '*') num1++; </p><p><b> } </b></p><p> for( i = n ; i < n+5 ; i ++) </p><p> { if(qipan[i][m-1] != '*') break; </p><p> if(
120、qipan[i][m-1] == '*') num2++; </p><p><b> } </b></p><p> for(i = n-2; i >= 0 ; i --) </p><p> { if(qipan[i][m-1] != '*') break; </p><p
121、> if(qipan[i][m-1] == '*') num2++; </p><p><b> } </b></p><p> for(i = 0 ; i < 5 && m+i<20 && n+i<20; i++ ) </p><p> { if(qipan[
122、n+i][m+i] != '*') break; </p><p> if(qipan[n+i][m+i] =='*') num3++; </p><p><b> } </b></p><p> for(i = 0 ; m - i -2>=0 && n-i-2>=0 &
123、& i < 5;i++ ) </p><p> { if(qipan[n-i-2][m-i-2] != '*') break; </p><p> if(qipan[n-i-2][m-i-2] == '*') num3++; </p><p><b> } </b></p>
124、<p> for(i = 0 ; m + i < 20 && n - i - 2 >= 0 && i < 5;i ++) </p><p> { if(qipan[n-i-2][m+i] != '*') break; </p><p> if(qipan[n-i-2][m+i] == '*'
125、;) num4++; </p><p><b> } </b></p><p> for(i = 0 ; n + i < 20 && m - i - 2 >= 0 && i < 5;i ++) </p><p> { if(qipan[n+i][m-i-2] != '*'
126、;) break; </p><p> if(qipan[n+i][m-i-2] == '*') num4++; </p><p><b> } </b></p><p> if(num1>=5||num2>=5||num3>=5||num4>=5) return 1; </p>&l
127、t;p> else return 0; </p><p><b> } </b></p><p> void main() </p><p> { std::cout<<"*************歡迎使用*^_^*`~******************"<<endl;</
128、p><p> std::cout<<"______________________________________________"<<endl;</p><p> std::cout<<"|╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋|"<<endl;</p><p> st
129、d::cout<<"|╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋|"<<endl;</p><p> std::cout<<"|╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋|"<<endl;</p><p> std::cout<<"|╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋
130、╋╋|"<<endl;</p><p> std::cout<<"|╋╋╋╋●╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋|"<<endl;</p><p> std::cout<<"|╋╋╋╋╋╋○╋╋╋╋╋○╋╋╋╋╋╋╋╋╋|"<<endl;</p><p>
131、; std::cout<<"|╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋|"<<endl;</p><p> std::cout<<"|╋╋╋╋╋╋╋╋●╋╋╋╋╋╋╋╋╋╋╋╋╋|"<<endl;</p><p> std::cout<<"|╋╋╋╋●╋╋╋╋╋●○╋╋╋
132、╋╋╋╋╋╋╋|"<<endl;</p><p> std::cout<<"|╋╋╋╋╋╋╋╋○○╋○╋╋╋╋╋╋╋╋╋╋|"<<endl;</p><p> std::cout<<"|╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋|"<<endl;</p><
133、;p> std::cout<<"|╋╋╋╋╋╋●╋╋╋╋●╋╋╋╋╋╋╋╋╋╋|"<<endl;</p><p> std::cout<<"|╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋|"<<endl;</p><p> std::cout<<"|╋╋╋╋╋╋╋╋╋╋
134、╋╋╋╋╋╋╋╋╋╋╋╋|"<<endl;</p><p> std::cout<<"|╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋|"<<endl;</p><p> std::cout<<"|╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋|"<<endl;</p>
135、<p> std::cout<<"|╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋╋|"<<endl;</p><p> std::cout<<"|---------------------------------------------"<<endl;</p><p> std::co
136、ut<<"進入按任意鍵";</p><p> five a; //定義一個類的對象</p><p> int temp; </p><p><b> a.menu();</b></p><p> std::cout << "這是本游戲的棋盤,請按坐標(biāo)輸入棋子
137、:" << endl; </p><p> a.showqipan(); //通過對象調(diào)用功能函數(shù)</p><p> std::cout << "確認(rèn)請按1,退出請按其他鍵:"; </p><p> std::cin >> temp; </p><p> if(temp
138、 !=1) //游戲開始及退出控制</p><p><b> exit(1); </b></p><p> if(temp == 1) </p><p> { std::cout << "游戲開始:" << endl; </p><p> for(int i = 0
139、; ; i ++) </p><p><b> { </b></p><p> a.getpointxy(); </p><p> a.print();</p><p> if(a.IsxyWin()) </p><p><b> { </b></p>
140、;<p> std::cout << "白棋勝!" << endl; </p><p><b> break; </b></p><p><b> } </b></p><p> a.getpointmn(); </p><p>
141、a.print();</p><p> if(a.IsmnWin()) </p><p><b> { </b></p><p> std::cout << "黑棋勝!" << endl; </p><p><b> break; </b><
142、/p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p> std::cout << "游戲結(jié)束\n"; </p><p><b>
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(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è)計報告--五子棋
- 五子棋-課程設(shè)計報告
- c語言五子棋課程設(shè)計
- c語言圖形五子棋課程設(shè)計報告
- c語言圖形五子棋課程設(shè)計報告
- 五子棋課程設(shè)計
- c語言課程設(shè)計報告五子棋游戲課程設(shè)計
- java課程設(shè)計報告-五子棋
- 五子棋游戲課程設(shè)計報告
- 五子棋畢業(yè)課程設(shè)計報告
- java五子棋課程設(shè)計
- c語言課程設(shè)計--五子棋游戲設(shè)計
- java課程設(shè)計--五子棋
- 五子棋java課程設(shè)計
- 五子棋java課程設(shè)計
- 五子棋java語言課程設(shè)計報告
評論
0/150
提交評論