可以帮我写一个关于井字棋的c语言代码吗
时间: 2023-06-04 22:08:11 浏览: 42
当然可以!以下是关于井字棋的C语言代码:
```
#include<stdio.h>
char board[3][3]; // 存储游戏棋盘
void initialize_board() {
int i, j;
for (i = 0; i < 3; i++) {
for (j = 0; j < 3; j++) {
board[i][j] = ' ';
}
}
}
void print_board() {
printf(" %c | %c | %c \n", board[0][0], board[0][1], board[0][2]);
printf("---|---|---\n");
printf(" %c | %c | %c \n", board[1][0], board[1][1], board[1][2]);
printf("---|---|---\n");
printf(" %c | %c | %c \n", board[2][0], board[2][1], board[2][2]);
}
char check_win() {
int i;
for (i = 0; i < 3; i++) { // 判断每行是否相同
if (board[i][0] == board[i][1] && board[i][1] == board[i][2]) {
return board[i][0];
}
}
for (i = 0; i < 3; i++) { // 判断每列是否相同
if (board[0][i] == board[1][i] && board[1][i] == board[2][i]) {
return board[0][i];
}
}
if (board[0][0] == board[1][1] && board[1][1] == board[2][2]) { // 判断斜线是否相同
return board[0][0];
}
if (board[0][2] == board[1][1] && board[1][1] == board[2][0]) { // 判断反斜线是否相同
return board[0][2];
}
return ' '; // 表示游戏未结束
}
void main() {
int row, col, player = 1, i, j;
char mark;
printf("欢迎来玩井字棋游戏!\n");
printf("玩家1使用X标记,玩家2使用O标记\n\n");
initialize_board();
for (i = 0; i < 9 && check_win() == ' '; i++) { // 最多可以下9步棋
player = i % 2 + 1;
printf("现在轮到玩家%d\n", player);
print_board();
do {
printf("请选择一个未被占用的位置(行列坐标,用空格分隔):");
scanf("%d %d", &row, &col);
} while (row < 1 || row > 3 || col < 1 || col > 3 || board[row-1][col-1] != ' ');
if (player == 1) {
mark = 'X';
} else {
mark = 'O';
}
board[row-1][col-1] = mark;
}
print_board();
if (check_win() == ' ') {
printf("游戏结束,平局!\n");
} else {
printf("恭喜玩家%d,你获胜了!\n", (player % 2) + 1);
}
}
```
希望这可以帮到你!