首页 > 其他分享 >扫雷(简易版包会)

扫雷(简易版包会)

时间:2024-11-24 20:34:15浏览次数:6  
标签:函数 创建 简易版 扫雷 坐标 包会 棋盘 我们

相信扫雷都是大家初学c语言中最刻骨铭心的记忆,如今博主我大体已经学完了c语言,依旧感觉独自完成这个项目之后受益匪浅,今天和大家分享一下这个简易版的扫雷游戏该怎么去做

话不多说,我们马上开始

1.创建

首先我们把它当做一个简易的项目去做,那么其中肯定涉及到很多代码,甚至是大量的函数,因此我们想初步创建三个文件

分别是:game.c:用来存放函数的主体

              game.h:用来声明函数和定义宏

              test.c     :用来测试,主函数调用

2.构建主体框架

我们想,完成一个项目最关键的应该就是确定大体的框架

扫雷作为一个游戏,在我们能力范围内,首先需要的是肯定是菜单,然后就是进入游戏的逻辑

那么这个框架我们就这样实现

游戏的选择自然而然要细心考虑到三种情况,使用switch语句实现,do_while语句实现循环,毕竟我们不可能玩一次,这里让我们忽略掉srand函数的调用。

3.完善game主体函数

有了框架,接下来扫雷游戏的关键就是game函数的逻辑完善,我们一步一步来分析。

我们想要玩游戏,像我们之前在学校老旧机房里玩的扫雷游戏,至少得有个正儿八经的棋盘吧。

那我们先从第一步开始,完善好棋盘的逻辑。

(1)棋盘的创建和初始化

我们开始想要创建简单点的棋盘,9*9大小的,那第一时间想到的肯定是二维数组,这里我们不如给未来留条路,当我们想要改变棋盘大小的时候还能轻松改变,那么我们就定义一个宏。

<1>第一个问题

然后我们再想创建一个棋盘真的可以吗?我们假如一开始棋盘都是未知的,可以将其初始化为 ‘*’ ,但当我们想要向里面插入雷的时候,假设将其改为‘1’,那如果要显示周围有几个雷的时候,又该怎么显示呢,这个逻辑下创建两个棋盘似乎是最合适的,一个观察雷的的个数(相当于给开发人员看的),一个用来玩(给玩家看的)。

<2>第二个问题

然后我们再想,我们该玩家怎么去扫雷,输入坐标的形式似乎是比较合理的;还有就是当我们显示周围有几个雷的时候,如果这个雷在边上,或者角上,如何选择性的只访问创建数组范围内的格数,从而避免非法访问呢。似乎依靠强解很难处理,那我们不如换个思路,创建一个大一圈的数组,也就是11*11的数组,诶,就能避免非法访问这个问题了。

<3>解决问题

定义宏

创建数组并且初始化

初始化函数就是简单的嵌套for循环

然后我们打印棋盘,并且标注上相应的坐标,函数实现如下

OK,棋盘的部分我们似乎已经搞定了,继续完善。

(2)布置雷

假设我们要布置十个雷,那么我们要注意两个地方

第一:要随机放置雷

第二:不要把雷放在同一个位置上

第一点我们就需要使用rand%9+1 可以产生1~9之间的数字

第二点我们需要判断一下,避免将雷重复放在同一个位置上。

函数实现如下:

(3)排雷

最后一步就是排雷

<1>第一点:输入坐标

我们要考虑到输入坐标的合法性,坐标要在1~9范围之间,进行选择一次

我们要考虑到输入的坐标是否已经被排查过了,进行第二次选择

接下来,第三次选择就是

1,选到雷被炸死

2,未选到雷直到排净所有不是雷的坐标,游戏胜利

因此我们知道这是一个循环,循环结束的条件就是排净所有不是雷的坐标

其中被炸死会跳出循环,排净所有的坐标也会跳出循环,因此循环外再判断

最后一次,第四次选择,完成。

<2>还有最后一个细解,就是得到这个坐标周围雷的个数

那么在mine这个数组中,周围一圈加起来就是雷的个数,只不过是字符的数字,-8*‘0’即可得到整形,同理整形加上“0”也就可以得到相应的字符数字。

函数实现如下:

4.完结撒花

实现结果给大家看一下

感谢大家的观看,共勉

标签:函数,创建,简易版,扫雷,坐标,包会,棋盘,我们
From: https://blog.csdn.net/gycdn/article/details/144011382

相关文章

  • 扫雷游戏升级版 含递归链式展开(一次展开一片区域) 代码详细解读 C语言
    1、前言:我看了CSDN有很多小伙伴也写了扫雷小游戏但是大部分写的代码都是一次输入坐标只能展开一个位置并没有还原我们小时候最初始的游戏玩法可玩性很低 我在这用函数递归链式展开一片还原最初始游戏提高可玩性 先放效果图↓2、建议:一个程序代码的实现并不是只靠......
  • 用C语言写一个扫雷游戏
    如图这是我们常见的扫雷游戏的界面。为了实现扫雷游戏,我们借助一个二维的数组来实现,我们可以通过在二维数组里填充数字0来表示该处没有雷,填充1来表示该处有地雷。但是如图所示显示界面我们并不能看见此处到底是1或者0,一个数组我们不可能让其既填充0或1又让其填充别的字符来起......
  • 基于java中的SSM框架实现简易版营业厅宽带系统项目【附项目源码+论文说明】
    基于java中的SSM框架实现营业厅宽带系统演示【内附项目源码+LW说明】摘要现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本营业厅宽带系统就是在这样的大环境下诞生,其可以帮助管理者在短时间内处理......
  • 数组和函数实践:扫雷游戏
    ⽬录1.扫雷游戏分析和设计2.扫雷游戏的代码实现3.扫雷游戏的扩展1.扫雷游戏分析和设计1.1扫雷游戏的功能说明•使⽤控制台实现经典的扫雷游戏•游戏可以通过菜单实现继续玩或者退出游戏•扫雷的棋盘是9*9的格⼦•默认随机布置10个雷•可以排查雷   ......
  • 小游戏-扫雷简易版
    雷的个数和棋盘大小可以随意改变一、test.c(主程序)#include"game.h"voidmenu(){ printf("****************************\n"); printf("*****开始游戏-1*****\n"); printf("*****结束游戏-0*****\n"); printf("**************......
  • 如何撰写一个优秀的 stable diffusion 提示词?看完这篇文章包会的!
    在本文中,我将详细介绍如何撰写一个优秀的提示词。首先,需要明确的是,称一种方式为好,并不意味着你只能使用这种方式,就像我们都知道一些书籍是好书,但并不意味着每个人都只能阅读这些书一样。通过学习其中一种好的方式,可以建立起一些概念,帮助你更快入门AI绘画。因此,这篇文章我......
  • 初识扫雷!
                       前言 今天我们来简单了解一下一款经典的游戏--扫雷!文末附上完整代码。扫雷作为微软开发并发行的一款大众类的益智小游戏,于1992年发行。玩家的目标是在最短时间内识别出所有非雷区的格子,同时避免触碰到地雷。游......
  • [学习笔记]树链剖分(简易版) 及其LCA
    树链剖分先讲解一下一些基础定义(都是在树上)重儿子:一个节点中所有儿子中子树大小最大的一个儿子(每个节点最多有一个重儿子)轻儿子:一个节点除重儿子外所有的节点重链:若干个重儿子组成的链链顶:一条链中深度最小的节点以下图为例子(红色连续线段为重链)对于节......
  • 用C语言完成扫雷游戏
    引言     《扫雷》是一款大众类的益智小游戏,于1992年发行。游戏目标是在最短的时间内根据点击格子出现的数字找出所有非雷格子,同时避免踩雷,踩到一个雷即全盘皆输。            相信大家一定对《扫雷》这个游戏不陌生,我们只要知道游戏运行的逻辑,就可......
  • wangeditor——cdn引入的形式创建一个简易版编辑器——js技能提升
    昨天同事那边有个需求,就是要实现聊天功能,需要用到一个富文本编辑器,参考如下:上面的这个效果图是博客园的评论输入框最终使用wangEditor编辑器实现的效果如下:只保留了个别的菜单:默认模式的wangEditor编辑器如下:下面直接上代码:解决步骤1:cdn引入head头部标签引入css<......