用c语言写一个简单的三子棋游戏
时间: 2023-07-10 22:13:40 浏览: 84
使用C语言编写的三子棋小游戏
好的,以下是一个简单的三子棋游戏的C语言代码:
```c
#include <stdio.h>
char board[3][3]; // 棋盘
void init_board() {
int i, j;
for(i = 0; i < 3; i++) {
for(j = 0; j < 3; j++) {
board[i][j] = ' '; // 初始化棋盘为空格
}
}
}
void print_board() {
int i, j;
printf(" 0 1 2\n");
for(i = 0; i < 3; i++) {
printf("%d ", i);
for(j = 0; j < 3; j++) {
printf("| %c ", board[i][j]);
}
printf("|\n");
}
}
int check_win(char c) {
int i, j;
// 检查行
for(i = 0; i < 3; i++) {
if(board[i][0] == c && board[i][1] == c && board[i][2] == c) {
return 1;
}
}
// 检查列
for(j = 0; j < 3; j++) {
if(board[0][j] == c && board[1][j] == c && board[2][j] == c) {
return 1;
}
}
// 检查对角线
if(board[0][0] == c && board[1][1] == c && board[2][2] == c) {
return 1;
}
if(board[0][2] == c && board[1][1] == c && board[2][0] == c) {
return 1;
}
return 0;
}
int play(char c, int row, int col) {
if(row < 0 || row > 2 || col < 0 || col > 2) {
printf("输入错误!请输入行和列的范围在0到2之间的整数。\n");
return 0;
}
if(board[row][col] != ' ') {
printf("(%d, %d)已经有棋子了,请重新输入。\n", row, col);
return 0;
}
board[row][col] = c;
return 1;
}
int main() {
int row, col, i;
char player;
init_board(); // 初始化棋盘
print_board(); // 打印初始棋盘
for(i = 0; i < 9; i++) {
player = (i % 2 == 0) ? 'X' : 'O'; // 判断当前玩家
printf("请%c玩家输入下棋的位置(行 列):", player);
scanf("%d %d", &row, &col);
if(play(player, row, col)) { // 如果下棋成功
print_board(); // 打印当前棋盘
if(check_win(player)) { // 如果当前玩家胜利
printf("%c玩家获胜!\n", player);
return 0;
}
} else { // 如果下棋失败
i--; // 回到上一步
}
}
printf("平局!\n"); // 没有获胜者,平局
return 0;
}
```
该代码使用了一个二维字符数组 `board` 来表示棋盘,其中空格表示该位置没有棋子,'X'表示玩家1的棋子,'O'表示玩家2的棋子。`init_board()` 函数用于初始化棋盘,`print_board()` 函数用于打印当前棋盘。`check_win()` 函数用于检查某个玩家是否胜利,如果是则返回1,否则返回0。`play()` 函数用于玩家下棋,如果下棋成功则返回1,否则返回0。在 `main()` 函数中,使用一个循环来交替让两个玩家下棋,直到有一个玩家获胜或者棋盘下满。
阅读全文