双人五子棋游戏的实现(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++实现相关推荐

  1. C++实现图形界面双人五子棋游戏

    C++实现图形界面双人五子棋游戏 设计思路 定义一个Chess类,用16*16的二维数组的来表示一方棋手在棋局上的落子状态. 通过控制键盘←↑→↓来选择落点,getch()函数可获得用户的键盘输入,用 ...

  2. 一小时学会C++开发双人对战版五子棋游戏,小白看完也能自己写游戏啦!

    VC++ 双人对战的五子棋游戏 界面新颖附源码,VC.NET源码项目,五子棋-UI美化实例源码.看一看截图吧,是不是看上去很有感觉的五子棋. 程序流程图: 游戏界面如下: 项目结构展示: 部分源码展示 ...

  3. C语言实现双人对战五子棋游戏

    在编写五子棋游戏前首先对整个项目进行分析: 1.五子棋的界面绘制及显示 2.对输入的数据进行写入 3.判断输入的数据多对应的位置上是否可以下棋其中包括检测此位置是否为空及是否超出下棋的有效位置(越界超 ...

  4. matlab小游戏,MATLAB实现五子棋游戏(双人对战、可悔棋)

    本文实例为大家分享了MATLAB实现五子棋游戏的具体代码,供大家参考,具体内容如下 程序介绍: 1.此游戏只可用于双人对战. 2.棋盘颜色.棋盘格数.棋子颜色等参数均可自由设置 3.鼠标点击非棋盘区域 ...

  5. JS实现五子棋单人双人简易游戏(下)

    目录 一.简介 二.游戏实现效果如下 三.以下为源码 1.HTML 2.CSS 3.JS 一.简介 此版包括了单人模式(人机模式)和双人模式 只需要双人模式的可以看这篇:JS实现双人五子棋简易游戏(上 ...

  6. Unity 简单联网游戏(双人五子棋)开发(二)

    前言:之前我们尝试开发了一个两个比拼分数的不像游戏的超简单的弱数据联网游戏,主要是想让一些没开发过联网游戏的人了解一下最基础的流程:不过有人仍然有人私信我表示看不懂,所以这次我们再开发一个类似的游戏, ...

  7. 利用C++打造双人对战的五子棋游戏,界面新颖「附源码」

    五子棋游戏的历史可谓源远流长,是一款老少皆宜的两人对弈纯策略游戏,讲究的是有攻有守的五子棋技巧,玩法简单易上手,五个棋子连成一线就可获胜.单机五子棋,双人五子棋,好友联机对战模式-你想要的都能在这里找 ...

  8. Java写五子棋游戏(含人机对决,双人对决)

    文章目录 初心: 通过做游戏项目,为后面做项目打基础. 前言:本篇为五子棋游戏设计,以下为源码 游戏规则: 设计思路: 源码: 输出结果展示: 初心: 通过做游戏项目,为后面做项目打基础. 前言:本篇 ...

  9. 双人五子棋对战(需要EasyX图像库)

    实训要做项目呐.天天坐在电脑面前累死了.最近题刷的少.大多数都挺水.就不挨个编辑发上来了.发发白天写的项目吧.可能好几天更一下.实训结束恢复正常. 这个游戏需要EasyX的图像库.有兴趣的可以下一个图 ...

  10. matlab五子棋_应用 | 五子棋游戏——没人能在我的程序里打败我

    最近看到一个新闻,8月11日第16届世界五子棋锦标赛的决赛战场上,两名中国棋手分别取得了决赛组和女子组的冠军. 毕竟是两年一届的世界最高水平的五子棋比赛,这样的成绩可以说是很优秀了. 看完后,会长也是 ...

最新文章

  1. P3879 [TJOI2010]阅读理解 [STL]
  2. 查看tensorflow pb模型文件的节点信息
  3. 回归Dos操作的快感,进入PowerShell世界 (转)
  4. ARM 之十二 Cortex-M 内核异常处理、异常定位方法、在线调试、Keil MDK-ARM 的使用
  5. 数据结构(三)--链表
  6. C/C++ 时间相关用法
  7. **PCD数据获取:Kinect+OpenNI+PCL对接(代码)
  8. mysql二维数据转一维存_二维数组转一维数组
  9. hadoop--HDFS概述
  10. django之路由分组,路由分发,FBV,CBV,ORM框架
  11. 计算机网络学习笔记(14. OSI参考模型②)
  12. 实时计算storm流程架构总结
  13. win10一键改字体
  14. 史上最详细Win10系统装成Win7系统教程
  15. 计算当前是时间距离凌晨零点的时间
  16. 【Oracle】ngrok 映射数据库地址为外网
  17. Git develop分支的一些操作
  18. 数据挖掘 - 二手车交易价格预测(阿里天池)
  19. 电源线的噪声共模干扰和差模干扰优化设计
  20. 生产环境安装、配置、管理PostgreSQL14.5数据库集群。pgpool 4.3.3参数中文说明

热门文章

  1. PCA(主成分分析)数学原理推导证明
  2. 【历史上的今天】7 月 18 日:英特尔成立;万维网上传了第一张照片;eBay 分拆 PayPal
  3. C++操作图像、图片
  4. ssm根据pdf模板导出pdf
  5. Day754.Pika键值对数据库 -Redis 核心技术与实战
  6. html日志网页,以HTML为表现的日志记录组件
  7. Ubuntu通过有线路由器上网
  8. 无线网卡连接internet,有线网卡向另一台电脑分享网络(笔记本当有线路由器)...
  9. 博客群建软件有什么功能?
  10. java的cursor_JAVA中类 Cursor的定义.