21xrx.com
2025-03-27 22:55:10 Thursday
文章检索 我的文章 写文章
五子棋C++语言最简单代码
2023-06-26 15:53:13 深夜i     8     0
五子棋 C++ 代码 简单

五子棋是一种非常古老的中国传统棋类游戏,其规则简单,能够训练人的思维逻辑能力。如果你想要在计算机上实现这个游戏,那么使用C++语言来编写将是一个不错的选择。下面是五子棋C++语言最简单的代码实现。

首先,我们需要定义一个表示棋盘的二维数组,如下所示:

char board[15][15] = {
   ' '+', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '+ ' ',
   ' '| ' '| ' ',
   ' '| ' '| ' ',
   ' '| ' '| '|',
   ' '| ' '|'},
  {'|', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', '|'},
  {'|', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', '|'},
  {'|', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', '|'},
  {'|', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', '|'},
  {'|', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', '|'},
  {'|', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', '|'},
  {'|', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', '|'},
  {'|', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', '|'},
  {'|', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', '|'},
  {'+', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '+'}
};

这个数组表示的是一个15x15的棋盘,用‘+’、‘-’、‘|’字符画出棋盘的边框。其中,数组元素‘ ’表示这个位置没有落子,‘B’表示黑子,‘W’表示白子。

接下来,我们需要编写一个函数来在棋盘上落子,如下所示:

void place(int x, int y, char piece) {
  board[x][y] = piece;
}

这个函数接收三个参数,分别是落子的横坐标、纵坐标,以及棋子的类型(‘B’或‘W’)。调用这个函数之后,会在相应的位置上画上相应的棋子。

然后,我们需要编写一个函数来检查游戏是否结束,以及判断哪方获胜,如下所示:

char gameOver() {
  // 检查是否有一方获胜
  char winner = ' ';
  for (int i = 0; i < 15; ++i) {
    for (int j = 0; j < 11; ++j) {
      if (board[i][j] != ' ' && board[i][j] == board[i][j + 1] && board[i][j] == board[i][j + 2] && board[i][j] == board[i][j + 3] && board[i][j] == board[i][j + 4]) {
        winner = board[i][j];
        return winner;
      }
    }
  }
  for (int i = 0; i < 11; ++i) {
    for (int j = 0; j < 15; ++j) {
      if (board[i][j] != ' ' && board[i][j] == board[i + 1][j] && board[i][j] == board[i + 2][j] && board[i][j] == board[i + 3][j] && board[i][j] == board[i + 4][j]) {
        winner = board[i][j];
        return winner;
      }
    }
  }
  for (int i = 0; i < 11; ++i) {
    for (int j = 0; j < 11; ++j) {
      if (board[i][j] != ' ' && board[i][j] == board[i + 1][j + 1] && board[i][j] == board[i + 2][j + 2] && board[i][j] == board[i + 3][j + 3] && board[i][j] == board[i + 4][j + 4]) {
        winner = board[i][j];
        return winner;
      }
    }
  }
  for (int i = 0; i < 11; ++i) {
    for (int j = 4; j < 15; ++j) {
      if (board[i][j] != ' ' && board[i][j] == board[i + 1][j - 1] && board[i][j] == board[i + 2][j - 2] && board[i][j] == board[i + 3][j - 3] && board[i][j] == board[i + 4][j - 4]) {
        winner = board[i][j];
        return winner;
      }
    }
  }
  // 检查是否还有空位可以下棋
  bool empty = false;
  for (int i = 0; i < 15; ++i) {
    for (int j = 0; j < 15; ++j) {
      if (board[i][j] == ' ')
        empty = true;
        break;
      
    }
  }
  if (!empty)
    winner = 'D';
  
  return winner;
}

这个函数会在棋局结束时返回获胜方(‘B’或‘W’),如果棋局无人获胜,则返回‘D’;如果棋局还没有结束,则返回‘ ’。

最后,我们需要编写一个主函数来运行游戏,如下所示:

int main() {
  int x, y;
  char piece;
  bool turn = true; // true表示黑子轮到下,false表示白子轮到下
  while (true) {
    printBoard();
    if (turn)
      cout << "黑子下:";
      piece = 'B';
     else
      cout << "白子下:";
      piece = 'W';
    
    cin >> y >> x;
    if (board[x][y] == ' ') {
      place(x, y, piece);
      char winner = gameOver();
      if (winner != ' ') {
        printBoard();
        if (winner == 'D')
          cout << "平局!" << endl;
         else
          cout << winner << "方获胜!" << endl;
        
        break;
      }
      turn = !turn;
    } else 请重新输入。" << endl;
    
  }
  return 0;
}

在主函数中,我们先打印出棋盘,然后根据轮到哪方,输出提示信息并等待输入横纵坐标(注意这里的坐标是先输入纵坐标再输入横坐标)。如果这个位置没有棋子,就落子并检查游戏是否结束。如果游戏结束了,就输出获胜信息并退出游戏;否则就切换轮到哪方下棋。

通过以上代码,我们就可以简单地实现一个五子棋游戏。当然,这只是初级的实现方式,还有很多细节需要考虑,比如输入的坐标是否越界、如何进行重新开始等问题。希望这篇文章对你有所帮助!

  
  

评论区