写一个五子棋游戏,用C语言
时间: 2023-05-19 16:04:24 浏览: 49
非常感谢您的提问。以下是一个简单的五子棋游戏的C语言代码:
#include <stdio.h>
#include <stdlib.h>
#define ROWS 15
#define COLS 15
char board[ROWS][COLS]; // 棋盘
void init_board() { // 初始化棋盘
int i, j;
for (i = 0; i < ROWS; i++) {
for (j = 0; j < COLS; j++) {
board[i][j] = '+';
}
}
}
void print_board() { // 打印棋盘
int i, j;
printf(" ");
for (i = 0; i < COLS; i++) {
printf("%d ", i);
}
printf("\n");
for (i = 0; i < ROWS; i++) {
printf("%d ", i);
for (j = 0; j < COLS; j++) {
printf("%c ", board[i][j]);
}
printf("\n");
}
}
int is_win(char c) { // 判断是否胜利
int i, j, k;
for (i = 0; i < ROWS; i++) {
for (j = 0; j < COLS; j++) {
if (board[i][j] == c) {
for (k = 1; k < 5; k++) {
if (i + k < ROWS && board[i + k][j] == c &&
i + k - 4 >= 0 && board[i + k - 1][j] == c &&
i + k - 2 >= 0 && board[i + k - 2][j] == c &&
i + k - 3 >= 0 && board[i + k - 3][j] == c) {
return 1;
}
if (j + k < COLS && board[i][j + k] == c &&
j + k - 4 >= 0 && board[i][j + k - 1] == c &&
j + k - 2 >= 0 && board[i][j + k - 2] == c &&
j + k - 3 >= 0 && board[i][j + k - 3] == c) {
return 1;
}
if (i + k < ROWS && j + k < COLS && board[i + k][j + k] == c &&
i + k - 4 >= 0 && j + k - 4 >= 0 && board[i + k - 1][j + k - 1] == c &&
i + k - 2 >= 0 && j + k - 2 >= 0 && board[i + k - 2][j + k - 2] == c &&
i + k - 3 >= 0 && j + k - 3 >= 0 && board[i + k - 3][j + k - 3] == c) {
return 1;
}
if (i + k < ROWS && j - k >= 0 && board[i + k][j - k] == c &&
i + k - 4 >= 0 && j - k + 4 < COLS && board[i + k - 1][j - k + 1] == c &&
i + k - 2 >= 0 && j - k + 2 < COLS && board[i + k - 2][j - k + 2] == c &&
i + k - 3 >= 0 && j - k + 3 < COLS && board[i + k - 3][j - k + 3] == c) {
return 1;
}
}
}
}
}
return 0;
}
int main() {
int x, y, i = 0;
char c = 'X';
init_board();
print_board();
while (1) {
printf("请%c方输入坐标(x,y): ", c);
scanf("%d,%d", &x, &y);
if (x < 0 || x >= ROWS || y < 0 || y >= COLS) {
printf("坐标不合法,请重新输入!\n");
continue;
}
if (board[x][y] != '+') {
printf("该位置已经有棋子,请重新输入!\n");
continue;
}
board[x][y] = c;
print_board();
if (is_win(c)) {
printf("%c方胜利!\n", c);
break;
}
i++;
if (i == ROWS * COLS) {
printf("平局!\n");
break;
}
c = (c == 'X' ? 'O' : 'X');
}
return 0;
}
希望这个代码对您有所帮助!