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; } }
程序完成
四、演示结果
五、源代码
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语言如何编写五子棋游戏”这篇文章对大家有帮助,同时也希望大家多多支持恰卡编程网,关注恰卡编程网行业资讯频道,更多相关知识等着你来学习!
目录
推荐阅读
0 条评论
本站已关闭游客评论,请登录或者注册后再评论吧~