c语言踩坑,C语言五子棋gobang_踩坑

这是一个简单的五子棋游戏程序,使用C语言编写。程序包括初始化游戏、打印棋盘、玩家轮流下棋以及判断胜负的功能。玩家通过输入行号和列号放置棋子,当一方连成五子时游戏结束,宣布胜者。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#include

#include

#define N 15

int chessboard[N + 1][N + 1] = { 0 };

int whoseTurn = 0;

void initGame(void);

void printChessboard(void);

void playChess(void);

int judge(int x, int y);

int main(void)

{

initGame();//自定义函数,用来初始化游戏,即欢迎界面

while (1)

{

whoseTurn++;

playChess();

}

return 0;

}

void initGame(void)

{

char c;

printf(" 欢迎进入游戏:\n");

c = getchar();

if ('y' != c && 'Y' != c)

exit(0);

system("cls");

printChessboard();

}

void printChessboard(void)

{

int i, j;

for (i = 0; i <= N; i++)

{

for (j = 0; j <= N; j++)

{

if (0 == i)

printf("=", j);

else if (0 == j)

printf("=", i);

else if (1 == chessboard[i][j])

printf(" ●");

else if (2 == chessboard[i][j])

printf("  O");

else

printf("  *");

}

printf("\n");

}

}

void playChess(void)

{

int i, j, winner;

if (1 == whoseTurn % 2)

{

printf("轮到玩家1,请输入棋子位置,格式为:行号+空格+列号:\n");

scanf_s("%d %d", &i, &j);

while (chessboard[i][j] != 0)

{

printf("位置不可用\n");

scanf_s("%d %d", &i, &j);

}

chessboard[i][j] = 1;

}

else

{

printf("轮到玩家2,请输入棋子位置,格式为:行号+空格+列号:\n");

scanf_s("%d %d", &i, &j);

while (chessboard[i][j] != 0)

{

printf("位置不可用\n");

scanf_s("%d %d", &i, &j);

}

chessboard[i][j] = 2;

}

system("cls");

printChessboard();

if (judge(i, j))

{

if (1 == whoseTurn % 2)

{

printf("玩家1胜利\n");

exit(0);

}

else

{

printf("玩家2胜利\n");

exit(0);

}

}

}

int judge(int x, int y)

{

int i, j;

int t = 2 - whoseTurn % 2;

for (i = x - 4, j = y; i <= x; i++)

{

if (i >= 1 && i <= N - 4 && t ==

chessboard[i][j] && t == chessboard[i + 1][j] && t

== chessboard[i + 2][j] && t == chessboard[i + 3][j]

&& t == chessboard[i + 4][j])

return 1;

}

for (i = x, j = y - 4; j <= y; j++)

{

if (j >= 1 && j <= N - 4 && t ==

chessboard[i][j] && t == chessboard[i][j + 1] && t

== chessboard[i][j + 2] && t == chessboard[i][j + 3]

&& t == chessboard[i][j + 4])

return 1;

}

for (i = x - 4, j = y - 4; i <= x, j <= y; i++,

j++)

{

if (i >= 1 && i <= N - 4 && j >= 1

&& j <= N - 4 && t == chessboard[i][j]

&& t == chessboard[i + 1][j + 1] && t ==

chessboard[i + 2][j + 2] && t == chessboard[i + 3][j + 3]

&& t == chessboard[i + 4][j + 4])

return 1;

}

for (i = x + 4, j = y - 4; i >= 1, j <= y; i--,

j++)

{

if (i >= 1 && i <= N - 4 && j >= 1

&& j <= N - 4 && t == chessboard[i][j]

&& t == chessboard[i - 1][j + 1] && t ==

chessboard[i - 2][j + 2] && t == chessboard[i - 3][j + 3]

&& t == chessboard[i - 4][j + 4])

return 1;

}

return 0;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值