c++实现五子棋单机版(自娱自乐)

说是用c++写的,其实和C语言没差,也没用到C++与语言不同的地方,其实也是因为东西比较简单??

其实想做一个可以和其他人对战的五子棋,但是得先把单机实现了再说,鉴于linux系统对于很多字符都是默认输出不了的

所以用了其他符号表示棋盘以及棋子

  1 /*2018-10-29
  2     简易五子棋
  3  */
  4 #include 
  5 #include 
  6 //定义棋盘
  7 using namespace std;
  8 int ar[15][15];
  9 //根据此时落子情况打印棋盘
 10 void Print()
 11 {
 12     cout << "   ";
 13     for(int i = 0;i < 15;++i) {
 14         if(i < 9)
 15             cout << i+1 << "  ";
 16         else
 17             cout << i+1 << " ";
 18     }                                                                                                                                                                                                                                                                                                                                                                                    
 19     cout << endl;
 20     for(int i = 0;i < 15;++i) {
 21         if(i < 9)
 22             cout << i+1 << "  ";
 23         else
 24             cout << i+1 << " ";
 25         for(int j = 0;j < 15;++j) {
 26             if(ar[i][j] == 0)
 27                 cout << "*  ";
 28             else if(ar[i][j] == 1)
 29                 cout << "#  ";
 30             else
 31                 cout << "@  ";
 32         }
 33         cout << endl;
 34     }
 35 }
 36 //根据坐标以及双方落子
 37 int Down(int m,int n,int object)
 38 {
 39     if(m >14 || n > 14)
 40         return 0;
 41     if(!ar[m-1][n-1]) {
 42         ar[m-1][n-1] = object;
 43         return 1;
 44 
 45     }
 46     return 0;
 47 }
 48     
 49 //判断是否有一方胜利以便结束棋局
 50 int IsWin(void)
 51 {
 52     int m;
 53     int n;
 54     for(int i = 0;i < 15;++i)
 55         for(int j = 0;j < 15;++j) {
 56             //判断此时落点的一横行
 57             for(m = 1;m < 5 && ar[i][j] && ar[i][j] == ar[i][j+m] && j+m < 15;++m);
 58             if(m == 5)
 59                 return ar[i][j];
 60             //判断此时落点的一竖行
 61             for(m = 1;m < 5 && ar[i][j] && ar[i][j] == ar[i+m][j] && i+m < 15;++m)
 62             if(m == 5)
 63                 return ar[i][j];
 64             //判断此时落点的斜行
 65             //分别判断四个方向的斜行
 66             for(m = 0;m < 4;++m) {
 67                 switch(m) {
 68                     //左下方向
 69                     case 0:
 70                         for(n = 1;n < 5 && ar[i][j] && ar[i][j] == ar[i+n][j-n] && i+n < 15 && j+n < 15;++n);
 71                         if(n == 5)
 72                             return ar[i][j];
 73                     //左上方向
 74                     case 1:
 75                         for(n = 1;n < 5 && ar[i][j] && ar[i][j] == ar[i-n][j-n] && i+n < 15 && j+n < 15;++n);
 76                         if(n == 5)
 77                             return ar[i][j];
 78                     //右上方向
 79                     case 2:
 80                         for(n = 1;n < 5 && ar[i][j] && ar[i][j] == ar[i-n][j+n] && i+n < 15 && j+n < 15;++n);
 81                         if(n == 5)
 82                             return ar[i][j];
 83                     //右下方向
 84                     case 3:
 85                         for(n = 1;n < 5 && ar[i][j] && ar[i][j] == ar[i+n][j+n] && i+n < 15 && j+n < 15;++n);
 86                         if(n == 5)
 87                             return ar[i][j];
 88 
 89                 }
 90             }
 91         }
 92     return 0;
 93 }
 94  
 95  int main()
 96 {
 97     Print();
 98     int m,n;
 99     int cnt = 3;
100     int win;
101     while(!(win = IsWin())) {
102         if(cnt%2)
103             cout << "请@方输入位置:";
104         else
105             cout << "请#方输入位置: ";
106         cin >> m >> n;
107         if(Down(m,n,cnt%2+1)) {
108             system("clear");
109             Print();
110         }
111         else {
112             system("clear");
113             cout << "错误,请选择正确的位置填入!" << endl;
114             Print();
115             --cnt;
116         }
117         ++cnt;
118     }
119     if(win == 1)
120         cout << "#方胜利" << endl;
121     else
122         cout << "@方胜利" << endl;
123     return 0;
124 }
125                                                       

 

你可能感兴趣的:(c++实现五子棋单机版(自娱自乐))