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条)