五子棋小游戏

今天在Linux下自制五子棋

代码内容:

#include<stdio.h>

#include<stdlib.h>

#include<stdbool.h>

int arr[15][15]={};

int x=0,y=0;

int cnt=1;//判断该回合是黑棋还是白棋,落子之后cnt+1

//开局落子,cnt为2。则该落子为白棋,然后判断是否有五子连珠

bool win=false;//游戏是否结束的标志,true时结束

void rand_a(void);//棋盘

void show(void);//展示棋盘,落下一次则更新一次

void play(void);//白棋先手,黑棋后手,依次下棋

void is_win(void);//判断是否出现五子连珠,有则程序结束,无则回到play函数交换选手

int main()

{

rand_a();

system("clear");

show();

while(1)

{

play();

system("clear");

show();

is_win();

if(win)

{

printf("游戏结束\n");

return 0;

}

}

}

void rand_a(void)

{

for(int i=0;i<15;i++)

{

for(int j=0;j<15;j++)

{

arr[i][j]==0;

}

}

}

void show()

{

for(int i=0;i<15;i++)

{

for(int j=0;j<15;j++)

{

if(arr[i][j]==0)

{

printf("* ");

}

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

{

printf("@ ");

}

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

{

printf("$ ");

}

}

printf("\n");

}

}

void play(void)

{

while(1)

{

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

if(x<1||x>15||y<1||y>15)

{

printf("位置错误,请重新选择\n");

}

else if(arr[x-1][y-1]==1||arr[x-1][y-1]==2)

{

printf("该位置有棋子,请重新选择\n");

}

else

{

cnt++;

break;

}

}

if(cnt%2==1)

{

arr[x-1][y-1]=1;

}

else if(cnt%2==0)

{

arr[x-1][y-1]=2;

}

}

void is_win(void)

{

//查询某一行是否有五个

for(int i=0;i<15;i++)

{

for(int j=0;j<11;j++)

{

if(arr[i][j]==1&&arr[i][j+1]==1&&arr[i][j+2]==1&&arr[i][j+3]==1&&arr[i][j+4]==1)

{

printf("黑棋获胜\n");

win=true;

break;

}

if(arr[i][j]==2&&arr[i][j+1]==2&&arr[i][j+2]==2&&arr[i][j+3]==2&&arr[i][j+4]==2)

{

printf("白棋获胜\n");

win=true;

break;

}

}

}

//查询某一列是否有五个

for(int i=0;i<11;i++)

{

for(int j=0;j<15;j++)

{

if(arr[i][j]==1&&arr[i+1][j]==1&&arr[i+2][j]==1&&arr[i+3][j]==1&&arr[i+4][j]==1)

{

printf("黑棋获胜\n");

win=true;

break;

}

if(arr[i][j]==2&&arr[i+1][j]==2&&arr[i+2][j]==2&&arr[i+3][j]==2&&arr[i+4][j]==2)

{

printf("白棋获胜\n");

win=true;

break;

}

}

}

//查询右下斜线是否有五个

for(int i=0;i<11;i++)

{

for(int j=0;j<11;j++)

{

if(arr[i][j]==1&&arr[i+1][j+1]==1&&arr[i+2][j+2]==1&&arr[i+3][j+3]==1&&arr[i+4][j+4]==1)

{

printf("黑棋获胜\n");

win=true;

break;

}

if(arr[i][j]==2&&arr[i+1][j+1]==2&&arr[i+2][j+2]==2&&arr[i+3][j+3]==2&&arr[i+4][j+4]==2)

{

printf("白棋获胜\n");

win=true;

break;

}

}

}

//查询左下斜线是否有五个

for(int i=0;i<11;i++)

{

for(int j=4;j<15;j++)

{

if(arr[i][j]==1&&arr[i+1][j-1]==1&&arr[i+2][j-2]==1&&arr[i+3][j-3]==1&&arr[i+4][j-4]==1)

{

printf("黑棋获胜\n");

win=true;

break;

}

if(arr[i][j]==2&&arr[i+1][j-1]==2&&arr[i+2][j-2]==2&&arr[i+3][j-3]==2&&arr[i+4][j-4]==2)

{

printf("白棋获胜\n");

win=true;

break;

}

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值