21xrx.com
2025-03-23 05:47:38 Sunday
文章检索 我的文章 写文章
C++编程代码实现四子棋小游戏
2023-06-22 03:57:13 深夜i     8     0
C++ 编程 代码 四子棋 小游戏

四子棋是一种经典的桌游,也是很多人小时候玩过的游戏。现在,我们可以通过C++编程来实现一个简单的四子棋游戏,让大家回忆一下这个经典的游戏。

首先,我们需要定义一个叫做“board”的二维数组来表示棋盘,其中0代表空位,1代表黑子,2代表白子。接下来,我们需要定义一个函数来打印棋盘,让玩家可以看到当前的棋盘状态。

void print_board(int board[][15]) {
  for (int i = 0; i < 15; i++) {
    for (int j = 0; j < 15; j++) {
      if (board[i][j] == 0)
        cout << ".";
       else if (board[i][j] == 1)
        cout << "X";
       else
        cout << "O";
      
      cout << " ";
    }
    cout << endl;
  }
}

接下来,我们需要定义一个函数来判断当前落子是否符合规则。首先,我们需要判断该点是否在棋盘范围内。然后,我们需要判断该点是否已经被占用。最后,我们需要判断落子是否会形成五子连珠。如果符合条件,则返回true,否则返回false。

bool is_valid_move(int board[][15], int player, int row, int col) {
  if (row < 0 || row >= 15 || col < 0 || col >= 15)
    return false;
  
  if (board[row][col] != 0)
    return false;
  
  board[row][col] = player;
  int count = 0;
  for (int i = row - 4; i <= row; i++) {
    if (i < 0 || i + 4 >= 15)
      continue;
    
    count = 0;
    for (int j = i; j <= i + 4; j++) {
      if (board[j][col] == player) {
        count++;
      }
    }
    if (count == 5) {
      board[row][col] = 0;
      return true;
    }
  }
  for (int j = col - 4; j <= col; j++) {
    if (j < 0 || j + 4 >= 15)
      continue;
    
    count = 0;
    for (int i = j; i <= j + 4; i++) {
      if (board[row][i] == player) {
        count++;
      }
    }
    if (count == 5) {
      board[row][col] = 0;
      return true;
    }
  }
  for (int i = row - 4, j = col - 4; i <= row && j <= col; i++, j++) {
    if (i < 0 || j < 0 || i + 4 >= 15 || j + 4 >= 15)
      continue;
    
    count = 0;
    for (int k = 0; k < 5; k++) {
      if (board[i + k][j + k] == player) {
        count++;
      }
    }
    if (count == 5) {
      board[row][col] = 0;
      return true;
    }
  }
  for (int i = row - 4, j = col + 4; i <= row && j >= col; i++, j--) {
    if (i < 0 || j >= 15 || i + 4 >= 15 || j - 4 < 0)
      continue;
    
    count = 0;
    for (int k = 0; k < 5; k++) {
      if (board[i + k][j - k] == player) {
        count++;
      }
    }
    if (count == 5) {
      board[row][col] = 0;
      return true;
    }
  }
  board[row][col] = 0;
  return false;
}

最后,我们需要实现游戏进程。游戏开始时,黑子先手。每轮玩家需要输入落子的坐标。然后,我们需要判断该落子是否有效。如果有效,则在棋盘上落子,并打印当前的棋盘状态。如果形成五子连珠,则该玩家获胜。如果棋盘已经填满,但没有形成五子连珠,则判断为平局。当然,这个游戏还缺少一些细节,比如判断是否重复落子等等,需要玩家自行完善。

int main() {
  int board[15][15] = {0};
  int player = 1;
  while (true) {
    cout << "Player " << player << "'s turn:" << endl;
    int row, col;
    cin >> row >> col;
    if (is_valid_move(board, player, row, col)) {
      board[row][col] = player;
      print_board(board);
      cout << endl;
      if (player == 1)
        player = 2;
       else
        player = 1;
      
    } else
      cout << "Invalid move!" << endl;
    
  }
  return 0;
}

至此,我们已经完成了一个简单的四子棋小游戏。虽然不是很完美,但体现了C++编程的基本思想和方法。相信读者通过这个例子,可以更好地理解C++编程的基础知识,从而更好地开发自己的项目。

  
  

评论区