推箱子计算器的特色是先进的死锁检测算法。死锁就是把箱子推到某个位置,箱子就不能再推了,也不能推到目的地。例如,四个箱子放在2×2。推箱高手对什么情况引起死锁非常敏感,他们知道决不能形成某种情况,这也是高手比普通人高的原因之一。我的工具可以检测出大部分这样的死锁,而且因为高度提取了死锁的特征,所以可以检测出很多人不能马上看穿的死锁。这样,工具的效率就大大提高了。10×10大小以内的主题,一般很快就能解决。
【功能特点】
级别解决者
解决方案优化器
不同的皮肤
【使用方法】
软件以求出一个解为目标,而不是求最优解。求最优解需要消耗更多的时间和内存,我认为得不偿失。
在“求解”菜单下面有四个命令是一直无效的,他们是:“求解算法0”,“求解算法1”,“求解算法3”,“算法0设定”。算法0,1是作者开发此工具时先前版本所用的算法,都不如“求解算法2”,仅仅供作者自己研究用。算法3是作者正在研究的一个算法,还有很多地方不完善。因为主要功能是求解,所以作者没有对界面进行精益求精的完善。
在“文件”菜单下有“打开文本格式文件”和“保存为文本格式文件”的功能。很多网上的推箱子游戏用文本格式保存题目,因此工具提供了支持。工具支持的文本格式文件的格式是:
每一行代表仓库的一行,不能有空行。
空格或‘='表示地板。每行最后连续的地板可以省略。
‘#’表示墙。
‘@’表示人。
‘$’表示箱子。
‘.’表示目的点。
‘*’表示在目的点上的箱子。
‘+’或‘%’表示在目的点上的人。
“编辑”菜单下的“目标人位置”是本工具的特色之一。在求解一些大型题目时,虽然不能直接使用本工具,但是可以把题目分解成若干个子目标,有些目标可以用工具求解。这时,仅仅把箱子推到位是不够的,往往要指定最终状态时人所在的位置。比如要让人通过一个充满箱子的通道,然后把箱子回复原状。这时这个命令就可以起作用,它指定最终状态时人必须在的位置。
工具界面使用不同颜色表示墙、箱子和人。在显示解答时,以推动一次箱子为一步,期间的人的移动不计。此时所有人所能到的格子用绿色填满。
【更新日志】
3.1版:增加选项可以跳过“目标宏”两阶段搜索的其中的一个。这个功能的应用之一是:可以仅仅求解一个关卡中如何把箱子推到“目标区”,而不必求解整个关卡。关卡编辑功能略为改动,更方便一些。
3.0版:算法中增加了“目标宏”功能。详见“关于目标宏”一节。
2.0版:大幅度优化了界面。提供了“试玩”模式。求解算法中加入了“隧道检测”功能。
1.0正式版:增加了“保存为文本格式”功能。
1.0测试版:最初的版本。