【C/C++ 10】扫雷小游戏

一、题目

写一个扫雷小游戏,每次输入一个坐标,若该处是地雷,则游戏失败,若该处不是地雷,则显示周围地雷数量,若扫除全部非地雷区域,则扫雷成功。

二、算法

设置两张地图(二维数组)mine和show,一张用于埋雷,一张用于显示当前的排雷情况。

两张地图的大小都比游戏雷场的ROW和COL加了两行两列,方便计算每个点周围的雷数。

mine的数据类型是int,0表示无雷,1表示有雷。

三、代码

#define _CRT_SECURE_NO_WARNINGS 1#include <iostream>
#include <ctime>
#include <Windows.h>
using namespace std;#define ROW 5
#define COL 5
#define ROWS (ROW + 2)
#define COLS (COL + 2)
#define BOOM 3class Game
{
public:void Init(){memset(_mine, 0, sizeof(int) * ROWS * COLS);memset(_show, '*', ROWS * COLS);_boom = BOOM;for (int i = 0; i < ROWS; ++i)for (int j = 0; j < COLS; ++j)_mine[i][j] == 0;// 埋雷while (_boom){int x = rand() % ROW + 1;int y = rand() % COL + 1;if (_mine[x][y] != 1){_mine[x][y] = 1;--_boom;}}}void Display(){system("cls");cout << "--------- 扫雷 ---------" << endl << "   ";for (int i = 1; i <= COL; ++i)printf("%2d ", i);cout << endl;for (int i = 1; i <= ROW; ++i){printf("%2d ", i);for (int j = 1; j <= COL; ++j){cout << ' ' << _show[i][j] << ' ';}cout << endl;}}void ShowMines(){cout << endl << endl;cout << "--------- 雷场 ---------" << endl << "   ";for (int i = 1; i <= COL; ++i)printf("%2d ", i);cout << endl;for (int i = 1; i <= ROW; ++i){printf("%2d ", i);for (int j = 1; j <= COL; ++j){if (_mine[i][j] == 0)cout << "   ";elsecout << " B ";}cout << endl;}}char GetMineCount(int x, int y){return _mine[x - 1][y - 1] + _mine[x][y - 1] + _mine[x + 1][y - 1]+ _mine[x - 1][y + 1] + _mine[x][y + 1] + _mine[x + 1][y + 1]+ _mine[x - 1][y] + _mine[x + 1][y] + '0';}void Sweep(){int count = ROW * COL - BOOM;while (count){int x, y;cout << "请输入扫雷坐标:";cin >> x >> y;if (x < 1 || y < 1 || x > ROW || y > COL){cout << "坐标输入不合法,请重新输入" << endl;continue;}if (_mine[x][y] == 1){ShowMines();cout << endl << "很遗憾, 你踩到地雷了……" << endl;return;}else{_show[x][y] = GetMineCount(x, y);Display();count--;}}cout << endl << "恭喜你,扫雷成功!" << endl;ShowMines();}private:int _mine[ROWS][COLS];char _show[ROWS][COLS];int _boom;
};int main()
{srand((unsigned int)time(nullptr));Game game;game.Init();game.Display();game.Sweep();return 0;
}

四、测试

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/449643.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Data Encryption Standard算法:历经考验的经典加密方案

在当今数字化时代&#xff0c;数据安全是一个至关重要的问题。为了保护敏感数据的机密性和完整性&#xff0c;加密算法成为了数据保护的关键技术。其中&#xff0c;DES&#xff08;Data Encryption Standard&#xff09;算法作为一种经典的对称密钥加密算法&#xff0c;具有广泛…

如何计算模型的复杂度(参数量,FLOPs)

参考 如何计算神经网络模型的复杂度 深度学习卷积、全连接层、深度可分离层参数量和FLOPs计算公式 概念 Params&#xff1a;模型的参数量。&#xff08;空间复杂度&#xff09;FLOPs&#xff1a;FLoating point Operations&#xff0c;前向推理的计算量。&#xff08;时间复…

MySQL中去除重复(十一)

MySQL中去除重复(十一) 一、相同的行 我们要去除相同行要使用DISTINCT关键字 SELECT DISTINCT 列名 FROM 表名; distinct 是针对查询的结果集合进行去重而不是针对某一行或者某一列。 二、查询中的行选择 用 WHERE 子句限制从查询返回的行。一个 WHERE 子句包含一个 必须满…

计算机网络——链路层(1)

计算机网络——链路层&#xff08;1&#xff09; 小程一言专栏链接: [link](http://t.csdnimg.cn/ZUTXU)前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家&#xff0c; [跳转到网站](https://www.captainbed.…

嵌入式中C 语言中的三块技术难点

C 语言在嵌入式学习中是必备的知识&#xff0c;甚至大部分操作系统都要围绕 C 语言进行&#xff0c;而其中有三块技术难点&#xff0c;几乎是公认级别的“难啃的硬骨头”。 今天就来带你将这三块硬骨头细细拆解开来&#xff0c;一定让你看明白了。 0x01 指针 指针是公认最难理…

智慧文旅:驱动文化与旅游融合发展的新动力

随着科技的快速发展和人们生活水平的提高&#xff0c;文化和旅游的融合成为了时代发展的必然趋势。智慧文旅作为这一趋势的引领者&#xff0c;通过先进的信息技术手段&#xff0c;推动文化与旅游的深度融合&#xff0c;为产业的发展注入新的活力。本文将深入探讨智慧文旅如何成…

element-ui icon 组件源码分享

今日简单分享 element-ui 源码中的 icon 组件&#xff0c;主要从以下两个方面来分享&#xff1a; 一、源码中 icon 设计思想是什么呢&#xff1f;主要从页面结构、数据、 icon 样式三个方面来分享。 1.1 源码中 icon 组件的页面结构&#xff0c;可以在 package 目录下找到 ico…

C++集群聊天服务器 数据模块+业务模块+CMake构建项目 笔记 (上)

跟着施磊老师做C项目&#xff0c;施磊老师_腾讯课堂 (qq.com) 本文在此篇博客的基础上继续实现数据模块和业务模块代码&#xff1a; C集群聊天服务器 网络模块业务模块CMake构建项目 笔记 &#xff08;上&#xff09;-CSDN博客https://blog.csdn.net/weixin_41987016/article…

Autonomous_Exploration_Development_Environment的PathFollower学习笔记

1.PathFollow算法简介&#xff1a; PathFollow算法是路径跟踪算法&#xff0c;是在得到由localplanner算法发布的无碰撞路径话题”/path”中的路径数据start_path(相对于车体坐标系的一系列路径点(101个点))&#xff0c;根据车体与目标之间的角度和距离&#xff0c;控制车辆的…

Ubuntu18.04安装Matlab流程笔记

提示:博主取舍了很多大佬的博文并亲测有效,分享笔记邀大家共同学习讨论 Ubuntu18.04 安装Matlab流程 下载安装包和破解文件安装Matlab注册并运行 下载安装包和破解文件 matlabR2019A源码 提取码:2ztb 下载的Linux matlab2018a文件夹内有三个文件&#xff1a; # 解压Matlab201…

【unity小技巧】unity3d环境带雾的昼夜系统变化

最终效果 文章目录 最终效果眩光素材眩光配置全局灯光配置天空盒配置天空盒资产配置天空盒&#xff0c;开启雾 代码控制天空盒 环境 雾 灯光昼夜交替变化参考完结 眩光素材 链接&#xff1a;https://pan.baidu.com/s/1qlFSJSju6ZjwCylwkh14eA?pwdveww 提取码&#xff1a;veww…

了解 Redis Channel:消息传递机制、发布与订阅,以及打造简易聊天室的实战应用。

文章目录 1. Redis Channel 是什么2. Redis-Cli 中演示使用3. 利用 Channel 打造一个简易的聊天室参考文献 1. Redis Channel 是什么 Redis Channel 是一种消息传递机制&#xff0c;允许发布者向特定频道发布消息&#xff0c;而订阅者则通过订阅频道实时接收消息。 Redis Cha…