用c++编写简单的五子棋游戏
时间: 2024-05-01 20:21:52 浏览: 52
好的,以下是一个简单的五子棋游戏的 C 语言代码:
```c
#include <stdio.h>
#define SIZE 15
char board[SIZE][SIZE];
void init_board() {
int i, j;
for (i = 0; i < SIZE; i++) {
for (j = 0; j < SIZE; j++) {
board[i][j] = '+';
}
}
}
void print_board() {
int i, j;
printf(" ");
for (i = 0; i < SIZE; i++) {
printf("%c ", 'A' + i);
}
printf("\n");
for (i = 0; i < SIZE; i++) {
printf("%2d", i + 1);
for (j = 0; j < SIZE; j++) {
printf("%c ", board[i][j]);
}
printf("\n");
}
}
int check_win(int x, int y) {
int i, j;
int count = 1;
char c = board[x][y];
for (i = x + 1; i < SIZE; i++) {
if (board[i][y] == c) {
count++;
} else {
break;
}
}
for (i = x - 1; i >= 0; i--) {
if (board[i][y] == c) {
count++;
} else {
break;
}
}
if (count >= 5) {
return 1;
}
count = 1;
for (j = y + 1; j < SIZE; j++) {
if (board[x][j] == c) {
count++;
} else {
break;
}
}
for (j = y - 1; j >= 0; j--) {
if (board[x][j] == c) {
count++;
} else {
break;
}
}
if (count >= 5) {
return 1;
}
count = 1;
for (i = x + 1, j = y + 1; i < SIZE && j < SIZE; i++, j++) {
if (board[i][j] == c) {
count++;
} else {
break;
}
}
for (i = x - 1, j = y - 1; i >= 0 && j >= 0; i--, j--) {
if (board[i][j] == c) {
count++;
} else {
break;
}
}
if (count >= 5) {
return 1;
}
count = 1;
for (i = x + 1, j = y - 1; i < SIZE && j >= 0; i++, j--) {
if (board[i][j] == c) {
count++;
} else {
break;
}
}
for (i = x - 1, j = y + 1; i >= 0 && j < SIZE; i--, j++) {
if (board[i][j] == c) {
count++;
} else {
break;
}
}
if (count >= 5) {
return 1;
}
return 0;
}
int main() {
int x, y, i, j;
char c;
init_board();
print_board();
for (i = 0; i < SIZE * SIZE; i++) {
if (i % 2 == 0) {
c = 'X';
} else {
c = 'O';
}
printf("Player %c's turn:\n", c);
do {
printf("Enter a position (e.g. A1): ");
scanf(" %c%d", &c, &y);
x = c - 'A';
y--;
if (x < 0 || x >= SIZE || y < 0 || y >= SIZE) {
printf("Invalid position.\n");
continue;
}
if (board[x][y] != '+') {
printf("Position already occupied.\n");
continue;
}
board[x][y] = c;
break;
} while (1);
print_board();
if (check_win(x, y)) {
printf("Player %c wins!\n", c);
break;
}
}
if (i == SIZE * SIZE) {
printf("Game over, no winner.\n");
}
return 0;
}
```
游戏规则:
- 玩家轮流下棋,黑方先手,用 X 表示,白方后手,用 O 表示。
- 玩家每次在棋盘上任意空白处下一枚棋子。
- 当有一方在横、竖、斜线上连续五枚棋子时,游戏结束,该玩家获胜。
- 如果棋盘被下满了,但仍没有连续五枚棋子的玩家,则游戏结束,平局。
阅读全文