五子棋游戏 C语言 代码 源代码

五子棋游戏 C语言 代码 源代码


2024年5月26日发(作者:)

#include

#include

#define m 30

int main (void)

{

int count;//计数器算横纵行的结果

int w,h;

int u;

int l;

int i,size;//i声明步数。size声明

int r[m][m] = {0};//数组声明(棋子位置)

int x, y;//声明落子坐标

int n;//声明棋盘大小n

char a[20],b[20];

printf ("请输入棋盘大小nn");//编辑棋盘直到棋盘长度宽度大于4小于30

scanf ("%d", &n);

if (n<=4 || n>m)

{

do

{

printf ("输入的棋盘大小:4

scanf ("%d", &n);

}while (n<=4 || n>m);

}

getchar ();//声明玩家

printf ("请输入玩家1姓名:n");

gets(a);

printf ("请输入玩家2姓名:n");

gets(b);

for ( i = 1, size = n*n;i <= size; i++)//编辑棋盘

{

if (i%2 == 1)//如果i能被2整除,为玩家a相关信息

{

do//玩家a棋子信息

{

printf ("%s该你下棋了,第%d个棋子n", a, i);

scanf ("%d%d", &x, &y);

if (x > n || x < 0)//判断坐标是否在棋盘内,如果不是则重新输入

{

do

{

printf ("0<=横坐标<=%d请重新输入横坐标n", n);

scanf ("%d", &x);

}

while (x>m || x<0);

}

if (y > n || y < 0)//判断坐标是否在棋盘内,如果不是则重新输入

{

do

{

printf ("0<=纵坐标<=%d请重新输入纵坐标n", n);

scanf ("%d", &y);

}while (y < 0 || y > n);

}

}while ((r[x][y] == 1 && (printf ("这个位置上已经有棋子了,请重新输入n")))|| r[x][y]

== 2&& (printf ("这个位置上已经有棋子了,请重新输入n")) );

r[x][y] = 1;

for (u = 0;u < n; u++)//不同情况下判断玩家a获胜方式

{

for (l = 0;l < n;l++)

{

count = 0;

for (w = u,h = l;r[w][h] == 1 && h < n; h++)

count++;

if (count == 5)

{

printf ("%s是胜利者n", a);

goto e;//直接跳转,其余代码不在运行

count = 0;

for (w = u, h = l; r[w][h] == 1 && w < n; w++)

count ++;

if (count == 5)

{

printf ("%s是胜利者n", a);

goto e;

}

count = 0;

for (w = u,h = l; r[w][h] == 1 && w < n && h

count++;

if (count == 5)

{

printf ("%s是胜利者n", a);

goto e;

}

count = 0;

for (w =u ,h =l;r[w][h] == 1 && h > 0;h--)

count++;

if (count == 5)

{

printf ("%s是胜利者n", a);

goto e;

}

}

}

}

system("cls");

for (int j = n;j>=0;j--)

{

printf ("%-2d", j);

for (int k = 0;k < n;k++)//画棋盘,声明两玩家棋子图片

{

if (r[k][j] == 0)

printf ("╋");

else if(r[k][j] == 1)

printf ("○");

else if (r[k][j] == 2)

printf ("●"); }

printf ("n");

}

printf (" ");

for (int k = 0;k < n;k++)

printf ("%-2d", k);

}

else if (i%2 == 0)//如果i不能被2整除,为玩家b相关信息

{

do

{

printf ("n%s该你下棋了,第%d个棋子n", b, i);

scanf ("%d%d", &x, &y);

if (x > n || x < 0)

{

do

{

printf ("0<=横坐标<=%d请重新输入横坐标n", n);

scanf ("%d", &x);

}while (x>n || x<0);

}

if (y >n|| y < 0)

{

do

{

printf ("0<=纵坐标<=%d请重新输入纵坐标n", n);

scanf ("%d", &y);

}while (y < 0 || y > n);

}

}while ((r[x][y] == 1 && (printf ("这个位置上已经有棋子了,请重新输入n")))|| r[x][y]

== 2&& (printf ("这个位置上已经有棋子了,请重新输入n")) );

r[x][y] = 2;

system("cls");

for (int j = n;j>=0;j--)

{

printf ("%-2d", j);

for (int k = 0;k < n;k++)

{

if (r[k][j] == 0)

printf ("╋");

else if(r[k][j] == 1)

printf ("○");

else if (r[k][j] == 2)

printf ("●");

}

printf ("n");

}

printf (" ");

for (int k = 0;k < n;k++)

printf ("%-2d", k); printf ("n");

count = 0;

for (u = 0;u < n; u++)

{

for (l = 0;l < n;l++)

{

count = 0;

for (w = u,h = l;r[w][h] == 2 && h < n; h++)

count++;

if (count == 5)

{

printf ("%s是胜利者n", b);

goto e;

}

count = 0;

for (w = u, h = l; r[w][h] == 2 && w < n; w++)

count ++;

if (count == 5)

{

printf ("%s是胜利者n", b);

goto e;

}

count = 0;

for (w = u,h = l; r[w][h] == 2 && w < n && h

count++;

if (count == 5)

{

printf ("%s是胜利者n", b);

goto e;

}

count = 0;

for (w =u ,h =l;r[w][h] == 2 && h > 0;h--)

count++;

if (count == 5)

{

printf ("%s是胜利者n", b);

goto e;

}

}

}

}

}

e: for (int j = n;j>=0;j--)//游戏结束界面 棋盘固定 重新显示

{

printf ("%-2d", j);

for (int k = 0;k < n;k++)

{

if (r[k][j] == 0)

printf ("╋");

else if(r[k][j] == 1)

printf ("○");

else if (r[k][j] == 2)

printf ("●");

}

printf ("n");

}

printf (" ");

for (int k = 0;k < n;k++)

printf ("%-2d", k); printf ("n");

printf ("a游戏愉快 ,Powered by Techmessagern");//结束语句

return 0;

}


发布者:admin,转转请注明出处:http://www.yc00.com/web/1716735135a2730801.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信