C语言如何编写五子棋游戏

这篇文章主要介绍了C语言如何编写五子棋游戏,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

一、构建棋盘

首先可以用一个二维数组来构建棋盘,下标表示位置,内容表示黑子白子或者空位。当数组内容为1时,该位置为白字,当数组为0时,该位置为白子,空位输出+

intw[11][11],flag=0;
inta,b;

for(intk=0;k<11;k++)
printf("第%d列\t",k);
printf("\n");
for(inti=0;i<11;i++){
for(intj=0;j<11;j++){
if(w[i][j]==0)printf("黑\t");
elseif(w[i][j]==1)printf("白\t");
elseprintf("+\t");
}
printf("第%d行\n\n",i);
}

二、判断位置超范围与错误输入

当输入的棋子坐标超出范围或者该位置已经存在棋子,则再次输入棋子坐标。其中flag作为标志作为判别黑手白手的标志。

if(flag==0){
printf("黑色下棋\n");
scanf("%d%d",&a,&b);
while(a<0||a>10||b<0||b>10){
printf("此位置超出范围,请重新输入:");
scanf("%d%d",&a,&b);
}
while(w[a][b]==0||w[a][b]==1)
{
printf("此位置已有棋子,请重新输入:");
scanf("%d%d",&a,&b);
}
flag=1;
w[a][b]=0;
}
else{
printf("白色下棋\n");
scanf("%d%d",&a,&b);
while(a<0||a>10||b<0||b>10){
printf("此位置超出范围,请重新输入:");
scanf("%d%d",&a,&b);
}
while(w[a][b]==0||w[a][b]==1)
{
printf("此位置已有棋子,请重新输入:");
scanf("%d%d",&a,&b);
}

三、判断胜负

在五子棋中,出现五个棋子排成一排或者一列或者斜排即可判为胜出。每当落下一个棋子,对该棋子前后上下斜排五个棋子进行判别,超过五个连续的一样颜色的棋子则胜出。

intA=1,B=1,jieguo=0,C=1,D=1;
intx=1,y=1,m=1,n=1;
if(w[a][b]==1){
for(inti=1;i<5;i++){
if(w[a][b+i]==1)A++;
elsebreak;
}
for(inti=1;i<5;i++){
if(w[a][b-i]==1)A++;
elsebreak;
}
for(inti=1;i<5;i++)
{
if(w[a+i][b]==1)C++;
elsebreak;
}
for(inti=1;i<5;i++)
{
if(w[a-i][b]==1)C++;
elsebreak;
}
if(A>4||C>4)jieguo=1;//白棋胜利标志
else{
for(inti=1;i<5;i++){
if(w[a+i][b+i]==1)x++;
elsebreak;
}
for(inti=1;i<5;i++){
if(w[a-i][b-i]==1)x++;
elsebreak;
}
for(inti=1;i<5;i++)
{
if(w[a+i][b-i]==1)y++;
elsebreak;
}
for(inti=1;i<5;i++)
{
if(w[a-i][b+i]==1)y++;
elsebreak;
}
if(x>4||y>4)jieguo=1;
}
}
if(w[a][b]==0){
for(inti=1;i<5;i++){
if(w[a][b+i]==0)B++;
elsebreak;
}
for(inti=1;i<5;i++){
if(w[a][b-i]==0)B++;
elsebreak;
}
for(inti=1;i<5;i++)
{
if(w[a+i][b]==0)D++;
elsebreak;
}
for(inti=1;i<5;i++)
{
if(w[a-i][b]==0)D++;
elsebreak;
}
if(B>4||D>4)jieguo=2;//黑棋胜利标志
else{
for(inti=1;i<5;i++){
if(w[a+i][b+i]==0)m++;
elsebreak;
}
for(inti=1;i<5;i++){
if(w[a-i][b-i]==0)m++;
elsebreak;
}
for(inti=1;i<5;i++)
{
if(w[a+i][b-i]==0)n++;
elsebreak;
}
for(inti=1;i<5;i++)
{
if(w[a-i][b+i]==0)n++;
elsebreak;
}
if(m>4||n>4)jieguo=2;
}
}

程序完成

四、演示结果

C语言如何编写五子棋游戏

五、源代码

intmain(){
intw[11][11],flag=0;
inta,b;
while(1){
if(flag==0){
printf("黑色下棋\n");
scanf("%d%d",&a,&b);
while(a<0||a>10||b<0||b>10){
printf("此位置超出范围,请重新输入:");
scanf("%d%d",&a,&b);
}
while(w[a][b]==0||w[a][b]==1)
{
printf("此位置已有棋子,请重新输入:");
scanf("%d%d",&a,&b);
}
flag=1;
w[a][b]=0;
}
else{
printf("白色下棋\n");
scanf("%d%d",&a,&b);
while(a<0||a>10||b<0||b>10){
printf("此位置超出范围,请重新输入:");
scanf("%d%d",&a,&b);
}
while(w[a][b]==0||w[a][b]==1)
{
printf("此位置已有棋子,请重新输入:");
scanf("%d%d",&a,&b);
}
flag=0;
w[a][b]=1;
}

intA=1,B=1,jieguo=0,C=1,D=1;
intx=1,y=1,m=1,n=1;
if(w[a][b]==1){
for(inti=1;i<5;i++){
if(w[a][b+i]==1)A++;
elsebreak;
}
for(inti=1;i<5;i++){
if(w[a][b-i]==1)A++;
elsebreak;
}
for(inti=1;i<5;i++)
{
if(w[a+i][b]==1)C++;
elsebreak;
}
for(inti=1;i<5;i++)
{
if(w[a-i][b]==1)C++;
elsebreak;
}
if(A>4||C>4)jieguo=1;//白棋胜利标志
else{
for(inti=1;i<5;i++){
if(w[a+i][b+i]==1)x++;
elsebreak;
}
for(inti=1;i<5;i++){
if(w[a-i][b-i]==1)x++;
elsebreak;
}
for(inti=1;i<5;i++)
{
if(w[a+i][b-i]==1)y++;
elsebreak;
}
for(inti=1;i<5;i++)
{
if(w[a-i][b+i]==1)y++;
elsebreak;
}
if(x>4||y>4)jieguo=1;
}
}
if(w[a][b]==0){
for(inti=1;i<5;i++){
if(w[a][b+i]==0)B++;
elsebreak;
}
for(inti=1;i<5;i++){
if(w[a][b-i]==0)B++;
elsebreak;
}
for(inti=1;i<5;i++)
{
if(w[a+i][b]==0)D++;
elsebreak;
}
for(inti=1;i<5;i++)
{
if(w[a-i][b]==0)D++;
elsebreak;
}
if(B>4||D>4)jieguo=2;//黑棋胜利标志
else{
for(inti=1;i<5;i++){
if(w[a+i][b+i]==0)m++;
elsebreak;
}
for(inti=1;i<5;i++){
if(w[a-i][b-i]==0)m++;
elsebreak;
}
for(inti=1;i<5;i++)
{
if(w[a+i][b-i]==0)n++;
elsebreak;
}
for(inti=1;i<5;i++)
{
if(w[a-i][b+i]==0)n++;
elsebreak;
}
if(m>4||n>4)jieguo=2;
}
}

for(intk=0;k<11;k++)
printf("第%d列\t",k);
printf("\n");
for(inti=0;i<11;i++){
for(intj=0;j<11;j++){
if(w[i][j]==0)printf("黑\t");
elseif(w[i][j]==1)printf("白\t");
elseprintf("+\t");
}
printf("第%d行\n\n",i);
}
if(jieguo==1){
printf("白棋胜利");
break;
}
if(jieguo==2){
printf("黑棋胜利");
break;
}
}
return0;
}

感谢你能够认真阅读完这篇文章,希望小编分享的“C语言如何编写五子棋游戏”这篇文章对大家有帮助,同时也希望大家多多支持恰卡编程网,关注恰卡编程网行业资讯频道,更多相关知识等着你来学习!

发布于 2021-06-13 23:19:26
收藏
分享
海报
0 条评论
181
上一篇:Java中怎么使用Executor框架 下一篇:adb push中文路径文件名丢失后缀如何解决
目录

    0 条评论

    本站已关闭游客评论,请登录或者注册后再评论吧~

    忘记密码?

    图形验证码