推箱子游戏也是一个很经典的益智类小游戏,很多推箱子游戏软件都提供过程演示的功能,当玩家走投无路的时候,可以看看游戏给出的解答过程,这个过程其实就是游戏自己推算出来的最佳推箱子路线。这一课我们就来试试用穷举法求解推箱子游戏。
游戏介绍
图(1)展示了一个典型的推箱子游戏的截图,左边是游戏的初始状态,右边是游戏成功结束的状态。游戏在一个二维平面“地图”上操作,游戏开始时有若干只箱子和与之数量相同的目的位置,玩家控制一个小人推动箱子到指定的位置,当全部箱子都被推到指定位置时,游戏就结束。箱子有四个面,玩家每次只能从一个面推动箱子向相反的方向移动。为了增加难度和趣味儿性,地图上一般都会布置一些障碍物阻挡箱子,使其不能被顺利地推到目的地。
图(1)一个推箱子游戏的例子
游戏中的地图实际上可以看作是由一个个小格子组成的,每个格子可以是墙、箱子或小人。为了将重点放在算法上,我们对这个游戏做一个简化处理,用各种字符表示地图上的各种元素,比如用空格字符表示空地,用大写字母 'B' 表示箱子,用