扫雷小游戏代码c版.docx

上传人:b****6 文档编号:5553985 上传时间:2022-12-19 格式:DOCX 页数:16 大小:17.33KB
下载 相关 举报
扫雷小游戏代码c版.docx_第1页
第1页 / 共16页
扫雷小游戏代码c版.docx_第2页
第2页 / 共16页
扫雷小游戏代码c版.docx_第3页
第3页 / 共16页
扫雷小游戏代码c版.docx_第4页
第4页 / 共16页
扫雷小游戏代码c版.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

扫雷小游戏代码c版.docx

《扫雷小游戏代码c版.docx》由会员分享,可在线阅读,更多相关《扫雷小游戏代码c版.docx(16页珍藏版)》请在冰豆网上搜索。

扫雷小游戏代码c版.docx

扫雷小游戏代码c版

intlei;

intline,arrange,thunder1,thunder2,space;

voidsaolei(char**&a,char**&c,int**&b,int**&d,int**&e,int**&g,int&line,int&arrange,int&thunder1,int&thunder2,int&space)

{intall=1;

while(all)

{inti,j;

a=newchar*[line],c=newchar*[line],b=newint*[line],d=newint*[line],e=newint*[line],g=newint*[line];

for(i=0;i<=line-1;i++)

a[i]=newchar[arrange],c[i]=newchar[arrange],b[i]=newint[arrange],d[i]=new

int[arrange],e[i]=newint[arrange],g[i]=newint[arrange];

for(i=0;i

for(j=0;j

a[i][j]='.',b[i][j]=0,c[i][j]='.',e[i][j]=0,g[i][j]=0;

intk;

srand(int(time(0)));

intz=1;

while(z)

{k=rand()%(thunder2+1);

if(k>=thunder1)

z=0;

}

srand(int(time(0)));

for(i=1;i<=k;i++)

{ints,t;

L:

{s=rand()%line;

t=rand()%arrange;

}

if(!

(s>=0&&s=0&&t

='#'))

gotoL;

for(intm=0;m

for(intn=0;n

{if(m==s&&n==t&&a[m][n]!

='#')

a[m][n]='#';

}

}

for(i=0;i

for(j=0;j

{if(j-1>=0&&a[i][j-1]=='#')

b[i][j]++;

if(j+1

b[i][j]++;

if(i-1>=0&&a[i-1][j]=='#')

b[i][j]++;

if(i+1

b[i][j]++;

if(i-1>=0&&j+1

b[i][j]++;

if(i-1>=0&&j-1>=0&&a[i-1][j-1]=='#')

b[i][j]++;

if(i+1

b[i][j]++;

if(j-1>=0&&i+1

b[i][j]++;

}

intf=0;

for(i=0;i

for(j=0;j

{if(a[i][j]=='#')

d[i][j]=2;

else{if(j-1>=0&&a[i][j-1]=='.')

f++;

if(j+1

f++;

if(i-1>=0&&a[i-1][j]=='.')

f++;

if(i+1

f++;

if(i-1>=0&&j+1

f++;

if(i-1>=0&&j-1>=0&&a[i-1][j-1]=='.')

f++;

if(i+1

f++;

if(j-1>=0&&i+1

f++;

if(i-1>=0&&i+1=0&&j+1

{if(f==8)

d[i][j]=1;

elsed[i][j]=0;

}

elseif(i==0&&j==0||i==0&&j==arrange-1||i==line-1&&j==0||i==line-1&&j==arrange-1){if(f==3)

d[i][j]=1;

elsed[i][j]=0;

}

else

{if(i==0&&j!

=0&&j!

=arrange-1||i==line-1&&j!

=arrange-1&&j!

=0||i!

=line-1&&i!

=0&&j==0||i!

=line-1&&i!

=0&&j==arrange-1)

{if(f==5)

d[i][j]=1;

elsed[i][j]=0;

}

}

f=0;

}

}

intx,y,left=0,right=0,hang,shu,duan=0,jishu=0;

z=1;

for(i=1;i<=space;i++)

cout<<"";

for(i=0;i<=line;i++)

if(i<=9)

cout<

elsecout<

cout<

for(i=0;i

{if(i<9)

{for(k=1;k<=space;k++)

cout<<"";

}

if(i>=9)

{for(k=1;k<=space-1;k++)

cout<<"";

}

cout<

for(j=0;j

cout<

cout<

}

while(z)

{cout<<"请输入你要翻开的位置(如:

60或561):

";

cin>>x>>y>>lei;

x--,y--;

if(a[x][y]=='#')

e[x][y]=1;

if(a[x][y]=='.')

{if(b[x][y]!

=0)

e[x][y]=1;

if(b[x][y]==0)

{for(i=0;i

for(j=0;j

if(d[i][j]==1)

{d[i][j]=3;

intdir=3,fu=0,pan=1,ci=0;

intm=i,n=j;

do

{switch(dir)

{case1:

//向左走

{if(m-1>=0&&d[m-1][n]==1){d[m-1][n]=3;m--;dir=2;}//检测所在位置右边

elseif(n-1>=0&&d[m][n-1]==1){d[m][n-1]=3;n--;dir=1;}//检测所在位置前方

elseif(m+1=0&&d[m-1][n]==3){m--;dir=2;}//检测所在位置右边

elseif(n-1>=0&&d[m][n-1]==3){n--;dir=1;}//检测所在位置前方

elseif(m+1

else{if(n+1

}break;

case2:

//向上走

{if(n+1=0&&d[m-1][n]==1){d[m-1][n]=3;m--;dir=2;}//检测所在位置前方

elseif(n-1>=0&&d[m][n-1]==1){d[m][n-1]=3;n--;dir=1;}//检测所在位置左边

elseif(m+1

elseif(m-1>=0&&d[m-1][n]==3){m--;dir=2;}//检测所在位置前方

elseif(n-1>=0&&d[m][n-1]==3){n--;dir=1;}//检测所在位置左边

else{if(m+1

}break;

case3:

//向右走

{if(m+1=0&&d[m-1][n]==1){d[m-1][n]=3;m--;dir=2;}//检测所在位置左边

elseif(n-1>=0&&d[m][n-1]==1){d[m][n-1]=3;n--;dir=1;}//检测所在位置后方

elseif(m+1

elseif(n+1

elseif(m-1>=0&&d[m-1][n]==3){m--;dir=2;}//检测所在位置左边

else{if(n-1>=0&&d[m][n-1]==3){n--;dir=1;}}//检测所在位置后方

}break;

case4:

//向下走

{if(n-1>=0&&d[m][n-1]==1){d[m][n-1]=3;n--;dir=1;}//检测所在位置右边

elseif(m+1=0&&d[m-1][n]==1){d[m-1][n]=3;m--;dir=2;}//检测所在位置后方

elseif(n-1>=0&&d[m][n-1]==3){n--;dir=1;}//检测所在位置右边

elseif(m+1

elseif(n+1

else{if(m-1>=0&&d[m-1][n]==3){m--;dir=2;}}//检测所在位置后方

}break;

}

if(d[m][n]==3)

ci++;

if(ci>=line*arrange)

pan=0;

if(m==i&&n==j)

{fu++;

if(fu==4)

pan=0;

}

if(m==x&&n==y)

left=i+1,right=j+1,duan=1;

}while(pan);

if(left==0&&right==0)

for(hang=0;hang

}

left=0,right=0,duan=0;

for(i=0;i

for(j=0;j

if(d[i][j]==3)

e[i][j]=1;

for(i=0;i

for(j=0;j

if(d[i][j]==3)

{if(j-1>=0)

e[i][j-1]=1;

if(j+1

e[i][j+1]=1;

if(i-1>=0)

e[i-1][j]=1;

if(i+1

e[i+1][j]=1;

if(i-1>=0&&j+1

e[i-1][j+1]=1;for(shu=0;shu

if(d[hang][shu]==3)

d[hang][shu]=1;

if(i-1>=0&&j-1>=0)

e[i-1][j-1]=1;

if(i+1

e[i+1][j+1]=1;

if(j-1>=0&&i+1

e[i+1][j-1]=1;

}

}

}//当b[x][y]==0时

system("cls");//清屏

for(i=0;i

for(j=0;j

if(d[i][j]==3)

d[i][j]=1;

if(a[x][y]=='.'&&b[x][y]!

=0&&lei!

=2)

{for(i=1;i<=space;i++)

cout<<"";

for(i=0;i<=line;i++)

if(i<=9)

cout<

elsecout<

cout<

for(i=0;i

{if(i<9)

{for(k=1;k<=space;k++)

cout<<"";

cout<

}

if(i>=9)

{for(k=1;k<=space-1;k++)

cout<<"";

cout<

}

for(j=0;j

if(g[i][j]==1)

{if(a[i][j]=='#')

cout<

elsecout<

}

elseif(i==x&&y==j)

cout<

elsecout<

cout<

}

if(lei==1)

{jishu++;

if(jishu<=3)

cout<<"提示:

判断错误"<

}//第一种情况

if(a[x][y]=='.'&&b[x][y]==0&&lei!

=2)

{for(i=1;i<=space;i++)

cout<<"";

for(i=0;i<=line;i++)

if(i<=9)

cout<

elsecout<

cout<

for(i=0;i

{if(i<9)

{for(k=1;k<=space;k++)

cout<<"";

cout<

}

if(i>=9)

{for(k=1;k<=space-1;k++)

cout<<"";

cout<

}

for(j=0;j

if(g[i][j]==1)

{if(a[i][j]=='#')

cout<

elsecout<

}

elseif(e[i][j]==1)

cout<

elsecout<

cout<

}

if(lei==1)

{jishu++;

if(jishu<=3)

cout<<"提示:

判断错误"<

}//第二种情况

if(a[x][y]=='#'&&lei==0)

{for(i=1;i<=space;i++)

cout<<"";

for(i=0;i<=line;i++)

if(i<=9)

cout<

elsecout<

cout<

for(i=0;i

{if(i<9)

{for(k=1;k<=space;k++)

cout<<"";

cout<

}

if(i>=9)

{for(k=1;k<=space-1;k++)

cout<<"";

cout<

}

for(j=0;j

if(g[i][j]==1)

{if(a[i][j]=='#')

cout<

elsecout<

}

elseif(e[i][j]==1)

cout<

elseif(a[i][j]=='#')

cout<

elsecout<

cout<

}

cout<<"ohmygod你输了!

所有雷的位置已显示出,请再接再厉哦(*^__^*)嘻嘻……"<

}//第三种情况

if(a[x][y]=='#'&&lei==1)

{for(i=1;i<=space;i++)

cout<<"";

for(i=0;i<=line;i++)

if(i<=9)

cout<

elsecout<

cout<

for(i=0;i

{if(i<9)

{for(k=1;k<=space;k++)

cout<<"";

cout<

}

if(i>=9)

{for(k=1;k<=space-1;k++)

cout<<"";

cout<

}

for(j=0;j

if(g[i][j]==1)

{if(a[i][j]=='#')

cout<

elsecout<

}

elseif(e[i][j]==1)

cout<

elsecout<

cout<

}

}//第四种情况

if(lei==2||lei==3||lei==4)

z=0,all=0;

for(i=0;i

for(j=0;j

if(e[i][j]==1)

g[i][j]=e[i][j];

for(i=0;i

for(j=0;j

e[i][j]=0;

intsum=1;

for(i=0;i

for(j=0;j

sum*=g[i][j];

if(sum!

=0)

{cout<<"ohgood你赢了耶!

(^_^)不错嘛"<

z=0;

}

inttotal=1;

for(i=0;i

for(j=0;j

if(a[i][j]=='#')

{if(g[i][j]==1)

total*=1;

if(g[i][j]!

=1)

total*=0;

}

if(total!

=0&&sum==0)

{cout<<"ohgood你赢了耶!

(^_^)不错嘛"<

z=0;

}

if(jishu>3)

{cout<<"howpitty!

错误判断超过三次,你输了,下次注意哦(*^__^*)"<

z=0;

}

}//循环并判断是否继续循环

}

}

intmain()

{L:

{cout<<"游戏名称:

扫雷"<<'\n'

<<"--------------------------------------------------------------------------------"<<'\n'<<"说明:

.代表未翻开的地方;#表示雷;翻开地方显示的数字表示:

该地方四周的八个相邻的地方含有雷的总数"<<'\n'

<<"--------------------------------------------------------------------------------"<<'\n'<<"规则:

根据翻开地方显示的数字判断雷所在的地方"<<'\n'

<<"--------------------------------------------------------------------------------"<<'\n'<<"操作:

根据判断,请输入位置(如:

<<'\n'

<<"--------------------------------------------------------------------------------"<<'\n'<<"解释:

输入的三个数字中,前两个数字表示位置,如:

表示行数,表示列数;第三个表示判断与选择,--无雷,--有雷,--再来一局,--结束游戏,--重启整个游戏系统"<<'\n'

<<"--------------------------------------------------------------------------------"<<'\n'<<"例如:

560表示游戏者认为该处无雷,61表示游戏者认为该处有雷,62表示再来一局,63表示结束游戏,64表示重启游戏系统"<<'\n'

<<"--------------------------------------------------------------------------------"<

char**a=NULL,**c=NULL;

int**b=NULL,**d=NULL,**e=NULL,**g=NULL;

cout<<"游戏等级有五:

"<<'\n'

<<"1--茅塞未开(方格x7,雷数-->5)"<<'\n'

<<"2--七窍通六(方格x10,雷数-->10)"<<'\n'

<<"3--闲庭信步(方格x13,雷数-->15)"<<'\n'

<<"4--炉火纯青(方格x15,雷数-->30)"<<'\n'

<<"5--偶滴神呀(方格x25,雷数-->100)"<<'\n'

<<"6--自定义难易程度"<

cout<<"请选择:

";cin>>choice;

if(choice==1)

line=7,arrange=7,thunder1=3,thunder2=5,space=33;

if(choice==2)

line=10,arrange=10,thunder1=7,thunder2=10,space=30;

if(choice==3)

line=13,arrange=13,thunder1=10,thunder2=15,space=27;

if(choice==4)

lin

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1