怎么用C++制作扫雷游戏
怎么用C++制作扫雷游戏
本篇内容主要讲解“怎么用C++制作扫雷游戏”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么用C++制作扫雷游戏”吧!
具体代码如下
#ifndefSAOLEI_H#defineSAOLEI_HclassBlock{friendclassSaoleigame;public:Block();boolisShown();voidsetnum(int);intgetnum();boolisbomb();protected:intnum;boolflag_show;intx;inty;};classSaoleigame{public:Saoleigame();~Saoleigame();void_init_();voidgameStart();voidreflash();voidcheck(intx,inty);voidclick(intx,inty);voidgameOver();private:Blockjuzheng[100];boolflag;intb[10];unsignedintscore;};#endif
以上是编写的头文件
#include<iostream>#include<cstdlib>#include<ctime>#include"Saolei.h"usingnamespacestd;Saoleigame::Saoleigame(){_init_();flag=true;score=0;}Saoleigame::~Saoleigame(){}voidSaoleigame::_init_(){srand(time(NULL));for(inti=0;i<10;i++){b[i]=-1;}for(inti=0;i<10;i++){booltemp_flag=false;do{inttemp=(unsignedint)rand()%100;for(intj=0;j<i;j++){if(temp==b[i]){temp_flag=true;}}if(!temp_flag){b[i]=temp;}}while(temp_flag);}for(inti=0;i<10;i++){juzheng[b[i]].setnum(-1);}for(inti=0;i<10;i++){for(intj=0;j<10;j++){juzheng[i*10+j].x=i+1;juzheng[i*10+j].y=j+1;}}for(intm=0;m<10;m++){for(intn=0;n<10;n++){check(m+1,n+1);}}}voidSaoleigame::check(intx,inty){if(juzheng[(x-1)*10+(y-1)].num==-1)return;inttrans=(x-1)*10+(y-1);intnumber=0;for(inti=-1;i<2;i++){for(intj=-1;j<2;j++){if(!(x+i<=0&&x+i>=10||j+y<=0&&y+j>=10)){if(juzheng[(x+i-1)*10+(y+j-1)].num==-1)number++;}}}juzheng[(x-1)*10+(y-1)].setnum(number);}voidSaoleigame::click(intx,inty){if(juzheng[(x-1)*10+(y-1)].num==0){for(inti=-1;i<2;i++){for(intj=-1;j<2;j++){if(!((x+i<=0||x+i>10)||(j+y<=0||y+j>10))&&!(i==0&&j==0)&&!juzheng[(x+i-1)*10+(y+j-1)].flag_show){juzheng[(x+i-1)*10+(y+j-1)].flag_show=true;click(x+i,y+j);}}}}juzheng[(x-1)*10+(y-1)].flag_show=true;return;}voidSaoleigame::gameStart(){do{reflash();intx,y;cout<<"inputtheposition:";cin>>x>>y;if(juzheng[(x-1)*10+(y-1)].isbomb()){gameOver();return;}else{click(x,y);}}while(flag);}voidSaoleigame::reflash(){system("cls");score=0;cout<<"扫雷"<<endl;cout<<"12345678910"<<endl;cout<<"-------------------"<<endl;for(inti=0;i<100;i++){if(i%10==0){if(i/10+1==10)cout<<10<<"|";elsecout<<i/10+1<<"|";}if(juzheng[i].isShown()){if(juzheng[i].isShown()&&(juzheng[i].getnum())!=-1){score++;}if((juzheng[i].getnum())==-1)cout<<"*"<<"|";elsecout<<juzheng[i].getnum()<<"|";}else{cout<<"|";}if((i+1)%10==0)cout<<endl;}cout<<"-------------------"<<endl;cout<<"score:"<<(score*100)/95<<endl;}voidSaoleigame::gameOver(){for(inti=0;i<10;i++){juzheng[b[i]].flag_show=true;}reflash();cout<<"GameOver"<<endl<<endl;flag=false;}Block::Block(){flag_show=false;num=0;}boolBlock::isShown(){returnflag_show;}voidBlock::setnum(int_num){num=_num;}intBlock::getnum(){returnnum;}boolBlock::isbomb(){returnnum==-1;}
到此,相信大家对“怎么用C++制作扫雷游戏”有了更深的了解,不妨来实际操作一番吧!这里是恰卡编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
推荐阅读
-
C++之list容器模拟怎么实现
C++之list容器模拟怎么实现这篇“C++之list容器模拟怎么...
-
C++深浅拷贝及简易string类怎么实现
C++深浅拷贝及简易string类怎么实现这篇“C++深浅拷贝及简...
-
C++之list容器如何使用
C++之list容器如何使用今天小编给大家分享一下C++之list...
-
C++内存对齐如何实现
C++内存对齐如何实现本篇内容介绍了“C++内存对齐如何实现”的有...
-
C/C++如何获取CAN信号
C/C++如何获取CAN信号本篇内容主要讲解“C/C++如何获取C...
-
C/C++程序链接与反汇编工具objdump如何使用
C/C++程序链接与反汇编工具objdump如何使用这篇文章主要介...
-
C++聚合体初始化的方法是什么
C++聚合体初始化的方法是什么本篇内容介绍了“C++聚合体初始化的...
-
C++引用如何使用
C++引用如何使用这篇文章主要介绍“C++引用如何使用”的相关知识...
-
C++类和对象之封装及class与struct的区别是什么
-
C++怎么实现softmax函数
C++怎么实现softmax函数本篇内容主要讲解“C++怎么实现s...