用c++写一个五子棋游戏
时间: 2024-02-18 08:36:52 浏览: 197
用C++写的五子棋游戏
以下是一个简单的五子棋游戏的C++代码示例:
```c++
#include <iostream>
#include <cstring>
using namespace std;
const int MAX = 20; // 棋盘大小
int board[MAX][MAX]; // 棋盘
int turn = 1; // 玩家1先手
int winner = 0; // 获胜者
void print_board() {
// 打印棋盘
for (int i = 0; i < MAX; i++) {
for (int j = 0; j < MAX; j++) {
if (board[i][j] == 0)
cout << "+ ";
else if (board[i][j] == 1)
cout << "O ";
else if (board[i][j] == 2)
cout << "X ";
}
cout << endl;
}
}
bool check_win(int player, int row, int col) {
// 判断玩家是否获胜
int cnt = 1;
// 横向
for (int i = col - 1; i >= 0 && board[row][i] == player; i--)
cnt++;
for (int i = col + 1; i < MAX && board[row][i] == player; i++)
cnt++;
if (cnt >= 5)
return true;
// 纵向
cnt = 1;
for (int i = row - 1; i >= 0 && board[i][col] == player; i--)
cnt++;
for (int i = row + 1; i < MAX && board[i][col] == player; i++)
cnt++;
if (cnt >= 5)
return true;
// 斜向
cnt = 1;
for (int i = row - 1, j = col - 1; i >= 0 && j >= 0 && board[i][j] == player; i--, j--)
cnt++;
for (int i = row + 1, j = col + 1; i < MAX && j < MAX && board[i][j] == player; i++, j++)
cnt++;
if (cnt >= 5)
return true;
// 反斜向
cnt = 1;
for (int i = row - 1, j = col + 1; i >= 0 && j < MAX && board[i][j] == player; i--, j++)
cnt++;
for (int i = row + 1, j = col - 1; i < MAX && j >= 0 && board[i][j] == player; i++, j--)
cnt++;
if (cnt >= 5)
return true;
return false;
}
int main() {
// 初始化棋盘
memset(board, 0, sizeof(board));
// 开始游戏
while (true) {
// 打印棋盘
print_board();
// 等待玩家输入
int row, col;
cout << "Player " << turn << ", please enter row and column (e.g. 1 1): ";
cin >> row >> col;
// 落子
if (board[row - 1][col - 1] == 0) {
board[row - 1][col - 1] = turn;
// 判断获胜
if (check_win(turn, row - 1, col - 1)) {
winner = turn;
break;
}
// 切换玩家
turn = 3 - turn;
} else {
cout << "Invalid move! Please try again." << endl;
}
}
// 打印获胜者
cout << "Player " << winner << " wins!" << endl;
return 0;
}
```
这个代码示例中,使用了一个二维数组来表示棋盘,其中0表示空位,1表示玩家1的棋子,2表示玩家2的棋子。使用check_win函数来判断玩家是否获胜,其实现方式是在落子之后,分别向横向、纵向、斜向、反斜向四个方向扫描,计算相同颜色的棋子的数量,如果数量达到5个或以上,则判断该玩家获胜。游戏开始后,轮流让两个玩家输入行列坐标,落子到棋盘上,直到有一方获胜为止。
阅读全文