游戏雷霆

# include & ltiostream & gt

# 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;

}

扫雷游戏,自己的代码。