版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、<p><b> 計算機與信息學院</b></p><p><b> 課程設計報告</b></p><p><b> 年 月 日</b></p><p> 目 錄</p><p> 1.設計目的.......................
2、..........................................4</p><p> 2.設計要求................................................................4</p><p> 3.設計方案...................................................
3、.............4</p><p> 4.設計內容................................................................7</p><p> 4.1系統(tǒng)的主要結構和類結構..................................................7</p><p>
4、4.2 (2)五子棋類的結構.......................................................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.總結.....................................................................16</p><p> 參考文獻...................................................................17</p><p>&l
7、t;b> 1.設計目的</b></p><p> (1)加深我對面向對象程序基本的理解和掌握。</p><p> (2)熟練掌握基本流程圖的繪制。</p><p> (3)熟練visio的一些操作方法。(4)能夠在調試程序中快速發(fā)現(xiàn)并排除程序中的錯誤。(5)提高面向對象程序語言解決實際中的問題的能力。</p>&l
8、t;p><b> 2.設計要求</b></p><p> 五子棋是玩家在游戲棋盤上逐個輸入黑子或白子的坐標,因此游戲要求在DOS界面生成一個可供操作的棋盤。通過輸入坐標完成對應落子情況,在輸入過程中判斷落子是否正確、是否有一方勝利等情況。編寫代碼可以在VC6.0下編譯通過。游戲要能實現(xiàn)五子棋游戲的簡單操作。程序中要體現(xiàn)面向對象思想。</p><p><
9、b> 3.設計方案</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.設計內容</b></p><p> ?、疟鞠到y(tǒng)的主要結構和類結構</p><p> 1)五子棋功能實現(xiàn)的主要結構函數(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)五子棋類的結構</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) //構造函數(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> 該類完成了對輸入棋子坐標的初始化,通過for循環(huán)實現(xiàn)了一個20行20列的坐標,在公有成員中定義了相應的功能函數(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> ?。保╊惖膶崿F(xiàn):包括對數(shù)據(jù)成員的賦值和成員函數(shù)的初始化還有通過for循環(huán)實現(xiàn)對20行20列坐標的定義:源代碼如下</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) //構造函數(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<<"步白棋○的橫坐標和縱坐標:"; </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 << "請所下的位置已經有棋子,請重新輸入:" <&
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<<"步黑棋●的橫坐標和縱坐標:"; </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 << "請所下的位置已經有棋子,請重新輸入:" <<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列的坐標數(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 << "這是本游戲的棋盤,請按坐標輸入棋子:" << endl; </p&
69、gt;<p> a.showqipan(); //通過對象調用功能函數(shù)</p><p> std::cout << "確認請按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 << "游戲結束\n"; </p><p><b> }</b></p><p&g
75、t; (6)程序運行圖示:</p><p><b> 進入游戲界面</b></p><p><b> 棋盤界面</b></p><p> 通過輸入橫縱坐標完成落子</p><p> 下在同一個地方的情況</p><p><b> 獲勝情況</b&g
76、t;</p><p><b> 5.總結</b></p><p> ?。保┩ㄟ^此次課程設計,讓我產生對益智游戲編程的興趣,尤其是當我真正把那程序運行出來時,那種興奮勁,無法比擬。</p><p> ?。玻┰谶@次課設的過程中當然也讓我學到了很多東西,讓我學到了很多課外的相關C++高層次的東西,當然其中也復習到了C++知識,尤其是通過類的運用,更
77、讓我體會面向對象在編程的過程中的作用。</p><p> 3 )由于能力所限,所以該五子棋個相關功能還比較少,代碼還過于冗長,我相信接下去只要我繼續(xù)努力,一定可以克服次問題。</p><p><b> 參考文獻</b></p><p> [1] 廉師友編著,C++面向對象程序設計簡明教程,西安電子科技大學出版社,1998</p>
78、;<p> [2] 李師賢等編著,面向對象程序設計基礎,高等教育出版社,1998</p><p> [3] 譚浩強編著,C++程序設計,清華大學出版社,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) //構造函數(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<<"步白棋○的橫坐標和縱坐標:"; </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 << "請所下的位置已經有棋子,請重新輸入:" <<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<<"步黑棋●的橫坐標和縱坐標:"; </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 << "請所下的位置已經有棋子,請重新輸入:" <<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列的坐標數(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 << "這是本游戲的棋盤,請按坐標輸入棋子
137、:" << endl; </p><p> a.showqipan(); //通過對象調用功能函數(shù)</p><p> std::cout << "確認請按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 << "游戲結束\n"; </p><p><b>
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
評論
0/150
提交評論