c++小游戏之扫雷

admin 2023年2月12日11:59:30评论6 views字数 1512阅读5分2秒阅读模式

c++小游戏之扫雷

扫雷是一款比较常见的智力游戏,游戏目标是在最短的时间内根据点击格子出现的数字找出所有非雷格子,同时避免踩雷,踩到一个雷即全盘皆输。今天我们的目标是做一个扫雷小游戏。

void intt(){  srand(time(NULL));  for(int i=0;i<maxn+5</maxn+;i++)    for(int j=0;j<maxm+5</maxm+;j++)      square[i][j]=9;  memset(flag,true,sizeof(flag));  int xx=rand() % maxn+1;  int yy=rand() % maxm+1;  int num=1;  while(num<=99)  {    while(square[xx][yy]==-1||xx==xxx&&yy==yyy)    {      xx=rand()%maxn+1;      yy=rand()%maxm+1;    }    square[xx][yy]=-1;    num++;  }  for(int i=1;i<=maxn;i++)    for(int j=1;j<=maxm;j++)      if(square[i][j]!=-1) square[i][j]=count_num(i,j);}

首先是初始化雷,这里初始化的计数是99,虽然雷的随机的,但是不运行在相同的地方埋雷,所以需要再检查一遍这个地方是否已经有雷了。

int count_num(int x,int y){    int sum=0;    for(int i=x-1;i<=x+1;i++)        for(int j=y-1;j<=y+1;j++)            if (square[i][j]==-1) sum++;    return sum;}

这是用于数雷的,记录周围一共有多少个雷。如果没有那就返回0,如果有多少个,那就返回多少个。

void dfs(int x,int y){  flag[x][y]=false;  if(square[x][y]==-1) gameover=false;  if(!gameover) return;  if(square[x][y]!=0) return;  for(int i=0;i<8;i++)  {    int now_x=move_x[i]+x;    int now_y=move_y[i]+y;    if(square[now_x][now_y]!=0){      flag[now_x][now_y]=false;    }  }  for(int i=0;i<4;i++)  {    int now_x=move_x[i]+x;    int now_y=move_y[i]+y;    if(flag[now_x][now_y]){      flag[now_x][now_y]=false;      dfs(now_x,now_y);    }  }}

这是鼠标点击之后的动作,如果是数字,则直接翻开;如果是空格,则进行搜索。

void display_y(){  for(int i=1;i<=maxn;i++)  {    for(int j=1;j<=maxm;j++)      if(square[i][j]==-1)       {        SetColor(4);        cout<<"* ";        SetColor(15);      }        else if (square[i][j]!=0) cout<<square[i][j]<<" "</square[i][j]<<;else cout<<"  ";    cout<<endl;  }}

最后如果引爆了一个雷,那就把所有的雷都打印出来引爆。

这个扫雷游戏稍微有一点难度,你需要初始化雷,计算雷的个数,点击之后排雷。基本思想就是这样。


作者:啦啦啦1646846
链接:https://juejin.cn/post/7007220849467981855
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


原文始发于微信公众号(汇编语言):c++小游戏之扫雷

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年2月12日11:59:30
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   c++小游戏之扫雷https://cn-sec.com/archives/1549417.html

发表评论

匿名网友 填写信息