Rules Current Competition Submit a solution Submission table - Main Submission table - Ext Submission table - Ext2 Submission table - Ext3 Competition results Hall of Fame Past Competitions About
比赛规则 本期比赛关卡 提交答案 提交列表 - 1 提交列表 - 2 提交列表 - 3 提交列表 - 4 比赛结果 荣誉殿堂 往期比赛 比赛简介 比赛诗选
歪推箱子 推箱子加加 睿斗推箱子 推箱快手(安卓版) 推箱快手(Windows) 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

什么是“逆推”

策划:anian
执笔:愉翁
顾问:麦英

2021-1-13

“逆推”功能的首次出现应该是在YASC Sokoban程序上,这是一款非常优秀的推箱子游戏程序,功能全面、强大实用,作者是Brian Damgaard,而此时,国内的众多箱友大都只是在有意无意的运用“逆想”思维,stopheart群主就是一位典型代表,又如西北天狼在老封论坛上的“逆向思维”、 一目了然(又名易学愚)的“倒行逆施”,如此多多,但尚未形成清晰的“逆推”概念。幸好我国的anian先生与YASC Sokoban程序的作者Brian Damgaard先生早就熟稔,当他把此项功能介绍给国内箱友时,“逆推”这一中文名字才华丽亮相(请原谅我以这样模糊的表述引出“逆推”这个词汇,因为anian先生和stopheart群主都不愿承认是自己先提出“逆推”一词,动作非常一致地推给对方,大佬们高风亮节,就只好难为我了),“逆推”功能也立时受到了stopheart群主的极力推崇,于是,在stopheart群主的积极“怂恿”下,很快被杨教授(sokoban杨超)在“在线推箱子”中得以实现,“逆推”功能的出现,也让箱友们眼前一亮,不自觉中,推箱技艺又精进了一步,更让它在国内大放异彩。

这篇文章,就是想尽量“官方”一点的向那些新来的箱友介绍一下“逆推”的概念,并初步掌握“逆推”工具,让他们不再踏上我们走过的弯路。

那么,什么是“逆推”呢?

所谓“逆推”,是相对“正推”而言的,我们谈起推箱子,一般都是在说正推,即当拿到关卡后,人站到“箱子”后面,然后,人“推”着箱子移动,当把全部箱子都“推”到“目标点”后,就算是过关了。

随着推的关卡越来越多,我们就会发现,对于有些关卡,仅仅按照常规方式(“正推”方式)思考,会感觉到非常困难,或者不方便,这个时候,许多有经验的玩家,就会从关卡的“目标点”开始,反向思考,但是,当关卡比较大或者步骤比较多的时候,受记忆力的影响,这种思考模式会受很大的局限,至少不太容易完成“任务”,“逆推模式”就是在这种背景下提出的,然而有些优秀的推箱子程序,能够把正推地图中的目标点变成箱子,而箱子变成目标点,游戏时,人站到箱子“前面”,然后“拉”箱子移动,任务也就变成了把所有箱子“拉”到新的目标点,这就称之为“逆推”。

但是,逆推模式相对于常规的正推模式而言,还有两点需要注意,这两点,也是逆推模式与正推模式的区别:首先,在没有得到答案的时候,玩家可能还不敢确定关卡的正推应该结束在什么位置,换句话就是,玩家不敢确定应该从哪里开始逆推(即:“人”需要先站在哪个位置),这个“人”开始逆推的位置,也叫逆推模式中“人的初始位置”,这样的情况下,这个“初始位置”就可能需要玩家做不同的尝试才能确定,这也是“逆推模式”的魅力之一;其次,“逆推模式”的过关与否,还有一个要求,就是当所有箱子被“拉”到目标位置后,还需要最后把人“移”到“正推模式中的人初始位置”,这一点,可能需要认真琢磨后才能理解。

下面,让我们用一个具体的例子,来看看什么是“逆推”吧。

#####____
#@--#____
#-$$#_###
#-$-#_#.#
###-###.#
_##----.#
_#---#--#
_#---####
_#####___
Title: Boxworld 2
Author: Thinking Rabbit

这个关卡是鼎鼎有名的“BoxWorld”关卡集的第二关,是不是非常简单?嗯,我们就用这个最最简单的关卡,来认识一下“逆推”。

先看看正推怎么做:

上手一看,我们就知道,①号箱子送到A点,②号箱子送到B点,③号箱子送到C点,好了,完成任务!太简单了!

对,实在是太简单了,几乎不用怎么思考嘛!那么,这么简单的关卡在“逆推”模式下,又会是怎样的呢?一起来看看吧:

嗯?在“逆推”模式下,好像“箱子”是原来的“目标点”,而“目标点”是原来的“箱子”啊!

对!就是这样,上面不是做过介绍嘛,在“逆推”模式下,玩家的思路是反着的,要从关卡的“结束点”向着“出发点”思考,于是,把原关卡中的“目标点”就变成“箱子”,把原关卡中的“箱子”也就变成“目标点”了,这样,难道不是更方便了我们的逆向思考吗?免得我们再做什么想象了呀!

接下来,再看。咦?“人”也没有啊?这怎么推?

嗯,不用急,前面也曾介绍,“逆推”前,需要玩家自己把“人”放到地图里面,为什么呢?因为,这个关卡实在太简单了,我们上眼一看,就知道怎么推,相应的,也就知道了关卡正推完成之时,地图里的“人”会停留在什么位置,但若是一个很大或很复杂的关卡呢?您是不是就不敢确定了呢?所以,“逆推”的第一个难题就摆在了我们面前,如何确定“人”先放在哪里(“正推”解关成功时,“人”最后停留的位置),即先指定一个“人”的“初始位置”才能继续下一步(继续做“逆推”)。

这个关卡太过简单,我们还是先把它完成再去做更深入的理解吧。

1、先把“人”放入地图;

怎么样,很轻松吧?请您想想“正推”完成关卡时,“人”停靠的位置,既然知道正推解关成功时“人”停靠的位置,那就让我们先把“人”放上吧!

2、看看怎么做“逆推”呢?我们还是先做做标记;

把先动的箱子排在了前面,因为关卡简单,我们当然很清楚先动哪个“箱子”,后动哪个“箱子”了,“目标点”的顺序也是一样。

怎么,您也在实战编号(“推箱快手”是支持编号功能的)吗?是不是看到了“人”会随意的变换位置,离开了我们开始为他指定的位置?是的,“逆推”真正开始前,“人”的位置您就随意的安排吧,但是,您若已经“动”了箱子,“人”就不能随意动了哦!

3、下一步呢,当然是完成整个关卡的“逆推”,当然了,此时,就别说“推”箱子了,您没看到箱子是被“拉”着走的吗?所以,说是“拉”箱子更为贴切。

拉①号箱子到A点,拉②号箱子到B点,拉③号箱子到C点,看到了吗?箱子是被“人”拉着走的。哦!哦!您是说我“咋还剩下了一个箱子”,是吧?。

4、别急,这不就来了吗?

您注意到黄色箭头指示的两个位置了吗?

之所以前面留下一个箱子,就是为了强调一下,“逆推”的真正的结束(或叫成功),还需要一个最最重要的因素,就是“还需要最后把人‘移’到‘正推模式中的人初始位置’”,这是前面在解释“逆推”概念时的一句话,左边的箭头指向的是“正推”模式下,“人”的初始位置,而右边的箭头,指向的则是您“逆推”到此时的“人”的停靠位置,观察一下,这两个“位置”是不是连通的?连通,则表明您运用“逆推”成功解关了,那么,若是这两个“位置”不能连通呢,又会怎样?告诉您,不能连通,就说明您的这次“逆推”没有成功,需要回退再来,甚至,需要您重新给“人”安排一个新的“初始位置”从头再来。

如何,您对“逆推”是不是有了自己的理解,是不是掌握了那“两个关键点”?

那么,接下来,我们再“逆推”几个稍稍复杂一些的关卡,就当做是我们的进阶训练吧,让您再多了解一些“逆推”的魅力。

一、破解“归位次序”难题,“逆推”最璀璨的闪光点!

很多玩家,在推箱子时,总会时不时的遇到“哪个目标点先放上箱子好呢?”的困扰,这也包括那些资深玩家,甚至大师也逃不掉,但是,有了“逆推”,您大可不用担心这样的困扰了。

看下面的关卡:

###########
#----#----#
#-$@$$$$$-#
#---------#
#####-#####
___#.--#___
___#.--#___
___#...#___
___#.--#___
___#####___
Title: Boxworld 55
Author: Thinking Rabbit

这是BoxWorld里的第55关,关卡不大,但是箱子的“归位次序”依然会给很多新手造成困扰,不信的话,您可以试试,哦!对了,若您已经是资深的玩家,就别凑热闹了吧。

再看这个关卡呢?

####___________
#--#___________
#--##########__
#----##-----#__
#..#----$$#-#__
#..--##---$-###
#..#--##$#-$--#
#..---#-@$-$--#
#..#--#-$-$---#
#-.---#-$-$-###
#--#--#---###__
#--#----###____
#########______
Title: Boxworld 99
Author: Thinking Rabbit

这是BoxWorld里的第99关,是不是比上一个关卡稍稍难了一些呢?

实在是不想在文章里“推”了,说多了太占篇幅,让人看了徒增厌烦,说少了,好像又表述不清。放在这里,是请您亲自尝试,需要再次说明的是,从您“逆推”开始的步骤,就能够得到正推关卡时,箱子的“归位次序”

您有尝试使用“逆推”功能吗?如果有想法,那我还是先提醒一句:我们“逆推”的首要任务是探求箱子的“归位次序”,所以,进行“逆推”尝试时,暂时可以不必考虑箱子被“拉”出来后放到哪里,您只需记住,哪个箱子是最后一个被“拉”出来的,倒数第二个又是哪个,第三个、第四个呢,……,等等,这个次序,基本上就是正推时,箱子的“归位次序”了,最后被逆推“拉”出来的箱子,就是正推时需要第一个归位的箱子。

好了,大度的您,就原谅我的懒惰吧!

怎么样,再来一个?那好吧,试试这个关卡您能否利用“逆推”大法解决呢?仍然是先不用管“拉”出来的箱子怎样摆放,只要能“拉”出来,随便怎么放,别挡住您回身再去“拉”别的箱子就可以,因为,我们关心的依旧是正推时箱子的“归位次序”。

__________####_____
_##########--#_####
_#-----------###--#
_#-#$###-###$#@$$-#
_#$--#.....-$--$--#
##-$-#.....#-#-##-#
#-$--#.....#$#$---#
#---###-####-#-#$-#
##$-#--------#--$-#
_#--#-#-######-#$-#
_####---#____#----#
____#####____######
Title: level 124
Author: Lester

不管您是否已经“逆推”出了上面这个关卡,都不要紧,因为,我要用这个关卡介绍一下stopheart群主发明的“消去大法”。

二、化繁为简,让您的“逆推”更加从容。

上面三个关卡中,前两个还是简单了些,您遇到的“归位次序”困扰通过几次尝试可能就破解了,第一个或许连“逆推”都可以不用,是的,用上这样的关卡作为例子,只是想让我们进价的步伐不会被轻易的绊住。您不是也看到了吗,关卡中,箱子不多,地图外围也比较空旷,非常有限的目标点位允许我们用头破血流大法来寻找归位的次序,不是吗?但是,关卡又何止万千,当箱子数量多起来,地图外围也不在空旷,那么,您面临的考验就会呈几何级数上升,我也没办法用一篇短短的文章介绍清楚,需要您经受长期的磨练,才能练就一身过硬的功夫,在此,就提前祝贺您一下吧!不过,祝贺的同时,还想再为您介绍一个stopheart群主的“消去大法”,用这个“消去大法”把“逆推”分成两步,这样,会让“逆推”难度再次下降一大级别。

或许,您在“逆推”时就已经发现,那些被“拉”出来的箱子不知道怎样摆放,关卡外围空间像是不太充裕,从而影响了您最终分析整个关卡的“归位次序”,不过,这也不要紧,看看下面的地图,发现了什么?

是的,我重新创建了一个“地图”,去掉了外围的“墙壁”,这样做是为了消除外围空间狭窄带来的不便,当然了,这只是一个临时地图,在这样的地图上再做“逆推”,还能难住功力大进的您吗?如此一来,难度是不是低了很多?接下来,找到原关卡的“归位次序”对您我而言,都是轻而易举了呢!等“归位次序”确定下来后,我们再回到原关卡去分析外围的箱子“摆放”问题,这不就是把问题逐层分解,由简入难吗?

或许,用这个关卡演示“消去大法”还是略显大材小用了,不过,我相信,您的志向一定不在这里,您一定会举一反三,不管面对如何庞大、如何复杂的关卡,总能让您找到正确的解关路线的!

(为了方便您测试,就把上面这个消去了部分外围墙壁的关卡XSB也放到这里吧,同时建议您使用“推箱快手”程序来做测试,因为会更贴近我的表述)。

----------####-----
-##########--#-####
-#-----------###--#
-#--$###-###$#@$$-#
-#$--#.....-$--$--#
##-$-#.....#-#----#
#-$--#.....#$#$---#
#---###-####-#--$-#
##$-#--------#--$-#
-#--#---######--$-#
-####---#----#----#
----#####----######
Title: level 124 + 消去部分外围墙壁
Author: Lester 

最后提示一句,stopheart群主的“消去大法”,不仅是指被消去的“墙壁”,也在暗指运用“逆推”拉法,被逐层消去的箱子呢。

加上两个提示图吧:

上图是在临时关卡正推图上,画上了3条辅助线,辅助线上的箱子都对着“门口”,所以它们可以晚些时候推进来。相应的,下图是在临时关卡逆推图上,也画上了那三条线,意思就是说,这些线上的箱子,逆推时,肯定是最先被拉出来的。而剩下的不在线上的箱子,就是您关注的重点了,那就请您运用“逆推”功能,找出它们的“归位次序”来吧。

好了,虽然水平有限,但还是希望能够给您带来一点提示!多谢各位看官能耐着性子看完这篇粗浅的表述!


本页面创建于2021年1月13日