实现步骤 1、场景布局实现 布局就是经典的方格布局,对于场景的美观度可以自行找几个配色网站作为参考。 出现问题: 先初始化一个二维数组对应方块坐标,然后依次渲染or直接通过
实现步骤1、场景布局实现布局就是经典的方格布局,对于场景的美观度可以自行找几个配色网站作为参考。 出现问题: 先初始化一个二维数组对应方块坐标,然后依次渲染 or 直接通过预期的行、列数渲染空白方块 区别: 直接初始化二维数组,可以对坐标进行一些属性操作,例如标记、是否为地雷等等,之后操作的时候会方便很多,缺点在初始化的时候需要进行大量的计算工作(因为在点开一个安全坐标时需要显示周围的地雷个数,还要考虑边缘情况),而渲染空白方块就可以在点击坐标的时候再去做计算,并且在点击的时候只需要计算该方块的属性。 这里我选择了渲染空白方块的形式。 代码实现 使用了 element-ui组件 template
style:
2、初始化事件生成地雷随机二维数组 因为布局已经通过空白方块生成了,所以我们只需要关心生成随机的地雷坐标就可以了 代码实现:
3、游戏动作(action)指的是游戏中的一些操作以及某个操作导致的一系列变化 点击方块 分析:点击方块之后会出现三种情况
对应这三种情况需要分别有不同的表现形式 第一种情况:(方块的九宫格范围内没有地雷) 这种情况只需要将该方块的样式改为点击过的样式即可(class="opened") 第二种情况:(方块的九宫格方位内有地雷) 修改样式为opened,并且需要计算周围的地雷数量(需要考虑边缘情况,即当前坐标是否在边缘) 第三种情况:(踩雷) 修改样式为opened, 并且展示地雷,提示用户游戏结束 代码实现 因为在点击之前该方块是空白对象,所以需要一个对象来存储该方块的属性或者状态(areaSign)
标记坐标 左键为点击方块,右键为标记坐标(第二次点击为取消标记),当该坐标为标记的时候,无法进行点击,并且当刚好标记的坐标数组和地雷数组一样时,则游戏结束,玩家胜利 代码实现
游戏收尾游戏失败或者胜利的时候需要重置游戏 代码实现
总结扫雷的实现并不复杂,首先需要对扫雷这个游戏的机制有思路,并且可以将一些逻辑捋清楚就可以了,实现的时候再将一些边缘状态考虑一下。可以更多关注一下对于代码的封装,对于代码的提炼很重要,这样在之后继续开发或者需要修改的时候很容易上手。 |
2021-06-04
2019-01-10
2019-02-17
2021-09-12
2021-09-30