最简单推箱子算法图解

不用过多介绍最简单推箱子算法遊戏条件很简单,在一个N*m的方框中有若干个箱子,障碍物一个小人,只能推动箱子到对应的位置

每一个箱子都有4个方向可以移动,除去对应位置有障碍物、箱子以及小人不能到达对侧,那么实际上可走方向很少

箱子每移动一步,将当前箱子各个位置小人位置進行存储,当做一张视图

由此可以构建很多视图。

每次都从是途中寻找最佳视图计算

开始之前,需要考虑如下问题:

1、如何寻找最佳視图

这里需要引入一个简单的评估函数。

G即为步进值指当前视图是箱子推动了多少步出现的。

举例来说还是用一个箱子来说,第一步向右推第二步向下推,第三步向左推G值为3.

如果把箱子直接向下推,G值为1.这个时候我们来看这2个视图箱子位置一样,G值不同为了尋找最佳算法,当然是保留第二种视图状态

举例来说:当一个箱子移动到一个目标点时,最佳距离=|箱子.x-目标.x|+|箱子.y-目标.y|

如果是多个箱子移動到多个位置那就要考虑那个箱子移动到那个位置。这个就留给大家自己思考简单的排列组合问题。

2、第二个需要考虑的是小人能否赱到箱子的对侧

这个采用简单的A*path算法。

有了以上分析可以进入下一步了。

我要回帖

更多关于 最简单推箱子算法 的文章

 

随机推荐