失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 双人五子棋游戏用C++实现

双人五子棋游戏用C++实现

时间:2024-03-06 17:05:11

相关推荐

双人五子棋游戏用C++实现

双人五子棋游戏的实现(C++)

实现思路:

用二维数组创建一个棋盘

比较轮到哪个玩家下棋

判断下子位置是否已经有棋子,有棋子的话就重下该子

判断竖直,水平,左斜,右斜是否有连成5个子的情况

(右斜左上方子的范围是水平1~16竖直1~16,左斜右上方子范围是水平5~20,竖直5~20)

#include <iostream>#include <algorithm>using namespace std;int turn=1;char qipan[23][23];char exchange;int calsym=0;char x_axis,y_axis;int xs,ys;int calculate(int pin){//比较棋子是否连成5个for(int a=1;a<=20;a++){for(int b=1;b<=16;b++){if(qipan[b][a]==qipan[b+1][a]&&qipan[b+1][a]==qipan[b+2][a]&&qipan[b+2][a]==qipan[b+3][a]&&qipan[b+3][a]==qipan[b+4][a]&&qipan[b][a]!='+'){//水平比较 for(int i=0;i<=20;i++){//列 for(int j=0;j<=20;j++){//行 cout<<qipan[j][i]<<" ";}cout<<endl;}if(pin){cout<<"\nA胜利了\n";system("pause");} else{cout<<"\nB胜利了\n"; system("pause");}}else{if(qipan[a][b]==qipan[a][b+1]&&qipan[a][b+1]==qipan[a][b+2]&&qipan[a][b+2]==qipan[a][b+3]&&qipan[a][b+3]==qipan[a][b+4]&&qipan[a][b]!='+'){//竖直比较 for(int i=0;i<=20;i++){//列 for(int j=0;j<=20;j++){//行 cout<<qipan[j][i]<<" ";}cout<<endl;}if(pin){cout<<"\nA胜利了\n";system("pause");} else{cout<<"\nB胜利了\n"; system("pause");}}else{for(int i=1;i<=16;i++){for(int j=1;j<=16;j++){if(qipan[i][j]==qipan[i+1][j+1]&&qipan[i+1][j+1]==qipan[i+2][j+2]&&qipan[i+2][j+2]==qipan[i+3][j+3]&&qipan[i+3][j+3]==qipan[i+4][j+4]&&qipan[i][j]!='+'){//右斜比较for(int cv=0;cv<=20;cv++){//列 for(int cf=0;cf<=20;cf++){//行 cout<<qipan[cf][cv]<<" ";}cout<<endl;}if(pin){cout<<"\nA胜利了\n";system("pause");} else{cout<<"\nB胜利了\n"; system("pause");}}else{if(qipan[4+i][4+j]==qipan[4+i-1][4+j+1]&&qipan[4+i-1][4+j+1]==qipan[4+i-2][4+j+2]&&qipan[4+i-2][4+j+2]==qipan[4+i-3][4+j+3]&&qipan[4+i-3][4+j+3]==qipan[4+i-4][4+j+4]&&qipan[i+4][j+4]!='+'){//左斜比较for(int i=0;i<=20;i++){//列 for(int j=0;j<=20;j++){//行 cout<<qipan[j][i]<<" ";}cout<<endl;}if(pin){cout<<"\nA胜利了\n";system("pause");} else{cout<<"\nB胜利了\n"; system("pause");}}} }}} }}} }int run(int back){//棋盘显示及下子for(int i=0;i<=20;i++){//列 for(int j=0;j<=20;j++){//行 cout<<qipan[j][i]<<" ";}cout<<endl;}if(back){cout<<"现在是A(O)的回合,请输入要下的棋的坐标,(先x轴)例:BB"<<endl;cin>>x_axis>>y_axis; if((qipan[(int)(x_axis-65)][(int)(y_axis-65)]=='X')||(qipan[(int)(x_axis-65)][(int)(y_axis-65)]=='O')){cout<<"落子重复,请重新下棋";_sleep(4*1000);system("cls");run(1);}xs=(int)(x_axis-65);ys=(int)(y_axis-65);qipan[xs][ys]='O';system("cls");calculate(back);run(0);}else{cout<<"现在是B(X)的回合,请输入要下的棋的坐标,(先x轴)例:BB"<<endl;cin>>x_axis>>y_axis; if((qipan[(int)(x_axis-65)][(int)(y_axis-65)]=='X')||(qipan[(int)(x_axis-65)][(int)(y_axis-65)]=='O')){cout<<"落子重复,请重新下棋";_sleep(4*1000);system("clear");run(0);}xs=(int)(x_axis-65);ys=(int)(y_axis-65);qipan[xs][ys]='X';system("cls");calculate(back);run(1);}}int main(){for(int c=1;c<=20;c++){for(int d=1;d<=20;d++){qipan[d][c]='+';//新建棋盘}}for(int c=0;c<=20;c++){qipan[0][c]=(char)(65+c);qipan[c][0]=(char)(65+c);//生成横纵坐标轴,转ASCII码}run(turn);//calculate();}

获取更多软件资源,探讨编程思路,分享软件代码欢迎加群

如果觉得《双人五子棋游戏用C++实现》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。