C语言五子棋玩家交替下棋示例
时间: 2024-01-04 15:04:27 浏览: 33
以下是一个C语言的五子棋玩家交替下棋的示例:
```c
#include <stdio.h>
#define SIZE 15
char board[SIZE][SIZE]; // 棋盘
void initBoard() {
for (int i = 0; i < SIZE; i++) {
for (int j = 0; j < SIZE; j++) {
board[i][j] = ' ';
}
}
}
void printBoard() {
printf(" ");
for (int i = 0; i < SIZE; i++) {
printf("%2d", i);
}
printf("\n");
for (int i = 0; i < SIZE; i++) {
printf("%2d", i);
for (int j = 0; j < SIZE; j {
printf(" %c", board[i][j]);
}
printf("\n");
}
}
int isWin() {
// 检查行
for (int i = 0; i < SIZE; i++) {
for (int j = 0; j < SIZE - 4; j++) {
if (board[i][j] != ' ' && board[i][j] == board[i][j+1] && board[i][j] == board[i][j+2] && board[i][j] == board[i][j+3] && board[i][j] == board[i][j+4]) {
return 1;
}
}
}
// 检查列
for (int i = 0; i < SIZE - 4; i++) {
for (int j = 0; j < SIZE; j++) {
if (board[i][j] != ' ' && board[i][j] == board[i+1][j] && board[i][j] == board[i+2][j] && board[i][j] == board[i+3][j] && board[i][j] == board[i+4][j]) {
return 1;
}
}
}
// 检查主对角线
for (int i = 0; i < SIZE - 4; i++) {
for (int j = 0; j < SIZE - 4; j++) {
if (board[i][j] != ' ' && board[i][j] == board[i+1][j+1] && board[i][j] == board[i+2][j+2] && board[i][j] == board[i+3][j+3] && board[i][j] == board[i+4][j+4]) {
return 1;
}
}
}
// 检查副对角线
for (int i = 0; i < SIZE - 4; i++) {
for (int j = 4; j < SIZE; j++) {
if (board[i][j] != ' ' && board[i][j] == board[i+1][j-1] && board[i][j] == board[i+2][j-2] && board[i][j] == board[i+3][j-3] && board[i][j] == board[i+4][j-4]) {
return 1;
}
}
}
return 0;
}
int main() {
initBoard();
int player = 1; // 玩家1先下棋
int row, col;
while (1) {
printBoard();
printf("Player %d, enter your move (row column): ", player);
scanf("%d %d", &row, &col);
if (row < 0 || row >= SIZE || col < 0 || col >= SIZE || board[row][col] != ' ') {
printf("Invalid move. Try again.\n");
continue;
}
if (player == 1) {
board[row][col] = 'X';
} else {
board[row][col] = 'O';
}
if (isWin()) {
printf("Player %d wins!\n", player);
break;
}
player = (player == 1) ? 2 : 1; // 切换玩家
}
printBoard();
return 0;
}
```