C++实现扫雷程序开发
C++程序开发实现扫雷游戏,供大家参考,具体内容如下
//扫雷的类的定义
#pragmaonce
classGame{
public:
//开始游戏
voidplay();
//退出游戏
intquit();
//游戏规则
voidrule();
private:
//踩雷次数,作为失败条件
interror=0;
//分数
intscore=0;
//最高分记录
intRocord[5]={0,0,0,0,0};
//地图
intmap[40][40];
//地图的大小Size*Size
intSize=10;
//容错
intfault_tolerant=10;
//困难程度
int_difficulty=1;
//初始化
voidreset();
//画地图
voiddrawGrid();
//查看格子的结果
voidCheak();
//判断是否游戏结束
intisWin();
//导入最高分记录
voidget_Rocord();
//导出最高分记录
voidput_Rocord();
//选择难度
intSelection_difficulty();
//加载界面
voidloading();
};
然后是对类的函数的定义
//对Game类的成员函数的定义 #include"扫雷.h" #include#include #include #include #include #pragmawarning(disable:4996)//这一行是为了能在VisualStudio2017内使用getch()函数 //定义最高分记录的存储地址 #defineRocordPath"D:\\VS/扫雷最高分.txt" usingnamespacestd; #definenone"█" //定义5种情况,有雷和无雷,查看后的三种结果 enumplayers{Boom,None,Boom1,None1,Show1}; //定义三种游戏难度 enum_Difficulty{Easy,General,Difficulty,Purgatory}; intD_size[4][2]={{10,10},{15,8},{20,5},{30,3}}; //游戏规则的描述 voidGame::rule(){ loading(); //清屏 system("cls"); cout<<"\n\n\n\n"; cout<<"游戏规则:\n\n"; cout<<"1.当查看点为雷时,会显示“*”,并且将扣10分"< Rocord[_difficulty])Rocord[_difficulty]=score; put_Rocord(); chars; cout<<"是否再来一局?是(y|Y)/否(n|N)"< >s; if(s=='y'||s=='Y')res=1; elseres=0; break; } } if(!res)break; } } //更新(初始化) voidGame::reset(){ //数据初始化 score=0; error=0; //棋盘初始化 srand(time(NULL)); for(inti=0;i =0&&i =0&&j >x>>y; x-=1,y-=1; while(map[x][y]==Boom1||map[x][y]==None1||map[x][y]==Show1||x<0||x>=Size||y<0||y>=Size){ //定义控制台屏幕初始坐标 COORDc={0,2}; c.Y=Size+6; //设置控制台光标位置 SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),c); cout<<"该格以检查过或不在棋盘内,请重新输入"< >x>>y; x-=1,y-=1; } if(map[x][y]==Boom){ map[x][y]=Boom1; score-=10; error++; } else{ score+=10; intcnt=0; for(inti=x-1;i<=x+1;i++){ for(intj=y-1;j<=y+1;j++){ if(i>=0&&i =0&&j =0&&i =0&&j =fault_tolerant){ system("cls"); //定义控制台屏幕初始坐标 COORDc={50,15}; //设置控制台光标位置 SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),c); cout<<"YouLoss!!!"< >Rocord[i]; } } //导出最高分记录 voidGame::put_Rocord(){ ofstreamfout(RocordPath,ios::out); for(inti=0;i<5;i++) fout< >t; while(t<1||t>5){ COORDc={0,21}; //设置控制台光标位置 SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),c); cout<<"\t\t\t\t\t\t输入错误请重新输入:"< >t; } switch(t){ case1:Size=D_size[Easy][0],fault_tolerant=D_size[Easy][1];break; case2:Size=D_size[General][0],fault_tolerant=D_size[General][1];break; case3:Size=D_size[Difficulty][0],fault_tolerant=D_size[Difficulty][1];break; case4:Size=D_size[Purgatory][0],fault_tolerant=D_size[Purgatory][1];break; case5:{ //清屏 system("cls"); cout<<"\n\n\n\n\n\t\t\t\t请输入地图尺码和最多踩雷失败数(尺码在10-30,容错在10以内)"; cout<<"\t\t\t\t\t\t\t\t\t尺码:"; cin>>Size; cout<<"\n\t\t\t\t\t容错:"; cin>>fault_tolerant; }break; } loading(); returnt; } voidGame::loading(){ COORDc={50,15}; //设置控制台光标位置 intt=6; while(t--){ system("cls"); SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),c); if(t%3==0) cout<<"loading..."< 最后就是主函数部分
//扫雷游戏的主函数 #include#include #include"扫雷.h" usingnamespacestd; intmain(){ Gamegame; while(true){ intt,g=1; system("cls"); //定义控制台屏幕初始坐标 COORDc={30,10}; //设置控制台光标位置 SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),c); cout<<"欢迎来到扫雷!!!\n\n\n\n\n\n"; cout<<"\t\t\t\t\t1.开始游戏\n\n\n\t\t\t\t\t2.阅读规则\n\n\n\t\t\t\t\t3.退出"< >t; switch(t){ case1:game.play();break; case2:game.rule();break; case3:g=game.quit();break; } if(g==0)break; } return0; } 这是第一次写博客也是第一次独立完成项目,有不足的地方,希望各位大牛指教。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。