写一篇基于c语言的五子棋设计代码
时间: 2024-01-15 20:02:51 浏览: 91
好的,以下是基于C语言的五子棋设计代码:
```
#include <stdio.h>
#include <stdlib.h>
#define BOARD_SIZE 15
// 定义棋盘数组
char board[BOARD_SIZE][BOARD_SIZE];
// 初始化棋盘
void init_board() {
for (int i = 0; i < BOARD_SIZE; i++) {
for (int j = 0; j < BOARD_SIZE; j++) {
board[i][j] = '+';
}
}
}
// 打印棋盘
void print_board() {
printf(" ");
for (int i = 0; i < BOARD_SIZE; i++) {
printf("%2d ", i);
}
printf("\n");
for (int i = 0; i < BOARD_SIZE; i++) {
printf("%2d ", i);
for (int j = 0; j < BOARD_SIZE; j++) {
printf("%2c ", board[i][j]);
}
printf("\n");
}
}
// 判断是否下棋成功
int check_win(int x, int y, char player) {
// 横向判断
int count = 0;
for (int i = 0; i < BOARD_SIZE; i++) {
if (board[x][i] == player) {
count++;
if (count == 5) {
return 1;
}
} else {
count = 0;
}
}
// 竖向判断
count = 0;
for (int i = 0; i < BOARD_SIZE; i++) {
if (board[i][y] == player) {
count++;
if (count == 5) {
return 1;
}
} else {
count = 0;
}
}
// 斜向判断
count = 0;
for (int i = -4; i <= 4; i++) {
if (x + i < 0 || x + i >= BOARD_SIZE || y + i < 0 || y + i >= BOARD_SIZE) {
continue;
}
if (board[x + i][y + i] == player) {
count++;
if (count == 5) {
return 1;
}
} else {
count = 0;
}
}
// 反斜向判断
count = 0;
for (int i = -4; i <= 4; i++) {
if (x + i < 0 || x + i >= BOARD_SIZE || y - i < 0 || y - i >= BOARD_SIZE) {
continue;
}
if (board[x + i][y - i] == player) {
count++;
if (count == 5) {
return 1;
}
} else {
count = 0;
}
}
return 0;
}
int main() {
int x, y;
char player = 'O';
// 初始化棋盘
init_board();
// 打印棋盘
print_board();
// 游戏开始
while (1) {
// 获取玩家下棋位置
printf("请玩家 %c 输入下棋位置(x,y): ", player);
scanf("%d,%d", &x, &y);
// 判断下棋位置是否合法
if (x < 0 || x >= BOARD_SIZE || y < 0 || y >= BOARD_SIZE || board[x][y] != '+') {
printf("下棋位置不合法,请重新输入!\n");
continue;
}
// 下棋
board[x][y] = player;
// 打印棋盘
print_board();
// 判断是否胜利
if (check_win(x, y, player)) {
printf("玩家 %c 获胜!\n", player);
break;
}
// 切换玩家
player = (player == 'O') ? 'X' : 'O';
}
return 0;
}
```
以上代码实现了一个基本的五子棋游戏,在控制台中可以玩家与电脑对战,使用者可以根据需要进行修改和扩展。
阅读全文