游戏规则研习:绝对方向与相对转向(案例26)

  • 2026-10-23
  • 1

向北、向东是地图上的绝对方向,左转、右转则依赖当前朝向。把二者混用时,同一个指令可能被理解成不同动作,尤其是角色已经转过身以后。

下面给出一组可以从头复算的练习数据。先按约定记录每一步,再比较最后的核对条件;遇到差异时,不急着修改答案,而是先找出从哪一步开始不同。本例描述的是明确限定的游戏规则模型,不代替某款作品自己的说明。

约定与输入

本例四方向顺时针排列为北东南西。每次根据目标绝对方向选择最少四分之一圈转动,然后前进一格;相反方向统一记后转,不细分左转两次或右转两次。

目标编号减当前编号并按四方向回绕,0不转、1右转、2后转、3左转;转完再前进。

方向编号北0、东1、南2、西3,起点(0,0),初始朝南 目标方向编号[3, 1, 1, 0, 3, 3, 0, 1, 2, 0, 0, 0]

逐步观察

此前朝南,目标朝西,相对指令右转后前进,位置变为(-1,0)。

此前朝西,目标朝东,相对指令后转后前进,位置变为(0,0)。

此前朝东,目标朝东,相对指令直行后前进,位置变为(1,0)。

此前朝东,目标朝北,相对指令左转后前进,位置变为(1,1)。

此前朝北,目标朝西,相对指令左转后前进,位置变为(0,1)。

此前朝西,目标朝西,相对指令直行后前进,位置变为(-1,1)。

此前朝西,目标朝北,相对指令右转后前进,位置变为(-1,2)。

此前朝北,目标朝东,相对指令右转后前进,位置变为(0,2)。

此前朝东,目标朝南,相对指令右转后前进,位置变为(0,1)。

此前朝南,目标朝北,相对指令后转后前进,位置变为(0,2)。

此前朝北,目标朝北,相对指令直行后前进,位置变为(0,3)。

此前朝北,目标朝北,相对指令直行后前进,位置变为(0,4)。

最后位于(0,4),朝北。

复核办法

用记录的相对转向更新朝向,应该还原每一步目标方向;再按朝向累加位移,检查终点。若只算转角而忘记更新当前朝向,后续动作就会错位。

地图朝向如果会随镜头旋转,屏幕上的上方未必仍是北。输入说明应明确采用世界方向还是镜头方向;先固定参照系,才能准确解释左转和向左移动的区别。

把边界、顺序与适用范围写进记录,比只记一个最后数字更有用。可以另外构造刚好在边界、完全没有变化和多个条件同时成立的情况,查看规则是否仍自洽;若要改变设定,保留原案例作为对照,再重新计算受影响的部分。