C++做的一个小游戏,最好的源代码,谢谢。
# include & ltfstream & gt
# include & ltctime & gt
# include & ltcmath & gt
# include & ltstdlib.h & gt
# include & ltstdio.h & gt//时间//文件
# include & lt字符串& gt
#定义random(x)(rand()%x)
使用命名空间std
void thunder(int Dif,int Row,int Column,char *USer)
{
int r,c,all[22][22],back stage[22][22]= { 0 };
srand((int)time(0));
for(r = 1;r & lt=行;R++) //生成all(0 ~ 1)1是雷。
{
for(c = 1;c & lt=列;c++)
{
if(random(6)& lt;1){ all[r][c]= 1;} else { all[r][c]= 0;};
}
};
for(r = 0;r & lt= Row+1;R++) //后台生成(正确答案)
{
for(int c = 0;c & lt=列+1;c++)
{
if(alls[r][c]==1)
{
(int)back stage[r][c]= ' * ';//雷霆把1改成*。
}
其他
{
for(int I = r-1;我& lt= r+1;I++) //把0变成一个数(代表身边的雷数)
for(int j = c-1;j & lt= c+1;j++)
{
if(all[I][j]!= all s[r][c]& amp;& ampall[I][j]= = 1){ back stage[r][c]++;};
}
};//否则结束
};//的结尾
};//的结尾
cout & lt& lt" = = = = = = = = = = = = = = = = = = = = = = = * * * * * * * = = = = = = = = = = = = = = = = = = = = = = = = = = = = " & lt;& ltendl
炭化表面[22][22];//生成表面(用户界面)
for(r = 0;r & lt22;R++) //全为零
for(c = 0;c & lt22;c++)
{
surface[r][c]= ' 0 ';
}
for(r = 1;r & lt=行;R++) //中间#形成0括#(通过数字#-->的形式;当(* ||数字)获胜时停止循环)
for(c = 1;c & lt=列;c++)
{
surface[r][c]= ' # ';
}
for(r = 1;r & lt=行;R++) //输出表面接口,便于检查。
{
for(c = 1;c & lt=列;c++){ cout & lt;& lt" " " & lt& ltsurface[r][c];};
cout & lt& ltendl
};
cout & lt& lt"请按格式输入"
& lt& lt“前两个数字是坐标,最后一个数字‘1’表示这个位置是雷霆,‘0’表示没有。”& lt& lt恩德尔
& lt& lt“比如:1 3 1表示一行三列是雷;2 4 0表示两行四列不打雷”
& lt& lt“提示:当数字周围的雷全部被扫光后,可以按要求再次进入这个位置,以获得周围的数字。”& lt& ltendl
龙I = 1000000 l;//计算时间的开始
clock_t开始,结束;
双倍时长;
start =时钟();
while(I-);//计算时间的开始
int num = Row * Column//计算#号的数量
而(num!=0) //控制是否点击所有位置。
{
int x,y,judge
CIN & gt;& gtx & gt& gty & gt& gt法官;
if(all[x][y]!=法官)
{
cout & lt& lt“你输了!!!"& lt& ltendl
cout & lt& lt答案是:“& lt& ltendl
for(r = 1;r & lt=行;R++) //输入输出后台显示正确答案。
{
for(int c = 1;c & lt=列;c++)
{
cout & lt& lt" " " & lt& lt(char)(后台[r][c]==42?backstage[r][c]:backstage[r][c]+' 0 ');//后台输出
}
cout & lt& ltendl
}
打破;
}
其他
{
if(all[x][y]= = 1){ if(surface[x][y]= = ' # '){ num-;} surface[x][y]= ' @ ';}//雷判断“@”显示正确;计数“#”
其他
{
如果(后台[x][y]!=0) //数字判断正确显示数字。
{
if(surface[x][y]= = ' # '){ num-;surface[x][y]= back stage[x][y]+' 0 ';}//数字“#”
其他
{
int lei _ num = 0;
for(int I = x-1;我& lt= x+1;I++) //数雷围数。
for(int j = y-1;j & lt= y+1;j++)
{
if(surface[i][j]=='@ ')
lei _ num++;
}
If(后台[x][y]==lei_num) //看数字周围的雷是否全部被扫出提示显示数字。
{
for(int I = x-1;我& lt= x+1;i++)
for(int j = y-1;j & lt= y+1;j++)
if(surface[I][j]= ' # ')//number " # "
{
surface[I][j]= back stage[I][j]+' 0 ';
num-;
}
}
}
}
Else //当数字为零时,在零附近显示零。
{
if(surface[x][y]= = ' # '){ num-;};//数字“#”
surface[x][y]= back stage[x][y]+' 0 ';
for(int I = x-1;我& lt= x+1;I++) //显示零附近的数字。
for(int j = y-1;j & lt= y+1;j++)
if(surface[I][j]= ' # ')//避免无限循环。
{
surface[I][j]= back stage[I][j]+' 0 ';
num-;//数字“#”
}
for(int k = 0;k & lt20;K++) //最多20级零(指出最外侧的零)
{
for(int R = 1;R & lt=行;R++) //检查所有零
for(int C = 1;C & lt=列;C++) //再次显示零周围的数字。
{
if(surface[R][C]=='0 ')
{
for(int I = R-1;我& lt= R+1;i++)
for(int j = C-1;j & lt= C+1;j++)
{
if(surface[I][j]= ' # ')//避免无限循环号" # "
{
surface[I][j]= back stage[I][j]+' 0 ';
num-;
}
}
}
}//在中匹配
}//匹配外部for
}//匹配else
}//匹配else
}//匹配els
cout & lt& ltendl
cout & lt& lt" = = = = = = = = = = = = = = = = = = = = = = = * * * * * * * = = = = = = = = = = = = = = = = = = = = = = = = = = = = " & lt;& ltendl
for(r = 1;r & lt=行;R++) //输出接口(已修改)
{
for(c = 1;c & lt=列;c++){ cout & lt;& lt" " " & lt& ltsurface[r][c];};
cout & lt& ltendl
};
}//匹配同时
finish = clock();//计算时间结束
duration =(double)(finish-start)/CLOCKS _ PER _ SEC;//时间变量
If(num==0) // all
{
cout & lt& lt“你赢了!恭喜你!! "& lt& ltendl
cout & lt& lt"您的时间是:" & lt& lt持续时间& lt& ltendl
If(Dif==1) //读取简单扫雷的存储文件。
{
字符串名称;
字符串名称[6];
双倍时间,响了;
双倍[6];
int I = 0;
Ifstream inf("简单扫雷。txt ");
for(I = 0;我& lt5;I++) //文件中的信息导入到数组中。
{
inf & gt& gt姓名;inf & gt& gtrang & gt& gt时间;
Name[I]= Name;
times[I]=时间;
}
INF . close();
name[5]=用户;//本轮选手信息
times[5]=持续时间;
double t 1 = 0;
字符串T2;
for(int j = 0;j & lt5;J++) //冒泡排序方法
{
for(I = 0;我& lt5-j;i++)
{
if(times[I]& gt;次[i+1])
{
t 1 = times[I];
times[I]= times[I+1];
times[I+1]= t 1;
T2 = name[I];
name[I]= name[I+1];
name[I+1]= T2;
}
}
}
Ofstream outf("简单扫雷。txt ");
for(I = 0;我& lt5;I++) //将前五名玩家的信息存储在一个文件中。
{
cout & lt& ltname[I]& lt;& lt" " " & lt& ltI+1 & lt;& lt" " " & lt& lttimes[I]& lt;& ltendl
outf & lt& ltname[I]& lt;& lt" " " & lt& ltI+1 & lt;& lt" " " & lt& lttimes[I]& lt;& ltendl
}
outf . close();
}
If(Dif==2) //读取一般扫雷的存储文件。
{
字符串名称;
字符串名称[6];
双倍时间,响了;
双倍[6];
int I = 0;
Ifstream inf("一般排雷。txt ");
for(I = 0;我& lt5;I++) //文件中的信息导入到数组中。
{
inf & gt& gt姓名;inf & gt& gtrang & gt& gt时间;
Name[I]= Name;
times[I]=时间;
}
INF . close();
name[5]=用户;//本轮选手信息
times[5]=持续时间;
double t 1 = 0;
字符串T2;
for(int j = 0;j & lt5;J++) //冒泡排序方法
{
for(I = 0;我& lt5-j;i++)
{
if(times[I]& gt;次[i+1])
{
t 1 = times[I];
times[I]= times[I+1];
times[I+1]= t 1;
T2 = name[I];
name[I]= name[I+1];
name[I+1]= T2;
}
}
}
Ofstream outf("一般排雷。txt ");
for(I = 0;我& lt5;I++) //将前五名玩家的信息存储在一个文件中并输出。
{
cout & lt& ltname[I]& lt;& lt" " " & lt& ltI+1 & lt;& lt" " " & lt& lttimes[I]& lt;& ltendl
outf & lt& ltname[I]& lt;& lt" " " & lt& ltI+1 & lt;& lt" " " & lt& lttimes[I]& lt;& ltendl
}
outf . close();
}
If(Dif==3) //读取难以挖掘的存储文件。
{
字符串名称;
字符串名称[6];
双倍时间,响了;
双倍[6];
int I = 0;
Ifstream inf("扫雷难度。txt ");
for(I = 0;我& lt5;I++) //文件中的信息导入到数组中。
{
inf & gt& gt姓名;inf & gt& gtrang & gt& gt时间;
Name[I]= Name;
times[I]=时间;
}
INF . close();
name[5]=用户;//本轮选手信息
times[5]=持续时间;
double t 1 = 0;
字符串T2;
for(int j = 0;j & lt5;J++) //冒泡排序方法
{
for(I = 0;我& lt5-j;i++)
{
if(times[I]& gt;次[i+1])
{
t 1 = times[I];
times[I]= times[I+1];
times[I+1]= t 1;
T2 = name[I];
name[I]= name[I+1];
name[I+1]= T2;
}
}
}
Ofstream outf(“扫雷困难。txt ");
for(I = 0;我& lt5;I++) //将前五名玩家的信息存储在一个文件中。
{
cout & lt& ltname[I]& lt;& lt" " " & lt& ltI+1 & lt;& lt" " " & lt& lttimes[I]& lt;& ltendl
outf & lt& ltname[I]& lt;& lt" " " & lt& ltI+1 & lt;& lt" " " & lt& lttimes[I]& lt;& ltendl
}
outf . close();
}
}
}
Void scale(int dif,char *User) //选择难度。
{
int row,column
if(dif = = 1){ row = 3;列= 3;}
if(dif = = 2){ row = 7;列= 7;}
if(dif = = 3){ row = 10;列= 10;}
cout & lt& lt“尺度是:“& lt& ltrow & lt& lt" * " & lt& lt列& lt& ltendl
迅雷(dif,行,列,用户);
};
int main()
{
int Continue = 1;
int难度;
char用户[10];
cout & lt& lt“欢迎来看比赛!”& lt& lt恩德尔
& lt& lt"请输入用户名!"& lt& ltendl
CIN & gt;& gt用户;
while(Continue==1)
{
cout & lt& lt" = = = = = = = = = = = = = = = = = = = = = = = * * * * * * * * * * * * * * = = = = = = = = = = = = = = = = = = = = = = " & lt;& lt恩德尔
& lt& lt“请选择难度!”& lt& lt恩德尔
& lt& lt"简单-1 "
& lt& lt"常规-2 "
& lt& lt“困难-3”
CIN & gt;& gt难度;
尺度(难度,用户);
cout & lt& lt“继续游戏-1结束游戏-0”< & lt;endl
CIN & gt;& gt继续;
}
返回0;
}
扫雷游戏,自己的代码。