关于扫雷游戏的创作

【C++小游戏 - 1】扫雷 v1.0.0 正式版及创作大概思路 是的,在写完黑客攻击这个坑人的小代码后,我又来写游戏了! 阅读详情

1.先明确要干什么
首先要一个99的棋盘,然后把棋盘打印出来,然后随机设置雷,点击,如果是雷就会爆炸,如果不是就显示附近雷的个数,当点完全部非雷的地方,游戏成功
2.用到的知识点:
数组:要有两个数组,一个用于给后排布置雷的位置,一个用于给玩家进行游戏。
原本方块是99的,但是边界上的也要有33的周边范围,所以要扩展原本的范围,下标要从0到10,
是11个数,则扩展为1111的正方形(可以自己画一个22的,然后把它扩展一圈,就要44的才可以)
循环:for(每一个位置要用横竖两个循环才可以表示出来)
while埋雷循环
do while 菜单反复
艾斯克码表:用这个来判断有多少个雷,因为’1’是49,'0’是48,如果用1表示雷,0表示非雷,就可以用它们的差表示有多少个雷
mine[x-1][y]+mine[x+1][y]+mine[x-1][y+1]+mine[x+1][y+1]+mine[x-1][y-1]
+mine[x+1][y-1]-8
’0’
预处理\头文件:这里用到了宏定义,还有3个头文件
出现的步骤:1.打印菜单
2.棋盘初始化
3.打印棋盘
4.随机布置雷
5.排查雷

简易扫雷用到的全部知识点(不含递归)

  1. 预处理 / 头文件
  • #define 宏定义(定义行数、列数、雷的数量, ROWS 、 COLS 、 EASY_COUNT )
  • #include 头文件包含( stdio.h 、 stdlib.h 、 time.h )
  1. 基础语法
  • 变量定义, int / char 类型
  • do while 循环(菜单反复玩游戏)
  • while 循环(埋雷循环)
  • for 循环(两层for,初始化棋盘、打印棋盘)
  • if 判断, switch 分支(菜单选择)
  1. 数组(重点)
  • 二维char数组, char board[ROWS][COLS]
  • 二维数组作为函数参数传递(这是很多人卡的地方)
  • 数组下标从0开始,利用外围一圈下标做“围墙”,规避边界判断
  1. 字符与ASCII码(核心考点)
  • 字符存储本质是ASCII值
  • ‘1’-‘0’ :字符转数字
  • 数字 + ‘0’ :数字转回字符(放到show棋盘)
  1. 随机数
  • rand() 获取随机数
  • srand((unsigned int)time(NULL)) 设置随机种子,放main里
  • rand()%n +1 控制随机坐标范围
  1. 函数
  • 自定义函数声明、定义、调用
  • 函数传参
  • 函数返回值(统计雷数量 GetMineCount 返回int)
  1. 多文件工程思想(加分项)
  • .h 头文件:放宏、函数声明
  • .c 源文件:写函数实现
  • 多文件联合编译(考试很少讲)

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#define ROW 9
#define COL 9
#define ROWS ROW+2
#define COLS COL+2
#define MINE_COUNT 10

char board[ROWS][COLS];

void menu()
{
printf(“…\n”);
printf(“…1.play…\n”);
printf(“…0.leave…\n”);
printf(“…\n”);
}

void InitBoard(char board[ROWS][COLS], int ROW,int COL, char set)
{
int i = 0;
int j = 0;
for (i = 0; i < ROW; i++)
{
for (j = 0; j < COL; j++)
{
board[i][j] = set;
}
}
}

void DisplayBoard(char board[ROWS][COLS], int ROW, int COL)
{
int i = 0;
int j = 0;
printf(“\n”);
for (j = 1; j <= COL; j++)
{
printf(“%d”, j);
}
for (i = 0; i <= ROW; i++)
{
printf(“%d\n”, i);
for (j = 1; j <= COL; j++)
{
printf(“%c”, board[i][j]);
}
printf(“\n”);
}
}

void SetMine(char mine[ROWS][COLS], int ROW, int COL)
{
int count = 0;
while (count < MINE_COUNT)
{
int x = rand() % ROW + 1;
int y = rand() % COL + 1;
if (mine[x][y] == ‘0’)
{
mine[x][y] = ‘1’;
count++;
}
}
}

int GetMineCount(char board[ROWS][COLS], int x, int y)
{
return board[x - 1][y - 1] + board[x - 1][y] + board[x - 1][y + 1] + board[x][y - 1] + board[x][y + 1] + board[x + 1][y + 1] + board[x + 1][y] + board[x + 1][y - 1] - 8 * ‘0’;
}

void FindMine(char board[ROWS][COLS], char show[ROWS][COLS], int ROW, int COL)
{
int x = 0;
int y = 0;
int n = 0;
int win = 0;
while (win < ROW * COL - MINE_COUNT)
{
printf(“请输入”);
scanf(“%d%d”, &x, &y);
if ((x >= 1 && x <= 9) && (y >= 1 && y <= 9))
{
if (board[x][y] == ‘1’)
{
printf(“你被炸死了”);
DisplayBoard(board, ROW, COL);
break;
}
else
{
int cun = GetMineCount(board, x, y);
show[x][y] = cun + ‘0’;
DisplayBoard(show, ROW, COL);
win++;
}
}
else
{
printf(“你输入错误,重新输入”);
}
if (win == ROW * COL - MINE_COUNT)
{
printf(“游戏胜利”);
DisplayBoard(board, ROW, COL);
}
}
}

void game()
{
char mine[ROWS][COLS];
char show[ROWS][COLS];
InitBoard(mine, ROWS, COLS, ‘0’);
InitBoard(show, ROWS, COLS, ‘*’);
SetMine(mine, ROW, COL);
DisplayBoard(show, ROW, COL);
FindMine(mine, show, ROW, COL);
}

int main()
{
srand((unsigned int)time(0));
int input = 0;
do
{
menu();
scanf(“%d”, &input);
switch (input)
{
case 1:
game();
break;
case 0:
printf("leave game ");
break;
default:
printf(“重新输入”);
break;
}
} while (input);
return 0;
}

问题解决:打开VMware创建的虚拟机,电脑立刻蓝屏并重启 VMware Workstation 与 Device/Credential Guard 不兼容。在禁用 Device/Credenti 阅读详情

相关推荐

OnePose++: Keypoint-Free One-Shot Object Pose Estimation without CAD Models

算法:首先采用LoFTR的细匹配模块,将粗匹配点周围的小窗口内,通过对比特征找到最相似的位置,细化当前特征点的位置。算法:PnP算法,利用3D点和2D投影点的对应关系,计算相机相对于物体的6D姿态(位置朝向)。算法:使用COLMAP,对2D粗匹配对(不依赖传统关键点匹配)进行特征轨迹计算并生成半稠密点云,每个3D点包含坐标和对应的2D投影点。算法:LoFTR粗匹配模块,将每一个像素点视为伪关键点,生成半稠密的2D匹配对。输入:优化后的3D、当前视图的2D特征点。输出:粗半稠密点云以及物体的特征轨迹。

雨落倾城的博客 888

扫雷游戏的创作与思路

这时候我们就需要用上名为 rand 的库函数,rand 的随机数为伪随机数,如果用户未设定随机数种子时,系统默认的随机数种子为1,因此每次的随机值都是相同的,而srand 是用来设置rand产生随机数时随机数种子,所以rand 函数 需要配合srand函数才能产生真正的随机数。先在test.c中定个函数,然后在game.h中给这个函数声明,最后在game.c中实现声明(以下的图片是根据这句话的顺序排序的)此时,扫雷的全部代码已经完毕,若不想打印布置好的雷的信息,在test.c文件中注释掉打印的就好。

2401_82689456的博客 1011

PySpark 本地开发环境搭建与实践

本文详细介绍了 PySpark 本地开发环境的搭建过程,包括 JDK、Hadoop、Anaconda、PySpark 的安装以及 Pycharm 工程的创建。同时,深入讲解了代码编写、本地开发案例(如 WordCount、处理特殊分隔符、读取 hdfs 数据、获取外部变量)、Spark 程序的监控和 local 模式下结果文件数量问题等内容。通过掌握这些知识和技能,读者可以在 Windows 本地环境中高效地进行 PySpark 开发,处理大规模数据,解决实际业务中的数据分析和处理问题。

天冬忘忧的博客 3015

用C语言创作扫雷小游戏

如图实现大体游戏逻辑,用do-while语句实现循环,用switch语句实现选择。输入 1 :进入游戏;输入 0 :退出游戏;输入其他数字则显示:输入错误,请重新输入。

weixin_61091020的博客 633

全国大学生软件测试大赛Web应用测试(二)Selenium功能测试环境配置

全国大学生软件测试大赛Web应用测试(二)Selenium功能测试环境配置指南配置JAVA配置mooctest配置ChromeDriver配置SeleniumSelenium的使用 环境配置指南 配置JAVA 首先进入JDK8官方安装地址 然后找到Windows 64位 jdk8 点击下载(这里下载需要登录Orcale 账户) 下载后JDK的安装根据提示进行,还有安装JDK的时候也会安装JRE,一并安装就可以了。 安装JDK,安装过程中可以自定义安装目录等信息,例如我们选择安装目录为 D:\java\jav

Kennen0_0的博客 9606

51单片机IAP技术详解:从原理到实战,实现远程程序自更新

在嵌入式系统开发中,程序更新是产品维护和功能迭代的核心需求。传统方式依赖外部烧录器,操作繁琐且无法远程进行。IAP(在应用中编程)技术则从原理层面解决了这一难题,它允许单片机在运行过程中通过特定接口(如串口)动态修改自身的Flash程序存储器。这项技术的核心价值在于赋予设备远程升级和自主维护的能力,极大地延长了产品生命周期并降低了维护成本。其典型应用场景包括智能家居控制器、工业数据采集模块和远程仪表等部署后不便拆卸的设备。本文以经典的51单片机(如STC89C52)为例,深入剖析IAP的实现,其中Bootl

weixin_29161719的博客 407

数组和函数的实践——扫雷游戏的创作

扫雷游戏是一个很经典的电脑小游戏了,相信大家在童年的时候都有玩过,是绞尽脑汁然后通关,还是每次都被炸弹杀死,不管怎样,相信这个游戏都给大家留下了深刻的印象,那么接下来我将介绍如何来写一个9*9的基本扫雷游戏回忆我们的童年。

Ivy_0418的博客 924

三维重建笔记_光束平差法(Bundle Adjustment, BA)

目录 1 光束平差法(Bundle Adjustment, BA) 1.1 SFM (Structure‐from‐Motion) 定义 问题描述 1.2 重投影误差 (Reprojection Error) 目标函数 1.3 使用 Levenberg‐Marquardt Algorithm 进行优化 问题描述 简化目标函数 参考 Gauss‐Newton Method ...

惊鸿一博 2万+

(C语言)扫雷游戏的创作

帮助C语言初学者能够快速上手,写出扫雷游戏

2401_87944878的博客 873

20、机器人硬件改造与Geomagic Touch设备的运动学和动力学模型

本文详细介绍了机器人CRS 465和255的硬件改造过程,包括数字阶段、模拟阶段、功率阶段及软件实现,并深入研究了Geomagic Touch触觉设备的五自由度与三自由度运动学、微分运动学及动力学模型。文章还探讨了其在虚拟手术、装配等场景中的应用,提出了硬件与模型优化方向,如电源管理改进、信号处理优化、参数校准与自适应控制,并展望了多机器人协作、多传感器融合与智能控制算法的发展前景。

e4f5g6h7的博客 122

CAMERALINK硬件封装说明

闲言少叙,直接上活,Cameralink硬件接口当前主要分为MDR26和SDR26两种,其中MDR对应封装较大价格比较便宜,SDR对应尺寸较小价格比较贵,这点我个人总是记错的图1 MDR26实物图图2 SDR26实物图。

6175

扫雷游戏创作实践

在学习完监听器、类的继承、Swing面板绘制和事件的监听等内容后,我们可以完成扫雷游戏的制作这个项目来运用学过的这些知识。扫雷游戏和之前的五子棋游戏有相同点和不同点,相同点在于都运用了相同的绘制棋盘线思路和UI设计思路。不同点是扫雷游戏运用了更多的数组来存储有关数据,“数据”和“玩家能看到的东西”是两回事,这一点比五子棋游戏更有意思。扫雷的核心趣味在于隐藏:棋盘上的雷和周围的数字其实在启动游戏的那一刻就全部确定了,而玩家看到的是一片空白,必须一格一格点开覆盖的格子去推理,并用棋子标记。

2602_96488057的博客 311

5、自适应 RBF 神经网络控制方法解析

本文详细解析了基于RBF神经网络的多种自适应控制方法,包括针对函数未知、参数未知以及存在外部干扰的非线性系统的控制策略。通过李雅普诺夫稳定性理论设计自适应律,确保闭环系统稳定,并结合仿真示例和MATLAB代码实现,展示了方法的有效性。文章还对比了不同控制方法的适用场景,并给出了实际应用流程,为复杂系统控制提供了系统性解决方案。

ol789012的博客 75

JAVA 实现《扫雷》游戏|优快云创作打卡

JAVA 实现《扫雷》游戏|优快云创作打卡

毅慎的博客 2万+

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

【c语言如何创作小游戏】扫雷篇(第二弹)(还有其他详细补充)

求求大家多多点赞加关注,这对我真的很重要

m0_73228832的博客 462

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

使用 python 的单人AI 扫雷游戏

AI玩扫雷 扫雷是一款单人益智游戏。游戏的目标是清除包含隐藏的“地雷”或炸弹的矩形板,而不引爆其中任何一个,借助每个区域中相邻地雷数量的线索。 扫雷游戏表示 class Minesweeper(): def __init__(self, height=8, width=8, mines=8): # 设置初始宽度、高度和地雷数量 self.height = height self.width = width self.mines = set() #

努力是为了站在万人之中,成为别人的光 1万+

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

扫雷游戏的程序设计

扫雷程序设计”零基础“详解!!!

Morpheus_Luen的博客 1287

扫雷小游戏

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33907511的博客 229

c#版扫雷网络版

最近在大唐实习时,由于电脑没上网,于是休息时间我们班掀起了一股扫雷风,大家互相 挑战新纪录,趁者这股风,我花了一天时间写了一个这样的扫雷游戏,为了适应大家的扫雷习惯,我的扫雷几乎和windows里的一样,不论是界面还是鼠标事件,我最后还加上了多人对战的功能(网络版),网络部分实现的比较简单,就只是同步显示其他玩家的扫雷信息,包括,剩余雷数等,这也是扫雷游戏和别的游戏的区别决定的,其关键一点就是

阿伟 3834

DHtml 基础 扫雷游戏

DHtml 基础 扫雷游戏 心得: 课程设计的时候,无聊做着玩的 实现: html +css +jQ ============= 婊盘下载 提取:weng

hyoka的博客 143

数组和函数实践:扫雷游戏

通过前面的学习,我们已经了解过了数组与函数。今天我们就一起做一个小项目来巩固实践一下吧。

2302_81016149的博客 1026

HTML+js写的一个扫雷游戏

闲来相安无事,在上班时间偷偷的写了个扫雷游戏,自娱自乐。   自己设计的算法,加入了jquery-1.7.2.js库用于实现html文档的操作。游戏支持鼠标右击操作。       主要算法点: 1. 雷阵的初始化:包括类,数字,空白区域的数据参数的初始化。 2. 鼠标点击雷阵区域:点到空白的区域,需要迭代遍历雷阵中该空白点附近的所有空白区域和空白区域所包围着的数字。    ...

fjguodong的专栏 381

j2me 扫雷游戏

:D 业余时间写了小游戏,j2me 扫雷游戏,请大家指点一下!

happylove311 126

人工智能在游戏设计中的应用

人工智能游戏的快速发展,为计算机游戏产业提供了新的机遇,目前人工智能技术已经成为优秀计算机游戏开发中不可缺少的部分。 这里首先介绍人工智能游戏的概念以及基本的游戏人工智能技术,然后介绍游戏角色的指导与运动、追逐与躲避、群聚、路径搜索等智能游戏角色设计的基本技术。介绍智能游戏开发方法与开发工具,最后简单介绍扫雷机智能游戏开发。 人工智能游戏 计算机游戏(Computer Game)始于1958年的游戏“两人网球” 。 人工智能游戏(AI Game)为计算机游戏业提供了新机遇,目前已经形成了数十亿美圆的产业。

学习日常分享 4931

推荐一款小游戏

今天推荐一个小游戏合集 - Simon Tatham's Portable Puzzle Collection,游戏主要训练的是逻辑推理思维能力。Simon Tatham's Portable Puzzle Collection,简称是SGT Puzzles,他是一个谜题的合集(Puzzle Collection),这些谜题游戏都很小巧,他们都是一个人玩的,并且一局的时间...

bisal的专栏 4357

扫雷游戏讲解

在搭建好游戏目录之后,我们就开始思考下一个步骤,通过观察,我们不难发现,扫雷这款游戏跟我们所学的二维数组非常相似,可以说是一模一样,都是由行和列所组成,那既然这样,那我们便可以创造一个二维数组,但我们首先要想一个真的够吗?当我们用'0'和'1'来分别表示”没雷“和”有雷“,那我们有没有想过,当我们所猜的地方正好周围有一颗雷时,那这个数字“1”到底表示的是“有雷”还是“周围雷的数量了”。所以为了方便使用,我们可以创造两个二维数组,一个用于“专门存放布置好雷的信息。

越努力,越幸运 1728
上一篇: 图像容量及单位计算
下一篇: 关系操作符oj&&c语言大学第一节课笔记
Code_Solitude
博客等级 码龄116天 1粉丝 76原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值