VS上编写五子棋游戏的C程序
时间: 2024-05-12 08:13:30 浏览: 11
以下是一个简单的五子棋游戏的C程序,仅供参考:
```
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#define ROW 15
#define COL 15
void init_board(char board[ROW][COL]);
void print_board(char board[ROW][COL]);
bool check_win(char board[ROW][COL], int row, int col, char ch);
int main()
{
char board[ROW][COL];
int row, col;
char ch = 'X'; // 先手玩家使用 X 标记
bool win = false;
init_board(board);
while (!win)
{
print_board(board);
printf("Player %c's turn, please enter the row and column (e.g. 1 2): ", ch);
scanf("%d %d", &row, &col);
if (board[row - 1][col - 1] == '-')
{
board[row - 1][col - 1] = ch;
win = check_win(board, row - 1, col - 1, ch);
ch = (ch == 'X') ? 'O' : 'X'; // 切换下一个玩家
}
else
{
printf("The position has already been taken, please choose another one.\n");
}
}
print_board(board);
printf("Player %c wins!\n", ch);
return 0;
}
// 初始化棋盘
void init_board(char board[ROW][COL])
{
for (int i = 0; i < ROW; i++)
{
for (int j = 0; j < COL; j++)
{
board[i][j] = '-';
}
}
}
// 打印棋盘
void print_board(char board[ROW][COL])
{
printf(" ");
for (int i = 1; i <= COL; i++)
{
printf("%-2d ", i);
}
printf("\n");
for (int i = 0; i < ROW; i++)
{
printf("%-2d ", i + 1);
for (int j = 0; j < COL; j++)
{
printf("%-2c ", board[i][j]);
}
printf("\n");
}
}
// 检查是否有玩家获胜
bool check_win(char board[ROW][COL], int row, int col, char ch)
{
int count = 0;
// 横向检查
for (int i = 0; i < COL; i++)
{
if (board[row][i] == ch)
{
count++;
}
else
{
count = 0;
}
if (count == 5)
{
return true;
}
}
count = 0;
// 纵向检查
for (int i = 0; i < ROW; i++)
{
if (board[i][col] == ch)
{
count++;
}
else
{
count = 0;
}
if (count == 5)
{
return true;
}
}
count = 0;
// 左上至右下检查
for (int i = row, j = col; i < ROW && j < COL; i++, j++)
{
if (board[i][j] == ch)
{
count++;
}
else
{
count = 0;
}
if (count == 5)
{
return true;
}
}
count = 0;
// 右上至左下检查
for (int i = row, j = col; i >= 0 && j < COL; i--, j++)
{
if (board[i][j] == ch)
{
count++;
}
else
{
count = 0;
}
if (count == 5)
{
return true;
}
}
return false;
}
```
注意:这只是一个简单的五子棋游戏程序,没有进行输入合法性检查等处理。在实际开发中,需要考虑更多的情况。