C语言五子棋双人模式

五子棋用了二维数组和函数调用完成

第一个函数是菜单实现

第二个函数是初始化棋盘

第三个函数实现 画棋盘

第四个第五个函数都是玩家动 第五个函数跟第四个函数差不多就是改了棋子;

上面这个函数 判断那个玩家赢

 游戏实现

主函数:

 自己去试试看看;

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define high 10
#define wide 10
int menu(void)
{
int a;
printf("####################\n");
printf("       1.play       \n");
printf("       0.exit       \n");
printf("####################\n");
printf("please input nums:");
scanf("%d",&a);
return a;
}
void init_board(char board[high][wide],int r,int w)
{
int i=0,j=0;
for(i=0;i<r;i++)
{
for(j=0;j<w;j++)
{
board[i][j]=' ';
}
}
}
void draw_board(char board[high][wide],int r,int w)
{
int i=0;
for(i-0;i<r;i++)
{
int j=0;
for(j=0;j<w;j++)
{
printf(" %c ",board[i][j]);
if(j<w-1)
printf("|");
}
printf("\n");
if(i<r-1)
{
for(j=0;j<w;j++)
{
printf("---");
if(j<w-1)
printf("|");
}
}
putchar(10);
}

}
void player_one(char board[high][wide],int r,int w)
{
int x=0,y=0;
printf("player_one move input x and y:");
while(1)
{
scanf("%d %d",&x,&y);
if(x>=1&&y>=1&&x<=w&&y<=r)
{
if(board[x-1][y-1]==' ')
{
board[x-1][y-1]='@';
break;
}
else
{
printf("point have,please input:");
}
}
else
{
printf("fei fa point,please input:");
}
}
}
void player_two(char board[high][wide],int r,int w)
{
int x=0,y=0;
printf("player_two move input x and y:");
while(1)
{
scanf("%d %d",&x,&y);
if(x>=1&&y>=1&&x<=w&&y<=r)
{
if(board[x-1][y-1]==' ')
{
board[x-1][y-1]='o';
break;
}
else
{
printf("point have,please input:");
}
}
else
{
printf("fei fa point,please input:");
}
}
}

char mywin(char board[high][wide],int r,int w)
{
int i=0,j=0;
for(i=0;i<r;i++)
{
for(j=0;j<w;j++)
{
if(board[i][j]==board[i][j+1]&&board[i][j+1]==board[i][j+2]&&board[i][j+2]==board[i][j+3]&&board[i][j+3]==board[i][j+4]&&j+4<w&&board[i][j]!=' ')
{
return board[i][j];
}
if(board[i+1][j]==board[i][j]&&board[i+1][j]==board[i+2][j]&&board[i+2][j]==board[i+3][j]&&board[i+3][j]==board[i+4][j]&&i+4<r&&board[i][j]!=' ')
{
return board[i][j];
}
if(board[i][j]==board[i+1][j+1]&&board[i+1][j+1]==board[i+2][j+2]&&board[i+2][j+2]==board[i+3][j+3]&&board[i+3][j+3]==board[i+4][j+4]&&j+4<w&&i+4<r&&board[i][j]!=' ')
{
return board[i][j];
}

if(board[i+1][j-1]==board[i][j]&&board[i+1][j-1]==board[i+2][j-2]&&board[i+2][j-2]==board[i+3][j-3]&&board[i+3][j-3]==board[i+4][j-4]&&i+4<r&&j-4>=0&&board[i][j]!=' ')
{
return board[i][j];
}
}

}
}
void game(void)
{
char c;
char board[high][wide]={1};
init_board(board,high,wide);
draw_board(board,high,wide);
c=mywin(board,high,wide);
while(1)
{
player_one(board,high,wide);
draw_board(board,high,wide);
c=mywin(board,high,wide);
if(c=='@')
{
printf("player1 win!!!!!\n");
break;
}
player_two(board,high,wide);
draw_board(board,high,wide);
c=mywin(board,high,wide);
if(c=='o')
{
printf("player2 win!!!!!\n");
break;
}

}

}
int main(void)
{
system("clear");
int choice=1;
while(choice)
{
choice=menu();
switch(choice)
{
case 0:
printf("exit\n");
break;
case 1:
game();
break;
default:
printf("please input 1 or 0\n");
break;
}
}
return 0;
}

 include<stdio.h>

int main(void)

{        int a;

        return 0;

}

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值