01
—
扫雷游戏规则
扫雷游戏每一台windows系统的电脑都有,是一个很简单很经典的益智类游戏,但我们不能小看它,小游戏蕴含大智慧!
最基本的规则:你点到一个数字,如果是3,那就说明最靠近他它周围的8个格里有3个雷。然后通过相邻或者相间的数字之间的交集来判断哪些是雷。如图,红圈的数字3,他周围的 上、下、左、右、四个斜角 ,是8个格,其中有3个格子是雷
02
—
前导知识:二维列表
列表只有一个维度,索引从1到N,就像一维的数轴。但人类已经习惯应对二维的情形(毕竟我们生活在更高维的三维空间中),如电子表格的单元格、种菜游戏的地皮、电影院的座位等。抽象来看,它都有相似的结构,即必须由行和列才能唯一确定其位置。
计算机的内存是线性一维的,没有二维内存的说法。所以计算机使用特定方法模拟出二维列表,配合一些操作约束,就可以使用行号和列号仿真二维操作(就像x/y坐标一样)。所以现在问题的本质便是,如何把一维列表的索引值(列表的项目号)转换为行号和列号。
综上所述,可以得到:
索引值=(行号-1)*列数+列号
行号=向上取整(序号/列数)
列号=(序号-1)%列数+1
03
—
程序思路:地图数据
地图中雷的分布情况,我们使用一个列表来表示,-1表示有雷,0表示无雷。列表的长度为什么是100呢?因为是10行10列的地图。
思考:如何能够随机生成十个雷的一维列表呢?
04
—
程序思路:统计雷的数量
我们再回顾一下最基础的规则:你点到一个数字,如果是3,那就说明最靠近他它周围的8个格里有3个雷。然后通过相邻或者相间的数字之间的交集来判断哪些是雷。如图,红圈的数字3,他周围的 上、下、左、右、四个斜角 ,一共是8个格,其中有3个格子是雷
思考:遍历整个列表,如果当前元素为0,就要统计周围8个格子雷的个数,统计完了将当前元素替换成个数。
05
—
程序思路:地图生成
地图生成:只需要将地图克隆出10行10列来,一开始并不需要换成数字的造型。在克隆时,请注意需要需要使用私有变量将所有的克隆体进行编号,因为点击时才能知道点击的地图方块是雷还是什么数字?
思考:如何点击的雷,如何将所有的地图方块全部显示出来。
06
—
程序演示
07
—
scratch算法练习集免费领取(含程序)