所有答案都保存在用户描述文件中(文件扩展名为[sokoinfo|.sokoinfo])。
保存这些答案的主要原因在于:避免再次去玩某个已经通关的关卡。 有许多关卡(就我所知,当前有超过10000个关卡)和包含各种关卡的关卡集。 利用这项功能,玩家就可以轻松了解他是否已经解开某个关卡。 如果已保存答案,则会在窗口右下角(状态栏右侧)显示统计数据。 如果为该关卡保存了多个答案,则右侧的方框会显示为下拉列表,以便玩家选择不同的答案进行回放。
YSokoban具有一个数据库来记忆玩家已经通关的任何关卡。 如果加载一个之前已经通关的关卡,无论它的方向如何(旋转/翻转),YSokoban都会指出,这是一个已通关的关卡,并且您可以回放答案。 如果玩家之前已经解开关卡,YSokoban会在右下角提供答案,向您说明这一点。
即使玩家旋转或翻转了关卡,或者在某些情况下增加或删除了墙壁,但未改变关卡,这时程序仍然能够识别关卡。 实际上,YSokoban会比较标准化关卡,而不是当前使用的关卡。 YSokoban在内部以标准化方式存储关卡(包括答案)。 标准化关卡与正常关卡略有不同。 有一些规则适用于标准化关卡。
如果某个单元格小人无法到达,则它根本没有用处,就可以用墙壁代替。 如果两个关卡只有小人无法到达的单元格存在不同,一个是单元格,一个是墙壁,那么这两个关卡实际上是相同的关卡。 例如,所有用“-”表示的单元格实际上小人无法到达,因此,在标准化形式下可以用墙壁代替:
###---- ####### # ##-- # #### # $.## # $.## # ###-- ---> # ##### # #-#-- # ##### # ##### # ##### # @ # # @ # ####### #######
死胡同式的通道没有用处,因为小人不能将箱子推到那里(或者更准确地说,不应将箱子推到那里),即使小人进入那里,也应该出来,而不执行任何操作。 如果小人最初位于这样的通道中,应强制将它移出(如果这时它必须推动箱子,就是强制推动箱子)。 例如:
####### ####### # #### # #### # $.## #@ $.## #-##### ####### #-##### ---> ####### #-##### ####### #---@-# ####### ####### #######
死锁的箱子(已归位)是指那些无法移动的箱子。 例如:
###### ###### # $. # # $. # # ** # ---> # ## # # ** # # ## # # @ # # @ # ###### ######
多次应用这些规则后,关卡将发生变化,有时甚至与最初的关卡截然不同(即使没有旋转),这是我们没有想到的。 重要的是,YSokoban会尝试确定关卡是否与某个已经解开的关卡相同,如果是,它会通知玩家(显示答案统计数据)。 SokoDUP也采用相同的方法来查找重复关卡。
平凡关卡是指那些只需要进行强制移动/推动就可以通关的关卡,小人有且只有一条路径可以移动,最终,所有箱子都推动到目标位置。
加载平凡关卡时,窗口右下角的方框(统计信息)中将显示“平凡”。
YSokoban不保存平凡关卡的答案。
例如,以下关卡为平凡关卡:
##### forced ##### rule3 ##### #@$.# ------> ##@*# ----> ##@## ##### ##### #####
在此例中,首先应用了一次强制移动(小人位于死胡同通道内), 然后将无法移动的箱子转换为墙壁,最后,房间中只剩下一个人(就像是监狱里面的犯人)。 因此,您什么事都不用做,这就是平凡关卡。 下面提供了另一个平凡关卡(不是很明显,但也是平凡关卡):
### ### ### ### ### ### ###.## ###.## ###.## ###.## ###*## ###### #.$$.# #.$$*# #.$$## #.$$## #.$@## #.$@## ##.$$# ---> ##.$@# ---> ##.$@# ---> ##*@## ---> ###### ---> ###### ###@# ##### ##### ##### ##### ##### ### ### ### ### ### ###在“设置保存答案的数目...”对话框(从菜单激活)中,玩家可以设置保存的每个类别答案的数目。