21xrx.com
2024-11-22 10:07:09 Friday
登录
文章检索 我的文章 写文章
C++编程代码实现四子棋小游戏
2023-06-22 03:57:13 深夜i     --     --
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++编程的基础知识,从而更好地开发自己的项目。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复