推箱子游戏问题
问题分析
大学刚学编程的时候,在实现推箱子游戏的过程中,感觉推箱子游戏中,比较核心就两个问题,第一个问题是按键按下时,人物能否按照按键的方向,移动人物。还有一个问题就是判断是否把箱子全部推到目的地。
首先,我们可以把推箱子游戏地图中的元素分为
- 0:路
- 1:箱子目的地
- 2:人物站在路上
- 3:人物站在目的地
- 4:箱子在路上
- 5:箱子在目的地
- 6:墙
- 9:墙外的区域,非地图
在判断人物能否走动的时候,有些场景,只判断前面一步的地图是不够的,需要判断前面两步的地图。
推箱子可以走的的情况,人物前面两步地图值的和会有个范围:
- 前面是路:[0, 6]
- 前面是箱子的目的地:[1, 7]
- 前面是箱子,箱子前面是路:[4, 5]
- 前面是箱子,箱子前面是目的地:[4, 6]
推箱子不能走的情况,人物前面两步地图值的和会有个范围:
- 前面是墙:[6, 15]
- 前面是箱子,箱子前面是箱子:[8, 10]
- 前面是箱子,箱子前面是墙:[10, 11]
当前面一步不是墙时,可以走的情况的值 <= 7,不可以走的情况值 >= 8。
第二个问题判断比较简单,即当地图上不存在箱子在路上的情况时,说明箱子全部推到了目的地。将地图遍历一遍就可以判断出来。