数字华容道是一款经典的益智游戏,玩法简单,但想要通关却需要一定的策略和耐心。今天就来实现一下这种类型的游戏。老规矩,先看效果:数字华容道
游戏规则
然后来分析下游戏的具体规则和逻辑:
游戏目标:
- 将打乱顺序的数字方块,按照从小到大的顺序排列整齐,则成功过关。
游戏规则:
- 游戏开始时,数字方块会随机打乱。
- 每次只能移动一个方块,且只能移动到空白方块的位置。
- 不能将方块移出边界。
- 难度选择: 大多数数字华容道游戏都提供不同难度的关卡,一般是增加格子数量,2*2,3*3,4*4,以此类推。。。。
- 计时模式: 游戏还可以搞个计时模式,可以挑战玩家的解谜速度;如果超时则算作失败。
- 提示功能: 如果玩家遇到困难,可以设计提示功能
以上就是游戏的一些基本的逻辑和规则,那么我们就照着这些规则来实现游戏就行。
游戏实现
场景设计
- 首页
- 关卡选择
- 核心玩法
- 结算界面
大概一个完整的游戏分为上面四个部分,可以依次看下截图:
游戏稍微复杂一点的地方是核心玩法的实现,其他场景就不赘述了,场景逻辑都比较简单。
核心玩法
数字方块:因为方块可以复用,所以抽象为预制体prefab,每个方块都有不同的数字纹理。
初始化过程,根据等级生成对应数量的方块,方块位置随机打乱。3*3=9,那就只要保留8个方块就行,不要铺满留一个空位。
容器大小是固定的,因此可以计算出每个方块的行列序号。
并且游戏过程中要动态更新空白位置的索引。
方块的位置初始化好了,接下来是让方块可以移动。那么可以给容器绑定touch事件:

点击容器,将其转化为方块的行列位置,最终获得被点击的方块。复杂的地方在交换当前选中的方块和空白方块,这里涉及到几个方位的判断。
被点击方块必须是跟空白方块处在相同的行或者相同的列,否则点击无效。
如果相同的行,则对比列的大小,让方块向左移动还是右移动。注意是被点击方块与空白方块之前的所有的方块一起移动位置。
如果列相同,则对比行的大小,让方块向上移动还是向下移动。可以看下部分代码:
如果移动之后顺序都对了,那么就顺利过关
以上就是游戏的核心逻辑。
发表回复