几年前,无意间读到一本关于“穿越”的小说——《极品家丁》,之后,便一发而不可收拾,《最强弃少》、《仙逆》等等,一本一本,不知多少,读的我都已经坚信真的有“穿越”了,更对宇宙的神秘充满了好奇。
所以,当听到推箱大佬们也在不停的念叨“穿越”之时,我立马明白了是怎么回事,在求教了杨超教授后,信誓旦旦的把“在线推箱子”的相关代码移植到了“推箱快手”,让“推箱快手”耳目一新。
那么,推箱子是怎么“穿越”的呢?让我们一起来探究一番吧。
上面的关卡图没有任何实战意义,它只是我随意画出的例子,在“点推”世界(关于“点推”,想必不用在这里多做解释的吧,若不明白,请您到“贴吧”或推箱子群里问一声,相信您会得到许多人的帮助)里,当我们点击一下“人”,程序就会给出“人”的可达位置的提示,左图是没有开启“穿越”功能的情况,右图是开启后的情况。
白色的圆点,是在告诉我们,“人”在不需要穿越的情况下,可以随意活动的范围,而右侧黑色的小方块,则提示我们,这些地方是“人”通过一个小小的“穿越”能够达到的地方,而那个画上了黑色小圆点的“箱子”,则是提示我们,这个箱子就是“穿越点”。
您看到了吧,左图中,“人”只能在左侧房间活动,右侧的房间被一个“箱子”阻挡住了。右图因为开启了“穿越”,“人”的活动范围一下子就增加了许多。
通过一个小小的“穿越”动作,就增加了这么多的活动空间,这不是有点蒙蒙的酸爽吗?那是当然的了,当下,很多优秀的推箱子程序都支持了这一功能,“推箱快手”就是其中之一。
那么,这种类似“穿越”的功能是怎么实现的呢?请您继续往下看。
看右图的提示,有人不禁会问,“人”怎么就能够跑到箱子的右边呢?箱子不是拦着路呢吗?是的,“穿越”也是要求“人”移动位置后,关卡的整体“样子”不能改变,即在保持“箱子都没动”的情况下,“人”到达了箱子的右侧。这怎么可能?其实,也难怪您不相信,我自己也不相信!
“图1”是原始状态,请记住“人”和箱子的位置,“图2”是把箱子向右推了一格,“图3”是告诉我们,此时让“人”沿着箭头移动,就可以达到“图4”,而达到“图4”后,我们若是再向左推一下箱子呢,会不会看到“图5”的情形?而这时,“人”不是已经到了箱子的右侧,而“箱子好像是没有动过的样子”呢?
此时,再看看“图1”和“图5”,这不就是“箱子未动”,而“人”从箱子的左侧到了右侧吗?对,这就是推箱子游戏中所谓的“穿越”,您明白了吗?
推箱子游戏中所谓的“穿越”,就是关卡中的所有箱子都“好像未动”,而“人”却到了常规方法不能到达的地方。
下面,让我们用几幅图例。了解一下更多的“穿越”情形:
上面两图中的“穿越”,“推箱快手”都能够支持,“推箱快手”支持的穿越情形,是被穿越的“箱子”先沿着某条“直线”推动,再沿着这条“直线”推回原位,类似情形太多,不必一一列举。
而下面几种复杂的情形的“穿越”,“推箱快手”就不再支持了。
左图的“穿越”箱子需要拐弯,右图的“穿越”包含了另一个“穿越”。等等,还有不少更复杂的情形,“推箱快手”也没有提供支持,不支持的原因是,穿越算法会增加“路径计算”(计算“人”或箱子被点击后可以达到的位置)的时间,当关卡比较大的时候,即使关卡里面没有需要“穿越”的情形,程序也会去检查是否可以“穿越”,这时,“路径计算”就会造成变得很慢很慢。
庆幸的是,“推箱快手”在计算“箱子”的可达位置时,也支持“穿越”。
正当我“穿越”附身,一边推箱子一边爽歪歪的时候,anian先生说,“穿越”这个想法是西北天狼先建议的,哇,大神就是大神,让我们为天狼大神点赞吧!
___#################____
___#---##--#---##--#____
___#--$----#--$----#____
#####-###$-##-###$-#____
#---#$-##-###$-##-####__
#--$---#--$----#--$--#__
##-##--#---##--#-@-#-#__
##-#################-###
#--$-$-$-$-$-$-$-$-$-$-#
#-...................--#
########################
Author: 西北天狼
本网页创建于2021年1月13日