扫雷小游戏 2.0版本
游戏名称:
扫雷小游戏2.0
游戏操作:
详情请见:主页->专栏->小游戏->扫雷小游戏1.0->游戏操作
创作背景:
昨天才说大概要8.21之后更新,但由于我提高组模拟赛爆0 ak了入门组模拟赛,所以 提前了······(提高组的模拟赛题都没读就结束了)
更新内容:
- 代码优化
- 可重复游玩(才去学了随机数)
- 可自定义矩阵边长(大小),自定义雷的数量
- 修复了还没开始就结束的bug
- 加有连胜次数
- 修复了雷数量不足的bug
更新代码:
初始化定义函数2.0
void dingyi()
{srand((unsigned)time(NULL));//随机化for(int i=0;i<=n;i++)//n*n的矩阵{for(int j=0;j<=n;j++){a[i][j].chu='x';//初始 }}for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){ a[i][j].lei=rand()%2;//雷 if(ans==boon)//如果雷已经够了{a[i][j].lei=0;}if(a[i][j].lei==1){ans++;}}}bool ss=0;if(ans<boon)//如果雷的数量不够{for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){ if(a[i][j].lei==0){a[i][j].lei=1;ans++;}if(ans==boon){ss=1;break;}}if(ss==1){break;}}}for(int i=1;i<=n;i++)//范围 {for(int j=1;j<=n;j++){if(a[i-1][j].lei==1){a[i][j].fan++;}if(a[i][j-1].lei==1){a[i][j].fan++;}if(a[i+1][j].lei==1){a[i][j].fan++;}if(a[i][j+1].lei==1){ a[i][j].fan++;}if(a[i-1][j-1].lei==1){a[i][j].fan++;}if(a[i+1][j+1].lei==1){a[i][j].fan++;}if(a[i+1][j-1].lei==1){a[i][j].fan++;}if(a[i-1][j+1].lei==1){a[i][j].fan++;}}}
}
寻找函数2.0
void xunzhao(int x,int y)
{bo=0;if(a[x][y].lei==1)//踩到雷 {for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){cout<<a[i][j].lei;}cout<<endl;}cout<<"\n\nQWQ\n";//优化bo=1;return ;}else{ if(a[x][y].lei==0){for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){if(i==x&&j==y){cout<<a[i][j].fan;}else{cout<<a[i][j].chu;}}cout<<endl;}a[x][y].chu=a[x][y].fan+'0'; ans--;if(ans==0){cout<<"\n\nwin\n\n";//优化bo2=1;}}}
}
新增执行函数:
void zhixing()//执行
{int z=0;//z为胜利时输入的变量,与后文tot作用相同ans=0;cout<<"\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n";//清屏cout<<"请输入矩阵边长(2~8):";//自定义cin>>n;cout<<"请输入雷的数量(1<=s<n):";cin>>boon;cout<<"\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n";//清屏dingyi(); //执行函数shuchu();int x,y;ans=n*n-ans;while(bo==0){cin>>x>>y;cout<<"\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n";xunzhao(x,y);if(bo==1)//如果输了{tot=0;//不再继续游戏return; }else{if(bo2==1)//如果赢了{cout<<"是否继续?0/1"<<endl;//询问是否继续cin>>z;//输入ztot=z;//将z赋值给totliansheng++;//连胜次数++break;//退出循环}}}
}
主函数2.0:
int main()
{ while(tot==1)//只要tot=1就继续游戏{zhixing();//执行游戏}cout<<"\n\n\n\n\n 你的连胜次数为:"<<liansheng<<"次"<<endl; //输出连胜次数return 0;
}
新增变量:
bo2//判断是否胜利
n//矩阵边长
boon//雷的数量
tot//判断是否继续游戏
liansheng//连胜次数
(这些只是新增变量中比较重要的变量,不是全部的变量)
注释与说明:
1.矩阵边长不得超过19,如想将边长定义得更大需修改:
struct aa{int lei,fan;//雷,初始,范围 char chu; }a[20][20];<-把这里扩大即可
2.雷的数量不得超过矩阵的面积,不然会卡掉!!!
源码:
#include<bits/stdc++.h>using namespace std;struct aa{int lei,fan;//雷,初始,范围 char chu; }a[20][20];int bo,bo2,ans;//雷的数量 int n,boon;void dingyi()
{srand((unsigned)time(NULL));for(int i=0;i<=n;i++){for(int j=0;j<=n;j++){a[i][j].chu='x';//初始 }}for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){ a[i][j].lei=rand()%2;//雷 if(ans==boon){a[i][j].lei=0;}if(a[i][j].lei==1){ans++;}}}bool ss=0;if(ans<boon){for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){ if(a[i][j].lei==0){a[i][j].lei=1;ans++;}if(ans==boon){ss=1;break;}}if(ss==1){break;}}}for(int i=1;i<=n;i++)//范围 {for(int j=1;j<=n;j++){if(a[i-1][j].lei==1){a[i][j].fan++;}if(a[i][j-1].lei==1){a[i][j].fan++;}if(a[i+1][j].lei==1){a[i][j].fan++;}if(a[i][j+1].lei==1){ a[i][j].fan++;}if(a[i-1][j-1].lei==1){a[i][j].fan++;}if(a[i+1][j+1].lei==1){a[i][j].fan++;}if(a[i+1][j-1].lei==1){a[i][j].fan++;}if(a[i-1][j+1].lei==1){a[i][j].fan++;}}}
}void shuchu()//初始化输出
{for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){cout<<a[i][j].chu;}cout<<endl;}
}void xunzhao(int x,int y)
{bo=0;if(a[x][y].lei==1)//踩到雷 {for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){cout<<a[i][j].lei;}cout<<endl;}cout<<"\n\nQWQ\n";bo=1;return ;}else{ if(a[x][y].lei==0){for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){if(i==x&&j==y){cout<<a[i][j].fan;}else{cout<<a[i][j].chu;}}cout<<endl;}a[x][y].chu=a[x][y].fan+'0'; ans--;if(ans==0){cout<<"\n\nwin\n\n";bo2=1;}}}
}int tot=1;int liansheng=0;//连胜次数 void zhixing()//执行
{int z=0;ans=0;cout<<"\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n";cout<<"请输入矩阵边长(2~8):";cin>>n;cout<<"请输入雷的数量(1<=s<n):";cin>>boon;cout<<"\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n";dingyi(); shuchu();int x,y;ans=n*n-ans;while(bo==0){cin>>x>>y;cout<<"\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n";xunzhao(x,y);if(bo==1){tot=0;return; }else{if(bo2==1){cout<<"是否继续?0/1"<<endl;cin>>z;tot=z;liansheng++;break;}}}
}int main()
{ while(tot==1){zhixing();}cout<<"你的连胜次数为:"<<liansheng<<"次"<<endl; return 0;
}
小小的请求:
各位学霸dalao们点个赞、关注一下再走嘛~~~
如果可以,打赏一下
(3.0版本大概在8.21或者9月以后更新)
结束啦~~~
扫雷小游戏 2.0版本相关推荐
- 吊死人小游戏 2.0版本
游戏名称: 吊死人小游戏2.0版本(4位数字版) 游戏玩法: 选择被吊的人物 每次输入4个数字 如果猜对其中至少一个数字,看做猜对了 如果一个也没猜中,看做猜错,被吊人物画一笔 全部猜中,并且被吊人物 ...
- 吊死人小游戏 1.0版本
游戏名称: 吊死人小游戏1.0版本(4位数字版本) 游戏玩法: 每次输入一个4位数,表示你所猜4个数字. 如果你猜对了其中的几个数字,那么下方的4个问号中与你所猜对数字对应的数字将显现出来. 如果你猜 ...
- java游戏+弹幕_JAVA 弹幕小游戏 1.0版本
java 弹幕小游戏 最初版本 最近在学习javaSE,根据b站视频老师的讲解,也参考了他的代码,做了一个弹幕小游戏,也增添了一些自己的代码进去,因为只是最简单的游戏体,以后会慢慢做完整,所以如果有错 ...
- java 弹幕游戏_JAVA 弹幕小游戏 1.0版本
java 弹幕小游戏 最初版本 最近在学习javaSE,根据b站视频老师的讲解,也参考了他的代码,做了一个弹幕小游戏,也增添了一些自己的代码进去,因为只是最简单的游戏体,以后会慢慢做完整,所以如果有错 ...
- 飞机大战小游戏1.0版本
小时候大家应该都玩过飞机大战吧,这就是仿的一个飞机大战,但是没有写的很全,只能玩一次,死掉之后需要刷新页面玩第二次,话不说多,上代码: 初始页面: 整个的html代码还是很少,如下: <div ...
- c++小游戏[3.0版本]
c++小游戏更新3.0啦! 这次更新增加了: 1.高精度乘法 2.转盘游戏 3.抛硬币游戏 之前的作品阅读量过5000的就那一两个...帮我搞点阅读量吧...关注的全部回关... 帮我点点吧... 所 ...
- java文字类小游戏2.0版本
java文字类小游戏 用javaFx面板显示文字类小游戏,目前正已完成基本打斗和打怪爆出武器的开发,后续会不断更新示例图如下: 运行这个类开始代码我已上传至码云,有需要的小伙伴自行拉取代码,git项目 ...
- 王者荣耀小游戏1.0震撼上线!C++版
王者荣耀小游戏1.0版本!可以关机哦! #include<bits/stdc++.h> //编个游戏,不顾一切的用万能 #include<windows.h> using na ...
- C++【坑人神器:绝地求生小游戏3.0】震撼上线
绝地求生小游戏3.0版本震撼上线!!! 全新大厅系统.反外挂系统增强! 萨诺地形优化,艾伦格.米拉马增加雨天.雾天! TPP视角优化! 支持使用[蓝洞加速器]!!! #include<bits/ ...
最新文章
- 【模型评估与选择】sklearn.model_selection.train_test_split
- 【pytorch】nn.GRU的使用
- Rust linux 系统接口使用
- angularJS1笔记-(18)-$http及用angular实现JSONP跨域访问过程
- linux安装磁盘分区设置,Linux安装与磁盘分区.doc
- UE4学习-自定义角色的移动、视野旋转、设置游戏模式
- C# WPF MVVM开发框架Caliburn.Micro 关于Conventions⑧
- 常用加解密工具集合|视频图片加解密方案
- python变量后面加星号_Python基础找茬系列20--python函数的秘密
- IWorkbook 引入_如果引入国内,你会买单吗?日产全新小型SUV亮相|小型suv|日产|轩逸|新车|本田|丰田...
- jquery select
- Windows 命令行改主机名、加域、退域、更改IP
- 请教 indy 中的 tldUdpServer 如何实现对本地端口6100进行监听!
- EasyRecovery如何恢复游戏——英雄联盟
- 计算机操作系统笔记(二)
- 京东商城java笔试_京东java笔试
- 短除法求最小公倍数c语言,短除法求最小公倍数
- Android实现网页动态背景“五彩蛛网”
- snv服务器备份方案
- SEO搜索引擎优化方式