Rules Current Competition Submit a solution Submission table - Main Submission table - Ext Competition results Hall of Fame Past Competitions About
比赛规则 本期比赛关卡 提交答案 提交列表 - 1 提交列表 - 2 比赛结果 荣誉殿堂 往期比赛 比赛简介 比赛诗选
歪推箱子 推箱子加加 睿斗推箱子 推箱快手 SokoPlayer SokoPlayer HTML5 USokoban [Linux] SokoFind LURD2XSB 推箱子工具 [Utilities] 推箱子变种 [Variants]
关卡平台 sokoban.org 字母表 [alphabet] 十二生肖 [zodiac] 2012精选 [bestof2012] 2013精选 [bestof2013] 关卡答案
MF8论坛推箱子版 百度贴吧推箱子 QQ群:92017135
XSB2MF8 [中文] XSB2MF8 [English] XSB2MF8 [sokojava] 关卡旋转工具 LURD2XSB工具 LURD转换工具 推箱子GIF动画制作教程 [skyivben] XSB2image [skyivben] image2XSB
推箱子常见问答 [FAQ] 推箱子格式 [XSB & Lurd] 推箱子基本概念:空位 推箱子新手之路 推箱子GIF动画制作教程 逆推教程 推箱子文档下载 推箱子相关博客文章
HTML5地理小测验 HTML5图论小工具 HateTris
SokoPlayer HTML5 SokoPlayer JavaApplet USokoban [Linux] sokoban.py Sokoban.WS Tools SokoFind SokoLines HTML5
推箱子常见问答 [FAQ] 关于推箱子 [XSB & Lurd] 推箱子文档下载 关于比赛 关于本站 墙纸下载 [Wallpaper] 友情链接 [Links] 我的博客 [Blog] Credits

逆推教程 (Reverse Mode Tutorial)

作者:anian
2016-4-27

学习逆推, 可以解决很多陷阱和填目标点次序的问题。

一、用什么程序

逆推,有下面几个程序支持的。我推荐用YASC做逆推。

学习逆推, 建议用这个正推非常容易的关卡做学习关卡。

----#####----------
----#---#----------
----#$--#----------
--###--$##---------
--#--$-$-#---------
###-#-##-#---######
#---#-##-#####--..#
#-$--$----------..#
#####-###-#@##--..#
----#-----#########
----#######--------
Title: Classic level 1
Author: Thinking Rabbit

因为, 这个关卡正推你已经非常清楚怎么过关。

如果逆推过程中有什么麻烦, 都是可以想想正推反方向怎么做。

这个关卡逆推虽然是容易, 但因为你开始不明白逆推怎么做, 所以想逆推过关还是有难度。

但也因为你已经知道正推怎么做, 所以逆推完全过关也是不太难。 向正推的反方向去想就可以。

(1) 打开YASC, 导入关卡 (先复制关卡, 然后到 YASC窗口按CTRL+V就可以)

(2) 然后按: 反面的“R”

这样就进入逆推模式。这个就是逆推开始:

注意关卡里面的背景。 它是说: Reverse Mode。就是逆推模式。 这样容易辨认。

到这里, 我想说说关于逆推。如果不明白, 下步就会有些不知道为何。

二、什么是逆推

什么是逆推模式 (简称为逆推)?

逆推, 就是正推的反向。

他开始也是和正推反转的。就是, 逆推开始, 全部箱子已经在原来关卡的目标。 原关卡的箱子开始位置变成了目标点。

逆推就是正推的反方向思维。

在逆推下, 你只可以拉箱子, 不可以推。 你的目的是将箱子拉到目标点就解开关卡了。

正推和逆推, 除了目标点箱子换位置之外, 还有一样东西是非常不同的。 下面这个必须明白,可以说是逆里面最重要的。

正推, 人的开始位置已经定了, 无法改变。 但做逆推, 因为我们不知道正推关卡怎么结束, 那么我们从哪里开始呢? 这也是做逆推的好处。 正因为我们不知道正推怎么结束 (可以是任何地方), 所以逆推开始 你可以选择一个空间, 人就在这里开始。 任何可以放下人的空间都是可以。

YASC, 逆推开始, 你可以用鼠标点击人然后拖拉到任何空间开始。 如果不会点击拖拉带走的人, 开始也是可以这样移动人:

记住, 这个移动是特别的, 只可以在开始没有拉任何箱子之前可以做。 YASC叫这步做“JUMP”, 人可以直接跳到任何空间。

逆推开始, YASC不同于其它程序的做法。 YASC逆推开始, 人还是在原来正推开始的位置。 就算这个位置原来是目标点, 逆推开始人就在一个箱子里面。 这样的情况下, 你需要先移动人才可以开始做逆推。

人的开始位置选择好了,你就可以开始做逆推了。

YASC逆推也是可以用盘键操作的, 但在这里我就不介绍了。 建议大家直接用鼠标来做逆推。

逆推也是类似正推这样, 你点击箱子, 它就告诉你这个箱子可以 拉到什么地方。 非常方便。

下面这个图, 我点击一个箱子然后拉到推片显示的地方:

然后我尽量拉其他箱子的目标点。 经过一番逆推, 我做到这个下面这个图:

注意: 这样看似全部箱子拉回目标点了, 但没有过关。

原因是, 人这个位置无法走回到“正推人开始的位置”。 这个逆推图, 人已经被包围了,无法走到原来正推开始人的位置。

下面是另外一幅图显示箱子全部归位但没有过关的逆推图。

这样才是过关: (这个图, 人的位置可以走到人原关卡正推开始的位置。)

用YASC, 如果你完全用逆推过关, 它自动会将逆推转换成正推的答案。

你如果逆推成功了, 就明白逆推的基本功能。 所谓熟能生巧, 你多练习就多做就自然会有想法会做得快。

我建议用YASC做逆推, 因为它有死锁测试功能。 如果你拉错了箱子(会造成死锁), 它会告诉你。 如下面这个图, 我这样拉箱子:

这个图明显是不实际的, 如果做正推无法将箱子推成这个状态。 就是说, 这个图形是不实际的, 是死锁。

虽然我们这里介绍的是用YASC, 用其它支持逆推的程序也是可以做到。 只是其它程序的进入逆推模式或许有点不同。 选择人逆推开始的位置方法或许也是有点不同, 但想法基本上相同。

总结:

通常拉箱子, 不需要完全整个关卡拉完成。 尤其是复杂的关卡, 基本上没有人去从头到尾逆推完的。

如果能将关卡拉开或者拉到一个关键图就好了。 上面说的”拉开”, 指的是你已经拉散箱子, 可以去到关卡里面的任何空间。 就是说, 你正推也是可以推到相同的箱子摆放的图。 这样, 你合并正推和逆推的步骤你就过关了。

三、导出逆推步骤

下面我想介绍怎么用YASC导出/导入逆推步骤。

如果你已经做了某些逆推步骤, 想导出来。可以按CTRL+C, 这样可以导出目前的步骤到剪贴板。

另外一个方法是这样,先点击这里, 看图:

然后看到下面的图, 点击下图圈着的, 可以拉下一个菜单。

选择“copy to clipboard”就可以了。

如果是想导入步骤也是类似, 选择菜单里面的 “Paste moves from clipboard”就可以。

用YASC, 可以逆推某些步, 然后也是可以正推某些步。 如果可以推和拉到相同的图, 可以用YASC里面的功能合并正逆推得到答案。

如果你推拉到类似下面这个图 (正推和逆推都是相同的图)

你可以选择上面正推关卡窗口或者下面逆推窗口的菜单: (看图)

其实上下窗口都是有相同的选择 “Combine with matching reverse mode snapshots to form solutions”。

下面两个图就是给你看看它们是什么样子。


Created on April 27, 2016