返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C++控制台版扫雷游戏
  • 706
分享到

C++控制台版扫雷游戏

2024-04-02 19:04:59 706人浏览 八月长安
摘要

本文实例为大家分享了c++控制台版扫雷游戏的具体代码,供大家参考,具体内容如下 先说思路,其实挺简单的。 (1) 随机生成10个雷,标记到二维数组里,然后计算八个方向的雷的总数记录下

本文实例为大家分享了c++控制台版扫雷游戏的具体代码,供大家参考,具体内容如下

先说思路,其实挺简单的。

(1) 随机生成10个雷,标记到二维数组里,然后计算八个方向的雷的总数记录下来,这是预处理阶段。

(2)输入要翻开的位置的坐标,如果是数字直接显示,是空白的话,这里采用bfs即宽度优先搜索解决,搜到最外层是数字(仅一层)时结束,具体详见代码。

// 扫雷程序 
#include <iOStream>
#include <string>
#include <queue>
#include <cstring>
#include <ctime>
using namespace std;
int grid[100][100];
int randMark[100][100];
char showUs[100][100];
int vis[100][100];
int dir[8][2]={{-1,0},{1,0},{0,1},{0,-1},{-1,-1},{-1,1},{1,-1},{1,1}};//方向数组 
int res; 
struct node
{
    int x;
    int y;
};
void bfs(int nx,int ny) //处理点击空白 
{
    queue <node> q;
    node temp;
    node t;
    t.x=nx,t.y=ny;
    q.push(t);
    vis[nx][ny]=1;
    while(!q.empty())
    {
        res++;
        temp=q.front();
        showUs[temp.x][temp.y]=grid[temp.x][temp.y]+'0';
        q.pop();
        for(int i=0;i<8;i++)
        {
            int xx=temp.x+dir[i][0];
            int yy=temp.y+dir[i][1];
            if(xx>=0&&xx<10&&yy>=0&&yy<10)
            {
                if(!vis[xx][yy]&&grid[xx][yy]==0)
                {
                   t.x=xx,t.y=yy;
                   vis[xx][yy]=1;
                   showUs[xx][yy]=grid[xx][yy]+'0';
                   q.push(t);       
                }
                if(!vis[xx][yy]&&grid[xx][yy]>0&&grid[temp.x][temp.y]==0)
                {
                   t.x=xx,t.y=yy;
                   vis[xx][yy]=1;
                   showUs[xx][yy]=grid[xx][yy]+'0';
                   q.push(t);       
                }
            }
        }
    }
}
int main()
{
    memset(grid,0,sizeof(grid));
    memset(randMark,0,sizeof(randMark));
    memset(vis,0,sizeof(vis));
    for(int i=0;i<10;i++)
    for(int j=0;j<10;j++)
    showUs[i][j]='*';
    srand(unsigned(time(NULL)));
    int sum=0;
    while(1)
    {
        int x=rand()%10;
        int y=rand()%10;
        if(randMark[x][y]!=1)
        {
            randMark[x][y]=1;//有雷
            sum++;    
        }
        if(sum==10)
        break;
         
    }
    res=0;
    for(int i=0;i<10;i++)
    for(int j=0;j<10;j++)
    {
        if(randMark[i][j])
        grid[i][j]=-1;
    } 
    for(int i=0;i<10;i++)
    for(int j=0;j<10;j++)
    {
        if(grid[i][j]!=-1)
        {
            for(int k=0;k<8;k++)
            {
                int x=i+dir[k][0];
                int y=j+dir[k][1];
                if(x>=0&&x<10&&y>=0&&y<10&&grid[x][y]==-1)
                {
                   grid[i][j]++;    
                }
            }
        }
    }
    for(int i=0;i<10;i++)
    {
        for(int j=0;j<10;j++)
        cout<<showUs[i][j]<<" ";
        cout<<endl;
    }
    
    cout<<"请输入要翻开的位置的坐标:"<<endl;
    int x,y;
    while(1)
    {
        if(res==90)
        cout<<"恭喜您胜利啦,排雷成功!"<<endl; 
        cin>>x>>y;
        if(grid[x][y]==-1)
        {
            cout<<"您中雷啦!"<<endl;
            break;
        }
        else if(!vis[x][y]&&grid[x][y]>0)
        {
            res++;
            vis[x][y]=1;
            showUs[x][y]=grid[x][y]+'0';
            system("cls");
            for(int i=0;i<10;i++)
            {
                for(int j=0;j<10;j++)
                 cout<<showUs[i][j]<<" ";
                cout<<endl;
             }
             cout<<"请输入要翻开的位置的坐标:"<<endl;
        }
        else if(!vis[x][y]&&grid[x][y]==0)
        {
            bfs(x,y);
            system("cls");
            for(int i=0;i<10;i++)
            {
                for(int j=0;j<10;j++)
                 cout<<showUs[i][j]<<" ";
                cout<<endl;
             }
             cout<<"请输入要翻开的位置的坐标:"<<endl;
        }
    }
    return 0;
} 

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程网。

--结束END--

本文标题: C++控制台版扫雷游戏

本文链接: https://lsjlt.com/news/148163.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • C++控制台版扫雷游戏
    本文实例为大家分享了C++控制台版扫雷游戏的具体代码,供大家参考,具体内容如下 先说思路,其实挺简单的。 (1) 随机生成10个雷,标记到二维数组里,然后计算八个方向的雷的总数记录下...
    99+
    2024-04-02
  • C++控制台实现扫雷游戏
    本文实例为大家分享了C++控制台实现扫雷游戏的具体代码,供大家参考,具体内容如下 花了一下午写出来的控制台扫雷,主要通过修改和打印数组来实现。 主要的问题点: 1.在显示地图的过程中...
    99+
    2024-04-02
  • C++实现扫雷小游戏(控制台)
    本文实例为大家分享了C++实现扫雷小游戏的具体代码,供大家参考,具体内容如下 1.问题描述 用c++写一个扫雷小游戏,扫雷大家都玩过吧,先任意点一个方格,没有爆炸时,会出现一个数字,...
    99+
    2024-04-02
  • C语言版扫雷游戏
    本文实例为大家分享了C语言版扫雷游戏的具体代码,供大家参考,具体内容如下 1、思路 一、创建二维数组,来表示地图 每一个格子要表示的信息: 1、未翻开状态(草地)和已翻开状态(...
    99+
    2024-04-02
  • C++实现控制台版扫雷程序
    本文实例为大家分享了C++实现控制台版扫雷程序的具体代码,供大家参考,具体内容如下 测试平台: WIN7 工具: VC6.0 , VS2008都能编译得过。 花了两天时间写的,里面涉...
    99+
    2024-04-02
  • C语言版扫雷小游戏
    本文实例为大家分享了C语言版扫雷小游戏的具体代码,供大家参考,具体内容如下 一、游戏功能 1、显示该点周围雷的个数 2、第一次下子,不炸死 3、坐标周围没雷,可以实现展开 二、效果...
    99+
    2024-04-02
  • js版扫雷游戏
    本文实例为大家分享了js版扫雷游戏的具体代码,供大家参考,具体内容如下 界面 考虑到简单,一般,困难三个扫雷区域的格子数都不同,所以界面上的扫雷区域是用js动态生成。先搭好整体htm...
    99+
    2024-04-02
  • C语言版简单扫雷游戏
    本文实例为大家分享了C语言版的简单扫雷游戏,供大家参考,具体内容如下 思想 我们在设计的时候,首先将其分为三个部分,分别为头文件game.h游戏界面及主要实现的功能函数部分test....
    99+
    2024-04-02
  • C++实现简易版扫雷游戏
    目录一、菜单栏二、创建棋盘数组三、初始化棋盘四、打印棋盘五、布置雷六、排查雷七、全部代码总结一、菜单栏 1.先用printf函数制作一个简易版的菜单,并附上选项提示,玩游戏或者退出游...
    99+
    2024-04-02
  • C#实现扫雷游戏
    目录一、实验目的:二、实验要求:三、实验内容:四、实验源代码:五、实验结果:六、总结本文实例为大家分享了C#实现扫雷游戏的具体代码,供大家参考,具体内容如下 一、实验目的: 1、掌握...
    99+
    2024-04-02
  • 使用C语言制作扫雷游戏
    本篇文章和大家了解一下使用C语言制作扫雷游戏。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。实现扫雷创建俩12*12的字符数组,一个用作放雷,一个呈现给用户2、利用随机数往防雷数组中产生雷3、设计呈现给用户的数组4、利用输...
    99+
    2023-06-15
  • C语言实现简易版扫雷游戏
    本文实例为大家分享了C语言实现扫雷游戏的具体代码,供大家参考,具体内容如下 这个小项目源自两个月前学数组的时候,由于觉得比较重要,想记录一下。 首先,大概的思路是要做出两个二维数组充...
    99+
    2024-04-02
  • C语言版扫雷游戏怎么实现
    这篇文章主要介绍C语言版扫雷游戏怎么实现,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!用c语言做一个扫雷功能的简单实现,首先创建一个test.c来用于在写代码的途中测试扫雷代码,game.h来存放实现扫雷函数需要用到...
    99+
    2023-06-25
  • C语言制作扫雷游戏(图形库)
    本文实例为大家分享了C语言制作扫雷游戏的具体代码,供大家参考,具体内容如下 游戏预览: 学习内容: 1.图形库文件的使用2.C++的使用,如类函数3.了解扫雷的规则,严谨的思维逻...
    99+
    2024-04-02
  • C语言实现扫雷小游戏简单版
    本文实例为大家分享了C语言实现扫雷小游戏的具体代码,供大家参考,具体内容如下 在vs2019创建新项目,然后添加两个源文件test.c和game.c,接着创建一个头文件game.h。...
    99+
    2024-04-02
  • C语言实现扫雷小游戏(扩展版)
    本文实例为大家分享了C语言实现扫雷小游戏的具体代码,供大家参考,具体内容如下 实现的拓展功能如下: 1.设置游戏难度等级2.保证玩家在第一把踩雷后不被炸死3.若排雷的地方无雷,自动扩...
    99+
    2024-04-02
  • C++实现趣味扫雷游戏
    本文实例为大家分享了C++实现趣味扫雷游戏的具体代码,供大家参考,具体内容如下 流程设计 1.初始化阵列。 2.输入坐标点。 3.选择:挖掘,标记,取消标记,重启,退出游戏。 如果选...
    99+
    2024-04-02
  • C#如何实现扫雷游戏
    今天小编给大家分享一下C#如何实现扫雷游戏的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。一、实验目的:掌握c#窗体和控件的常...
    99+
    2023-07-02
  • C语言怎么实现简易版扫雷游戏
    这篇文章将为大家详细讲解有关C语言怎么实现简易版扫雷游戏,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。C语言是什么C语言是一门面向过程的、抽象化的通用程序设计语言,广泛应用于底层开发,使用C语言可以以简易...
    99+
    2023-06-14
  • C语言实现递归版扫雷游戏实例
    目录思路清晰的逻辑菜单棋盘布置雷排雷判断输赢text.c实现game.c实现game.h实现递归部分详解总结思路 清晰的逻辑 为方便将其分为三个文件:text.c(测试) game....
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作