快速总结
实用的推箱策略应从最后一推开始,而不是从最近的可动箱子开始。先标出目标格、箱子的目标前一格,以及人物完成推动所需的站位;每次推动都要保护这三处,并检查通路是否丢失、是否触发已证明的死锁。
为什么合法的一推也会毁掉可解局面
推箱子的基本规则很短:人物只能向四个方向移动,每次只能推动一个箱子,而且不能拉箱子。正是“不能拉”让每次推动都很重要;落点合法,并不代表之后还能把箱子救回来。
走路通常只改变人物位置,推动却会改变空间结构:箱子占据新格子、挡住新路线,也可能拿走下一次推动所需的一侧。因此不要只问“能不能推”,还要问“推完之后还剩什么有效推动”。
每次准备推动时,检查三个位置:
- 箱子这次要进入的落点;
- 下一次有效推动时人物必须站立的支撑位;
- 人物抵达该支撑位所需的通路。
从最后一推向前反推
先选择一个受限目标,并设想完成它的最后一推。箱子必须从哪一格进入?人物要站在哪里才能推动?墙体、其他目标和窄入口可能只留下一个可行答案。
建立三段反向计划,再向前倒推一次推动。判断合适的箱子怎样到达目标前一格,同时不占用最终站位,也不封住去往该站位的路线。只需反推到足以决定下一次安全推动即可。
反推是一种决策方法,不是任何关卡都能直接套用的万能证明。多个箱子的互动仍可能难以局部判断,因此还需要专门的死锁检查。
- 目标格:箱子最终必须占据的位置。
- 目标前一格:箱子进入目标前所在的相邻格。
- 最终站位:人物完成最后一推时必须站在箱子后方的位置。
先决定箱子顺序,再考虑距离
离目标最近的箱子不一定最合适。贴墙或走廊尽头的目标可能只能从一个方向进入,而开放目标有多种入口。先分析限制最多的目标,并为它保留合适的箱子。
完成后的箱子仍占据一格,应把它当作新墙体继续检查剩余计划。过早填上容易的目标,可能关闭共享通道、挡住人物绕行,或占掉唯一可以换边推动的暂存格。
安排顺序前,逐项比较:
- 哪个目标的最终进入方向最少;
- 哪个箱子能抵达入口,同时保留人物站位;
- 哪些通道由两个或更多未完成箱子共享;
- 现在填上某个目标会挡住什么。
用可恢复的暂存格保护通路
暂存格是让箱子暂时等待、人物可以绕到另一侧的位置。中央空地通常比墙边或单出口走廊灵活,但“在中央”并不等于安全。只有人物还能抵达有效推动侧、箱子也仍有通往目标的路线时,这个位置才有价值。
使用暂存格前检查以下四项。无限撤销和重做可以让你回到上一个空间决策点比较方案;它们是规划工具,不是失败惩罚。
- 落点不是已证明的死格。
- 人物至少还能走到箱子后方,完成一个已计划的下一推。
- 这一推不会封住人物绕过墙体或箱群的唯一通路。
- 其他箱子仍保有通往受限目标的共享路线。
识别已证明的死锁,但不要害怕每一面墙
Crate Bloom 明确区分有证明的“已死锁”和范围更宽的“需谨慎”。当前静态检查只覆盖三类有界局面:
- 箱子进入非目标角落;
- 忽略其他箱子后,某个墙边区域仍无法通过反向拉动可达性到达任何目标;
- 墙和箱子组成冻结的 2×2,并且至少有一个被困箱子不在目标上。
箱子贴墙并不自动等于失败。只要还能沿墙移动到目标,局面就可能恢复。目标角落也是“角落必死”的明确反例:箱子可能已经正确到位。
出现静态证明时应立即停下;界面只显示“需谨慎”时,应重新检查通路,而不是直接认定关卡失败。
来自“隔断苗床”的求解器验证决策
Crate Bloom 当前主线在三个世界中共有 36 个项目原创关卡。第 13 关“隔断苗床”是一个三箱紧凑局面,难点在人物通路,而不是冗长走路。
公开的主线验证清单记录:在准入的推动状态图中,最少推动数为 6;同时还有一条合法的 22 步参考回放。这是两类不同结论:推动数在准入图内获得证明,参考回放的走路步数不宣称是全局最短。
合法参考回放给出了一个可复现的局部顺序,无需公开完整路线。第一次推动先把下方箱子从 (3,3) 横向推到 (4,3);第二次才把左上箱子从 (2,2) 向下推到 (2,3) 的目标。这个顺序不能颠倒:若下方箱子仍在 (3,3) 时先占据 (2,3),完成的箱子会堵住下方箱子向右推动所需的站位,而 (3,4) 的墙又排除了纵向脱身。
- 移动箱子前,先标出 (2,3):它既是目标,也是把下方箱子向右推动时的人物站位。
- 趁该站位仍空着,先把下方箱子从 (3,3) 暂存到 (4,3)。
- 然后再把左上箱子从 (2,2) 推入 (2,3) 的目标。
- 重新检查剩余站位;保存的回放以 6 推完成,但本文刻意省略余下路线。
这并不是“目标都要延后”的口诀。关键是:一个共享格在被完成箱子永久占据前,必须先完成它作为人物站位的作用。
使用“反推—推动—证明”循环
一个紧凑的推箱策略循环可以让每个不可逆动作都能复核:
- 反推:选择受限目标,标出箱子最终位置和人物站位。
- 推动检查:查看落点、下一站位、绕行路线、共享通道和静态死锁。
- 只推一次:先做一个改变空间结构的动作,不连续盲推。
- 证明:重新画出人物可达区域和剩余箱子的路线。
- 恢复:必要通路消失时,撤销到决策点,不用额外推动盲目补救。
常见问题
推箱子首先应该规划什么?
先规划受限目标的最后一推。找出箱子的目标前一格和人物必须站立的位置,再安排能够同时保留这两处通路的箱子顺序。
箱子贴墙就一定死锁吗?
不一定。只有不存在通往目标的可行路线时,贴墙才会致命。Crate Bloom 只把有界静态证明标为“已死锁”,不确定的贴墙情况只标为“需谨慎”。
应该先减少走路还是推动?
先规划推动,因为推动会改变箱子结构和未来通路,之后再缩短走路。Crate Bloom 的最少推动结论限定在准入的推动状态图内;保存的移动数是参考回放,不是全局最短走法。
外部参考资料
以下原始来源支持通用规则与研究背景;Crate Bloom 的关卡和检测器事实来自上方链接的项目证据。
一次只验证一推
打开主线,选择一个受限目标,在移动箱子前保护下一次推动所需的站位。完整路线仍由你自己发现。
游玩 Crate Bloom 主线