21xrx.com
2025-04-04 13:48:31 Friday
文章检索 我的文章 写文章
C++五子棋游戏代码及解释
2023-06-28 18:30:44 深夜i     9     0
C++ 五子棋 游戏代码 解释

随着计算机的普及,人们对于电子游戏的需求越来越高。而五子棋作为一款历史悠久、简单易学、有趣度极高的游戏,在电子游戏领域也有着广泛的应用。因此,学习如何使用C++语言来实现五子棋游戏是非常有必要的。

下面是C++五子棋游戏的主要代码及解释:

#include <iostream>
using namespace std;
int board[15][15] = {0}; // 存储棋盘的数组,0表示没有落子,1表示黑子,2表示白子
bool success = false;   // 用于标记是否获胜
// 判断是否获胜的函数
void check_win(int color, int x, int y) {
  int count = 1;
  // 判断横向
  for (int i = y + 1; i < 15 && board[x][i] == color; i++, count++);
  for (int i = y - 1; i >= 0 && board[x][i] == color; i--, count++);
  if (count >= 5)
    success = true;
    return;
  
  count = 1;
  // 判断纵向
  for (int i = x + 1; i < 15 && board[i][y] == color; i++, count++);
  for (int i = x - 1; i >= 0 && board[i][y] == color; i--, count++);
  if (count >= 5)
    success = true;
    return;
  
  count = 1;
  // 判断左下->右上
  for (int i = x + 1, j = y - 1; i < 15 && j >= 0 && board[i][j] == color; i++, j--, count++);
  for (int i = x - 1, j = y + 1; i >= 0 && j < 15 && board[i][j] == color; i--, j++, count++);
  if (count >= 5)
    success = true;
    return;
  
  count = 1;
  // 判断左上->右下
  for (int i = x + 1, j = y + 1; i < 15 && j < 15 && board[i][j] == color; i++, j++, count++);
  for (int i = x - 1, j = y - 1; i >= 0 && j >= 0 && board[i][j] == color; i--, j--, count++);
  if (count >= 5)
    success = true;
    return;
  
}
int main() {
  int x, y; // 存储输入的坐标
  int color = 1; // 存储当前落子颜色,1为黑色,2为白色
  while (!success) { // 只要还没有获胜,就可以一直下棋
    // 输出棋盘
    for (int i = 0; i < 15; i++) {
      for (int j = 0; j < 15; j++) {
        cout << board[i][j] << " ";
      }
      cout << endl;
    }
    cout << "请" << (color == 1 ? "黑方" : "白方") << "落子,输入坐标(x,y): ";
    cin >> x >> y;
    // 判断输入是否合法
    if (x < 0 || x >= 15 || y < 0 || y >= 15 || board[x][y] != 0)
      cout << "输入不合法
    board[x][y] = color; // 落子
    check_win(color, x, y); // 判断是否获胜
    if (success) {
      cout << (color == 1 ? "黑方" : "白方") << "获胜!" << endl;
      break;
    }
    color = (color == 1 ? 2 : 1); // 切换落子颜色
  }
  return 0;
}

以上代码实现了一个简单的五子棋游戏。在程序运行时,首先会输出一张初始的棋盘(全部为0),然后提示黑色方或白色方输入坐标,再判断输入是否合法,若合法,则在对应的位置落子,并通过 `check_win` 函数判断是否获胜。若获胜,则输出结果;否则,继续下一步,并切换落子颜色。

总之,以上代码虽然简单,但已经实现了五子棋游戏的基本要求,如果您对于C++语言不熟悉,可以作为一个参考,并根据自己的需要进行改编。如果您想要更深入掌握C++,还需要多多练习,去用C++实现更多的程序,才能更好地理解C++语言的核心思想。

  
  

评论区

请求出错了