帮我用c语言写一个五子棋小游戏
时间: 2023-11-18 13:04:52 浏览: 122
C语言写的五子棋游戏
好的,以下是一个简单的控制台五子棋游戏的 C 语言代码,希望可以帮到你:
```c
#include <stdio.h>
#define ROWS 15
#define COLS 15
// 棋盘数组
char board[ROWS][COLS];
// 用于记录当前玩家
char currentPlayer = 'X';
// 初始化棋盘
void initBoard()
{
int i, j;
for (i = 0; i < ROWS; i++) {
for (j = 0; j < COLS; j++) {
board[i][j] = '-';
}
}
}
// 打印棋盘
void printBoard()
{
int i, j;
printf("\n");
for (i = 0; i < ROWS; i++) {
for (j = 0; j < COLS; j++) {
printf("%c ", board[i][j]);
}
printf("\n");
}
}
// 判断当前位置是否可落子
int isValidMove(int row, int col)
{
if (row < 0 || row >= ROWS || col < 0 || col >= COLS) {
return 0;
}
if (board[row][col] != '-') {
return 0;
}
return 1;
}
// 判断是否有玩家获胜
int isWin()
{
int i, j, count;
// 横向检查
for (i = 0; i < ROWS; i++) {
count = 0;
for (j = 0; j < COLS; j++) {
if (board[i][j] == currentPlayer) {
count++;
if (count == 5) {
return 1;
}
} else {
count = 0;
}
}
}
// 纵向检查
for (j = 0; j < COLS; j++) {
count = 0;
for (i = 0; i < ROWS; i++) {
if (board[i][j] == currentPlayer) {
count++;
if (count == 5) {
return 1;
}
} else {
count = 0;
}
}
}
// 左上到右下斜线检查
for (i = 0; i <= ROWS - 5; i++) {
for (j = 0; j <= COLS - 5; j++) {
count = 0;
while (count < 5 && board[i + count][j + count] == currentPlayer) {
count++;
}
if (count == 5) {
return 1;
}
}
}
// 左下到右上斜线检查
for (i = 4; i < ROWS; i++) {
for (j = 0; j <= COLS - 5; j++) {
count = 0;
while (count < 5 && board[i - count][j + count] == currentPlayer) {
count++;
}
if (count == 5) {
return 1;
}
}
}
return 0;
}
int main()
{
int row, col;
initBoard();
printBoard();
while (1) {
printf("玩家 %c,请输入您要落子的位置(格式为 行 列,例如:3 4):", currentPlayer);
scanf("%d %d", &row, &col);
if (isValidMove(row, col)) {
board[row][col] = currentPlayer;
printBoard();
if (isWin()) {
printf("恭喜玩家 %c 获胜!\n", currentPlayer);
break;
}
if (currentPlayer == 'X') {
currentPlayer = 'O';
} else {
currentPlayer = 'X';
}
} else {
printf("无效的位置,请重新输入。\n");
}
}
return 0;
}
```
该代码实现了一个简单的五子棋游戏,可以在控制台中运行。玩家轮流落子,当有任意一方连成五子时,游戏结束并宣布胜利者。
阅读全文