上次實作了控制臺井字棋,意猶未盡,又做了一個簡陋垃圾五子棋,記錄昨晚在瞎忙什么
#include<stdio.h>
char map[15][15];
void dayin()
{
int i,j;
printf(" ");
for(i=0;i<15;i++)
{
printf("%d\t",i+1);
}
printf("\n");
for(i=0;i<15;i++)
{
printf("%d ",i+1);
for(j=0;j<15;j++)
{
printf("%c\t",map[i][j]);
}
printf("\n");
}
}
int judgeerror(int a,int b)
{
if(map[a-1][b-1]=='X' || map[a-1][b-1]=='O' || a>15 || a<1 || b>15 || b<1)
{
return 1;
}
else
{
return 0;
}
}
int judgewin1()
{
int i,j;
for(i=0;i<15;i++) //嵌套for回圈檢查橫著的勝利情況
{
for(j=0;j<11;j++) //j到11就好了,因為在過去陣列就會越界了
{
if(map[i][j]+map[i][j+1]+map[i][j+2]+map[i][j+3]+map[i][j+4]==440)
return 1;
}
}
for(j=0;j<15;j++) //檢查豎著勝利的情況
{
for(i=0;i<11;i++)
{
if(map[i][j]+map[i+1][j]+map[i+2][j]+map[i+3][j]+map[i+4][j]==440)
return 1;
}
}
for(i=0;i<11;i++) //判斷右下勝利的情況
{
for(j=0;j<11;j++)
{
if(map[i][j]+map[i+1][j+1]+map[i+2][j+2]+map[i+3][j+3]+map[i+4][j+4]==440)
return 1;
}
}
for(i=4;i<15;i++) //判斷左下勝利的情況
{
for(j=0;i<11;i++)
{
if(map[i][j]+map[i-1][j+1]+map[i-2][j+2]+map[i-3][j+3]+map[i-4][j+4]==440)
return 1;
}
}
}
int judgewin2()
{
int i,j;
for(i=0;i<15;i++) //嵌套for回圈檢查橫著的勝利情況
{
for(j=0;j<11;j++) //j到11就好了,因為在過去陣列就會越界了
{
if(map[i][j]+map[i][j+1]+map[i][j+2]+map[i][j+3]+map[i][j+4]==395)
return 1;
}
}
for(j=0;j<15;j++) //檢查豎著勝利的情況
{
for(i=0;i<11;i++)
{
if(map[i][j]+map[i+1][j]+map[i+2][j]+map[i+3][j]+map[i+4][j]==395)
return 1;
}
}
for(i=0;i<11;i++) //判斷右下勝利的情況
{
for(j=0;j<11;j++)
{
if(map[i][j]+map[i+1][j+1]+map[i+2][j+2]+map[i+3][j+3]+map[i+4][j+4]==395)
return 1;
}
}
for(i=4;i<15;i++) //判斷左下勝利的情況
{
for(j=0;j<11;j++)
{
if(map[i][j]+map[i-1][j+1]+map[i-2][j+2]+map[i-3][i+3]+map[i-4][i+4]==395)
return 1;
}
}
}
int main()
{
int i,j,a,b;
for(i=0;i<15;i++)
for(j=0;j<15;j++)
{
map[i][j]='*';
}
printf("\n五子棋游戲開始啦\n");
dayin();
for(i=0;i<225;i++)
{
if(i%2==0)
{
out1:
printf("輪到玩家一下棋,請輸入落子的坐標且用空格隔開");
scanf("%d %d",&a,&b);
if(judgeerror(a,b)==1)
{
printf("你下錯啦小笨蛋!\n");
goto out1;
}
map[a-1][b-1]='X';
dayin();
}
else
{
out2:
printf("輪到玩家二下棋,請輸入落子的坐標且用空格隔開");
scanf("%d %d",&a,&b);
if(judgeerror(a,b)==1)
{
printf("你下錯啦小笨蛋!\n");
goto out2;
}
map[a-1][b-1]='O';
dayin();
}
if(judgewin1()==1)
{
printf("玩家一贏了");
break;
}
if(judgewin2()==1)
{
printf("玩家二贏了");
break;
}
}
return 0;
}

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/241427.html
標籤:其他
