首页 宽带

Scratch版扫雷游戏

(来源:网站编辑 2022-12-08 08:15)

文章正文

Scratch版扫雷游戏

编程·创客

直到Windows 7,微软的Windows系统一直自带《扫雷》这款益智小游戏。游戏目标是在最短的时间内根据点击方块出现的数字找出所有非雷方块,同时避免踩雷,踩到一个地雷游戏即结束。这款游戏规则简单容易上手,虽然微软的本意是让用户熟悉鼠标操作,由于游戏简单有趣,所以受到大众的喜欢。Win10以后版本可以在应用商店中搜索“扫雷”,免费下载第一个“Microsoft Minesweeper”即可(图1)。

现在我们来思考如何用Scratch来制作这款游戏呢?游戏关键需要实现以下几个流程:

1. 确定方块的点坐标

2. 布置遮罩方块

3. 随机埋雷

4. 布置数字方块

一、素材准备

1. 主界面角色有:游戏标题“扫雷Mine sweeper”、3个难度按钮及对应3个介绍、返回主界面按钮(图2)。

2. 游戏界面角色有:遮罩方块、数字方块(空白0到数字8)有9个造型、地雷、提示语“正在构建中,可能需要几秒,请等待”、返回主界面按钮继续复用。

3. 列表和变量

列表2个:坐标组X,坐标组Y;变量8个:边长、探测、周围雷数、总雷数、tx、ty、X坐标、Y坐标。它们的具体作用在后文中再作介绍。

二、确定方块的点坐标

f4e9db6cebf5acd72d335ccfb5d258e05aa5cd1a2f67f196669105716d12b887以最简单的6×6扫雷方阵为例。点击“简单”按钮后,先确定一个左上角的点坐标,这里选择了点(-50,50),利用循环控制模块,双重循环六次,将X坐标、Y坐标分别加入到列表“坐标组X”和“坐标组Y”中去。最后得到36组数据,即36个方块的点坐标,然后广播“开始游戏”(图3、图4)。

三、布置遮罩方块

对角色遮罩方块编程,利用重复执行N次模块,嵌套使用,可以克隆出36个自己。设置成绿旗点击时先隐藏。为了要遮住下面的数字方块和雷块,当作为克隆体启动时,前移一层,并显示。游戏进入等待用户点击的状态(图5)。

当鼠标点击时有2种动作,如果碰到雷块则广播游戏结束,否则删除此克隆体,将遮住的数字方块显示出来(图6)。

四、随机埋雷

当收到“开始游戏”消息后,就可以进行埋雷了。先将其大小设为80,然后根据总雷数,重复执行相应次数,每次埋一颗雷,使用自定义埋雷模块,并设其X坐标为坐标组X的某个随机元素,其Y坐标为坐标组Y的某个随机元素。比如,某颗雷产生在位置(2,3),某颗雷产生在位置(5,2)等等,全部埋雷结束后,将母体移走,并广播“埋雷结束”(图7)。

在克隆启动的时候,将雷后移2层,这样不会遮住数字方块,其实,数字方块一共有36个,雷所在的位置也有,只是最后不显示在游戏者面前而已,也不影响游戏的正常进行(图8、图9)。

7c535bcdae926e7efc2a837d8ca52fa147bda892b26f618727d7ebeb0337e083

五、布置數字方块

在收到“埋雷结束”消息后,就可以布置数字方块了。和布置遮罩方块相比,布置数字方块需要产生不同克隆体的造型。这就要完成一项关键性的任务:数雷。即此方块周围八个相邻的方块中,总共有几颗雷,有N颗雷,则显示数字N(图10)。

如何来实现呢?可以让产生的克隆体做一次环“球”旅行,这个“球”就是自己,围绕自己转一圈,总共八个点位,每走一个点位,判断一下,是否碰到雷块,如果碰到了,周围雷数加一,最后回到自己的初始位置,因为造型数是从0开始的,所以需要换成周围雷数+1的造型。

最后将周围雷数赋值成0,进行下一次的计算。数字方块代码如图11、图12。

六、优化

到这里,扫雷游戏可以说制作成功了,可以进行随机布雷,也能显示正确的雷数,遇到雷会提示游戏失败。但是,其实这里面还有一些问题,比如,总雷数不一定是我们预设的8,有时会因为两次随机布雷在同一个位置,出现少于预设总雷数的现象。

又比如目前程序是以边长6×6的方阵为例编写的,那么如何扩展成不同难度的级别更大的方阵呢?你可以参考左图的代码(图13)。

还有,可不可以用鼠标右键或其他按钮标记雷块呢?单击数字为零的方块上,能不能将其周围8个方块全部显示呢?聪明的读者,一起开动脑筋思考吧!




上一篇:Scratch复刻游戏《羊了个羊》 下一篇:个人养老金启航,A股迎“活水”?


首页
评论
分享
Top