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; } 这是第一次写博客也是第一次独立完成项目,有不足的地方,希望各位大牛指教。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。