题目要求:
扫雷是一款经典的windows自带的益智小游戏,在一个 4 行 4 列的方块中有若干个随机方块中藏有地雷,游戏的目标是打开所有没有藏雷的方块,同时避开所有藏雷的方块。
该游戏有如下规则:
1、游戏开始时,玩家使用鼠标左键点击方块,若该方块中没有藏地雷,方块中会显示一个数字,显示的数字表示以该方块为中心的周围 8 个方块中藏的地雷数量;
2、玩家可以将鼠标指针移到任意一个方块上,然后按下空格键来插旗标记或者取消插旗标记,游戏中玩家可以用此方法来标记藏有地雷的方块以免游戏过程中误点;
3、胜负判定:如果只剩下藏有地雷的方块未被点击,则游戏胜利;在此之前如果点击了藏有地雷的方块,则游戏失败;
4、 游戏有三个难度等级:1 级(1 颗地雷)、2 级(2 颗地雷)、3 级(3 颗地雷)
具体要求:
1). 点击绿旗,变量“难度等级”和“用时”的值都为 0,舞台下方显示输入框,并提示“请输入难度等级(1~3)”,如图所示;
2). 输入完成后,“难度等级〞的值变为输入的数字,瞬间出现 4 行 4 列排列整齐的方块,其中随机的一些方块中藏有地雷(有地雷的方块数与难度等级相同),剩余方块中各有一个数字,同时变量“用时” 开始每隔 1 秒增加 1,如图所示;
例如:输入 2,难度等级为 2,有 2 个方块中藏有地雷。
3). 每次用鼠标点击方块,如果该方块中藏的不是地雷,则该方块中显示一个数字(数字表示该方块周围的 8 个方块中藏的地雷数量),如图所示;
例如:方块中的数字 2 表示该方块周围的 8 个方块中藏有 2 颗地雷。
4). 每次将鼠标指针移到任意一个没有旗帜的方块上,然后按下空格键,可以插旗标记你认为藏有地雷的方块;也可以将鼠标指针移到被标记的方块上,然后按下空格键取消标记,如图所示(被标记的方块点击后无任何效果);
5). 每次用鼠标点击方块,如果被点击的方块中藏有地雷,那么此方块中的地雷爆炸,其它方块中藏的地雷都显示出来,“用时”不再变化,显示“失败”,游戏结束(游戏界面不再发生任何变化,无法再进行游戏的任何操作),如图所示;
6). 当只剩下藏有地雷的方块未被点击时,“用时”不再变化,显示“胜利”,游戏结束(游戏界面不再发生任何变化,无法再进行游戏的任何操作)如图所示。
思路:
对问题进行拆分,分为以下几个模块来处理
1、随机地雷位置
2、克隆4x4方块
3、打开方块
4、插旗子标记地雷
5、计时并判断胜负
进一步分析:
1、针对本题目,在4 x 4的方块中,只要地雷数量和位置确定了,每个方块周围的地雷数量也就确定了。
这个问题进一步延申,我们就需要记录每个方块的信息以及计算每个方块周围的地雷数量;
4 x 4的方块矩阵,就可以创建长度为16的列表,用0、1、2、3来表示记录每个方块周围的地雷数量,同时使用-1来表示地雷。
怎么计算每个方块周围的地雷数量呢?
对每个方块进行处理,一共有8个方向,分别是上、下、左、右、左上、右上、左下和右下,如图:
使用数学取整和求余的方法计算出列表中表示的每一个方块当前所处的行和列
然后就可以推算出它八个方向的方块,如果有雷就+1
2、克隆4x4方块,这个我们使用的很多了,使用两层重复执行,使用克隆的方式,一行完成,改变x,y坐标开始下一行。
3、打开方块,16个方块我们点击的是哪一个呢?因此我们需要一个私有变量(克隆体ID),检查被点击的这个方块对应列表中的信息,切换为对应的造型,如果是雷(-1)就失败。
4、插旗子也比较简单,满足碰到鼠标和按下空格键就可以切换造型,但此时还要看当前造型,如果是未点开的方块那么切换为旗帜,如果是旗帜,那么切换回未点击的方块。
5、计时,克隆完矩阵就可以开始,使用变量,每隔一秒增加1,当游戏结束停止。不要用自带的计时器,因为它不能停;判断胜负,如果电到雷失败,使用一个变量来统计点击次数,如果点击次数刚好等于非雷的数量,说明成功,此处要防止同一个方框重复点击。
实现步骤:
1、导入“方块”和“胜负”角色(由于造型较多,已准备好素材可以从文中下载),选择一张你喜欢的背景,如图
2、切换到背景,编写代码,询问难度,然后将回答存到变量“难度中”,并广播消息“布雷”
3、切换到方块角色,创建列表“方块矩阵”,当收到"布雷",根据难度,填充列表,并随机放置地雷。
4、重复执行16次,计算每个方块周围地雷数量
自制积木“计算地雷数量,”定义积木,通过运算得到当前方块所在的行和列,存入变量“行”,“列”中,然后计算总地雷数,更新到列表中;
这里的参数“id”就是列表中每一项的编号,表示1~16个方块,例如当id=3时,表示列表中的第3项,就是第三个方块。
计算地雷数量,我们分为三部分(上方、下方、两侧),分别自制积木“上方地雷数”,“下方地雷数”,“两侧地雷数”,分别判断每个方向是否存在,是不是地雷,这样就可以统计出当前方块周围的地雷数量了,定义如图。


到此可以简单测试以下,例如第一个方块是地雷(列表第一项是-1),那么第2、5、6项最少都是1,表示有雷,此时还无法出现矩阵,只需要验证以下列表中的数据,如图:
5、克隆4x4矩阵,自制积木“克隆方块”;定义积木:创建一个"克隆体ID"的变量,仅适用于当前角色,用来存储每个克隆体方块的编号,方便与列表进行对应。
6、显示克隆体,展示矩阵,判断鼠标点击(插过旗的方块不能再次点击),每次点击都要进行输赢的判断。
7、插旗,碰到鼠标和按下空格键实现造型切换,由于程序执行速度非常快,在切换造型后,要等待空格键释放,否则可能出现快速闪烁多次切换的情况。
9、当失败时,其它方块中藏的地雷都显示出来,停止游戏。由于所有克隆体都能接收到广播,所以克隆体只需要判断自己如果是地雷,并不是当前爆炸的地雷(爆炸的地雷造型是6),就显示出来。
10、计时
11、显示胜利失败,切换到胜负角色,添加代码:
素材下载:https://share.weiyun.com/1vlC3CDA
源码下载:Scratch图形化编程:扫雷游戏v1
本站内容未经许可,禁止任何网站及个人进行转载。







