鹏哥三子棋c语言代码
时间: 2023-12-25 20:29:58 浏览: 28
以下是一个简单的C语言三子棋代码示例:
```c
#include <stdio.h>
char board[3][3]; // 棋盘
// 初始化棋盘
void InitBoard() {
int i, j;
for (i = 0; i < 3; i++) {
for (j = 0; j < 3; j++) {
board[i][j] = ' ';
}
}
}
// 打印棋盘
void DisplayBoard() {
int i, j;
for (i = 0; i < 3; i++) {
for (j = 0; j < 3; j++) {
printf("%c ", board[i][j]);
}
printf("\n");
}
}
// 玩家下棋
void PlayerMove() {
int row, col;
printf("请输入要下棋的位置(行 列):");
scanf("%d %d", &row, &col);
if (row < 0 || row >= 3 || col < 0 || col >= 3 || board[row][col] != ' ') {
printf("无效的位置,请重新输入!\n");
PlayerMove();
} else {
board[row][col] = 'X';
}
}
// 电脑下棋
void ComputerMove() {
int row, col;
do {
row = rand() % 3;
col = rand() % 3;
} while (board[row][col] != ' ');
board[row][col] = 'O';
}
// 判断输赢
int JudgeWin() {
int i;
// 判断行
for (i = 0; i < 3; i++) {
if (board[i][0] == board[i][1] && board[i][1] == board[i][2] && board[i][0] != ' ') {
return 1;
}
}
// 判断列
for (i = 0; i < 3; i++) {
if (board[0][i] == board[1][i] && board[1][i] == board[2][i] && board[0][i] != ' ') {
return 1;
}
}
// 判断对角线
if ((board[0][0] == board[1][1] && board[1][1] == board[2][2] && board[0][0] != ' ') ||
(board[0][2] == board[1][1] && board[1][1] == board[2][0] && board[0][2] != ' ')) {
return 1;
}
return 0;
}
int main() {
int turn = 0; // 轮到玩家下棋的标志,0表示玩家,1表示电脑
int result = 0; // 游戏结果,0表示未结束,1表示玩家获胜,2表示电脑获胜,3表示平局
InitBoard(); // 初始化棋盘
while (1) {
DisplayBoard(); // 打印棋盘
if (turn == 0) {
PlayerMove(); // 玩家下棋
} else {
ComputerMove(); // 电脑下棋
}
result = JudgeWin(); // 判断输赢
if (result == 1) {
printf("玩家获胜!\n");
break;
} else if (result == 2) {
printf("电脑获胜!\n");
break;
} else if (result == 3) {
printf("平局!\n");
break;
}
turn = !turn; // 切换下棋方
}
DisplayBoard(); // 打印最终棋盘
return 0;
}
```