基础规则 102

本节是 PuzzleScript 规则机制的扩展介绍。

淘气的小精灵

假设有一个淘气的小精灵,当它看到玩家的时候就会进行位置的互换,一个很自然的规则实现是:

late [ Sprite | ... | Player ] -> [ Player | ... | Sprite ]

然而,千万不要这么做!这个规则会创造出一个无穷的循环,无止尽地交换精灵和玩家的位置。正确的做法是这样,引入一个 Temp 的物体:

late [ Sprite | ... | Player ] -> [ Temp | ... | Sprite ]
late [ Temp ] -> [ Player ]

亲自试一试:

爱吃水果的小喵咪

考虑下面的规则,这里用 Kitty 表示主角,当移动路径上有水果,则直接移动到水果的地方:

[ > Kitty | ... | Fruit ] -> [ | ... | Kitty ]
[ > Kitty ] -> [ Kitty ]

最后的效果如下:

这里第二行规则的作用,是组织平常的移动,如果不确定它具体的作用,可以亲自试一试:

特定方向生效的规则

如果想要某个箱子,只能以水平的方式被推动,只需要在规则之前加上这个修饰词:

Horizontal [ > Player | Block ] -> [ > Player | > Block ]

这样就限制了这个规则只能以水平的方式被匹配,最后的效果如下:

类似的关键词还有:Vertical 表示竖直方向

以及具体到方向的:DOWN、UP、RIGHT、LEFT

亲自试一试:

任意位置生效的规则

规则可以超越行与列的限制,比如说下面这个相扑运动员会跟着主角走的规则:

[ > Player ] [ Sumo ] -> [ > Player ] [ > Sumo ]

最后更新于