c++五子棋課程設(shè)計報告_第1頁
已閱讀1頁,還剩20頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論