应用简介
推箱子解算器是一款功能强大的推箱子游戏求解工具,能够帮助用户自动计算出最优的解法,让推箱子游戏成为一个简单的游戏。软件操作简单便捷,只需要几步即可轻松完成解算,用户可以根据自己的需要设置解法步数,满足各种推箱子游戏求解需求。
【软件特色】
这款推箱子自动求解软件的特色是先进的死锁检测算法。死锁就是一旦把箱子推动到某些位置,一些箱子就再也无法推动或者无法推到目的点,比如四个箱子成2×2摆放。推箱子高手对何种情况引起死锁非常敏感,这样他们预先就知道决不能让某些局面形成,这也是高手高于常人的原因之一。
我的工具能够检测出绝大部分这样的死锁,并且,由于对死锁的特征进行了高度提炼,能够检测出很多人也无法很快看穿的死锁。这样,工具的效率得到很大的提高。对于10×10大小以内的题目,一般都能很快解出。
恰好平时玩的三国杀移动版五一出了推箱子活动,有的个别过不去的关卡可以拿这个工具箱设置一下然后搜一下步骤,还是很不错的,这个活动可以白嫖2个史诗宝珠和50个牛年大吉礼盒。
【使用说明】
软件以求出一个解为目标,而不是求最优解。求最优解需要消耗更多的时间和内存,我认为得不偿失。
在“求解”菜单下面有四个命令是一直无效的,他们是:“求解算法0”,“求解算法1”,“求解算法3”,“算法0设定”。算法0,1是作者开发此工具时先前版本所用的算法,都不如“求解算法2”,仅仅供作者自己研究用。算法3是作者正在研究的一个算法,还有很多地方不完善。因为主要功能是求解,所以作者没有对界面进行精益求精的完善。
在“文件”菜单下有“打开文本格式文件”和“保存为文本格式文件”的功能。很多网上的推箱子游戏用文本格式保存题目,因此工具提供了支持。工具支持的文本格式文件的格式是:
每一行代表仓库的一行,不能有空行。
空格或‘='表示地板。每行最后连续的地板可以省略。
‘#’表示墙。
‘@’表示人。
‘$’表示箱子。
‘.’表示目的点。
‘*’表示在目的点上的箱子。
‘+’或‘%’表示在目的点上的人。
“编辑”菜单下的“目标人位置”是本工具的特色之一。在求解一些大型题目时,虽然不能直接使用本工具,但是可以把题目分解成若干个子目标,有些目标可以用工具求解。这时,仅仅把箱子推到位是不够的,往往要指定最终状态时人所在的位置。比如要让人通过一个充满箱子的通道,然后把箱子回复原状。这时这个命令就可以起作用,它指定最终状态时人必须在的位置。
工具界面使用不同颜色表示墙、箱子和人。在显示解答时,以推动一次箱子为一步,期间的人的移动不计。此时所有人所能到的格子用绿色填满。
【关于目标宏】
所谓“目标宏”是模拟这样一种解题思路:很多关卡明显可以分成若干区域,有些区域集中了目标点,另一些区域则集中了很多箱子。对于这样的关卡,人的思路显然是个个击破,对于目标点集中的区域考虑如何按次序摆满所有的目标点;箱子集中的区域考虑如何“突围而出”,然后再把两者集中起来。
推箱子工具可以模拟一种特殊情况下的目标宏,其条件是:
1. 存在一个“断点”。所谓断点是,假如去掉仓库区域里的所有箱子,然后在“断点”放一个箱子,则这个箱子把整个仓库区域分成严格互不连通的两个部分。
2. 初始状态时“断点”上不能有箱子,也不能是目标点。(如果有箱子或目标点的话,一般可以很容易手工改造成没有箱子或目标点的等价的状态。)
3. 所有的箱子在“断点”的一边,所有的目标点在另一边。
4. “断点”的上下格都是墙或者左右格都是墙。
如果能够找到这样的断点,则程序自动把题目切分成两部分求解,效率有极大提高。
巧妙利用工具的目标宏功能可以提供不少有用技巧。比如可以人工把通道弄窄以造成“断点”,从而解出以前不能解出的关卡。又如,很多大型关卡的局部是“突围”问题或者是“目标点到位问题”,这时可以自己构造一个带“断点”的关卡,断点一边是非常容易求解的,另一边则是拷贝过来的难题局部,这样就可以利用工具求解这个局部了。
【更新内容】
3.1版:增加选项可以跳过“目标宏”两阶段搜索的其中的一个。这个功能的应用之一是:可以仅仅求解一个关卡中如何把箱子推到“目标区”,而不必求解整个关卡。关卡编辑功能略为改动,更方便一些。
3.0版:算法中增加了“目标宏”功能。详见“关于目标宏”一节。
2.0版:大幅度优化了界面。提供了“试玩”模式。求解算法中加入了“隧道检测”功能。
1.0正式版:增加了“保存为文本格式”功能。
1.0测试版:最初的版本。