五子棋代码C++
时间: 2023-07-10 09:11:45 浏览: 108
五子棋是一种非常经典的游戏,下面是一份简单的C++代码实现五子棋的过程,供您参考:
```cpp
#include <iostream>
using namespace std;
const int ROWS = 15; // 棋盘行数
const int COLS = 15; // 棋盘列数
const int BLACK = 1; // 黑子
const int WHITE = 2; // 白子
const int EMPTY = 0; // 空位置
int board[ROWS][COLS]; // 棋盘
void initBoard() { // 初始化棋盘,全部设置为空位置
for (int i = 0; i < ROWS; i++) {
for (int j = 0; j < COLS; j++) {
board[i][j] = EMPTY;
}
}
}
void printBoard() { // 输出棋盘
for (int i = 0; i < ROWS; i++) {
for (int j = 0; j < COLS; j++) {
if (board[i][j] == BLACK) {
cout << "● "; // 黑子用●表示
} else if (board[i][j] == WHITE) {
cout << "○ "; // 白子用○表示
} else {
cout << "+ "; // 空位置用+表示
}
}
cout << endl;
}
}
bool isWin(int row, int col, int player) { // 判断是否获胜
int i, j, count;
// 水平方向
count = 1;
for (i = col - 1; i >= 0 && board[row][i] == player; i--) {
count++;
}
for (i = col + 1; i < COLS && board[row][i] == player; i++) {
count++;
}
if (count >= 5) {
return true;
}
// 垂直方向
count = 1;
for (i = row - 1; i >= 0 && board[i][col] == player; i--) {
count++;
}
for (i = row + 1; i < ROWS && board[i][col] == player; i++) {
count++;
}
if (count >= 5) {
return true;
}
// 左斜方向
count = 1;
for (i = row - 1, j = col - 1; i >= 0 && j >= 0 && board[i][j] == player; i--, j--) {
count++;
}
for (i = row + 1, j = col + 1; i < ROWS && j < COLS && board[i][j] == player; i++, j++) {
count++;
}
if (count >= 5) {
return true;
}
// 右斜方向
count = 1;
for (i = row - 1, j = col + 1; i >= 0 && j < COLS && board[i][j] == player; i--, j++) {
count++;
}
for (i = row + 1, j = col - 1; i < ROWS && j >= 0 && board[i][j] == player; i++, j--) {
count++;
}
if (count >= 5) {
return true;
}
return false;
}
void play(int player) { // 下棋
int row, col;
cout << "请玩家" << player << "输入落子位置(格式:行 列):";
cin >> row >> col;
while (board[row][col] != EMPTY) { // 判断该位置是否为空位置
cout << "该位置已有棋子,请重新输入落子位置(格式:行 列):";
cin >> row >> col;
}
board[row][col] = player; // 落子
printBoard();
if (isWin(row, col, player)) { // 判断是否获胜
cout << "玩家" << player << "获胜!" << endl;
exit(0); // 游戏结束
}
}
int main() {
initBoard(); // 初始化棋盘
printBoard(); // 输出棋盘
int player = BLACK; // 黑子先手
while (true) { // 循环下棋
play(player);
player = (player == BLACK) ? WHITE : BLACK; // 切换玩家
}
return 0;
}
```
运行程序后,玩家1输入坐标时可以输入“0 0”至“14 14”之间的任意整数,玩家2同理。如果一个玩家在任意方向上连续落下5个棋子,就获胜了。
阅读全文