21xrx.com
2024-12-22 21:23:40 Sunday
登录
文章检索 我的文章 写文章
C++小游戏编程100例 - 五子棋
2023-07-11 06:52:00 深夜i     --     --
C++ 小游戏编程 100例 五子棋 游戏编程例子

作为一种风靡全球的策略棋类游戏,五子棋深受广大玩家的喜爱,这篇文章将介绍一种使用C++编程语言实现的五子棋小游戏。

首先,我们需要实现五子棋的棋盘操作,利用一个二维数组来存储每个位置的落子情况,0表示无子,1表示黑子,2表示白子。在程序运行阶段,可使用循环绘制出棋盘,代码如下:


const int BOARD_SIZE = 15;

int board[BOARD_SIZE][BOARD_SIZE] = { 0 };

void draw_board() {

  for (int i = 0; i < BOARD_SIZE; i++) {

    for (int j = 0; j < BOARD_SIZE; j++) {

      if (board[i][j] == 0) {

        cout << "+";

      }

      else if (board[i][j] == 1)

        cout << "●";

      

      else if (board[i][j] == 2)

        cout << "○";

      

    }

    cout << endl;

  }

}

接下来,我们需要实现五子棋的落子操作,通过鼠标点击棋盘上的某一位置,我们可以确定该位置是否可以落子,并且分别在黑子和白子交替放置。需要注意的是,每次落子后需要判断是否出现胜利局面(即连续五个棋子),若是,则游戏结束并宣布胜利方。代码如下:


int current_color = 1;

void put_chess_on_board(int x, int y) {

  if (board[x][y] != 0)

    return;

  

  board[x][y] = current_color;

  draw_board();

  if (check_win(x, y)) {

    cout << (current_color == 1 ? "黑方" : "白方") << "胜利!" << endl;

    exit(0);

  }

  else {

    current_color = (current_color == 1 ? 2 : 1);

  }

}

bool check_win(int x, int y) {

  int count = 1;

  for (int i = 1; i < 5; i++) {

    if (x + i < BOARD_SIZE && board[x + i][y] == current_color) {

      count++;

    }

    else

      break;

    

  }

  for (int i = 1; i < 5; i++) {

    if (x - i >= 0 && board[x - i][y] == current_color) {

      count++;

    }

    else

      break;

    

  }

  if (count >= 5)

    return true;

  

  count = 1;

  for (int i = 1; i < 5; i++) {

    if (y + i < BOARD_SIZE && board[x][y + i] == current_color) {

      count++;

    }

    else

      break;

    

  }

  for (int i = 1; i < 5; i++) {

    if (y - i >= 0 && board[x][y - i] == current_color) {

      count++;

    }

    else

      break;

    

  }

  if (count >= 5)

    return true;

  

  count = 1;

  for (int i = 1; i < 5; i++) {

    if (x + i < BOARD_SIZE && y + i < BOARD_SIZE && board[x + i][y + i] == current_color) {

      count++;

    }

    else

      break;

    

  }

  for (int i = 1; i < 5; i++) {

    if (x - i >= 0 && y - i >= 0 && board[x - i][y - i] == current_color) {

      count++;

    }

    else

      break;

    

  }

  if (count >= 5)

    return true;

  

  count = 1;

  for (int i = 1; i < 5; i++) {

    if (x - i >= 0 && y + i < BOARD_SIZE && board[x - i][y + i] == current_color) {

      count++;

    }

    else

      break;

    

  }

  for (int i = 1; i < 5; i++) {

    if (x + i < BOARD_SIZE && y - i >= 0 && board[x + i][y - i] == current_color) {

      count++;

    }

    else

      break;

    

  }

  if (count >= 5)

    return true;

  

  return false;

}

最后,我们将上述代码整合在一个主函数中,用户可以通过命令行输入来开始游戏,在游戏过程中使用鼠标点击来完成落子操作,代码如下:


int main(int argc, char** argv) {

  draw_board();

  cout << "五子棋小游戏,黑方先行。" << endl;

  while (true) {

    int x, y;

    cout << (current_color == 1 ? "黑方" : "白方") << "落子:";

    cin >> x >> y;

    put_chess_on_board(x, y);

  }

  return 0;

}

以上,便是使用C++编程语言实现五子棋小游戏的全部内容。通过模拟人类在真实的棋盘上进行五子棋操作的方式,我们得以深入理解五子棋游戏的规则及其背后的策略思路,同时也有助于我们加深对C++编程语言的理解和应用。

  
  

评论区

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