本篇用一份独立的虚构游戏记录练习持续时间的刷新与延长。先按规则预测最后状态,再逐行对照运算,可以找出差异究竟来自输入、边界条件,还是结算先后。下面所有数值都只服务于这一道练习。
先读清楚本例规则
每次触发提供4秒状态。刷新规则直接把结束点设为当前时刻加4;延长规则在尚有剩余时把4加到旧结束点,已结束则从当前时刻重新计。
触发时刻(秒):0,4,10,12,16,20,22
为何这样记录
再次获得同一种状态时,刷新计时和累计剩余时间是不同机制。相同的触发记录,套用不同规则,最后结束的时刻可能相差很多。
本例分别维护两条独立时间轴。状态在结束时刻本身已经失效;新触发不会把已经过去的空档补算为有效时间。
逐步演算
第1次在0秒触发:刷新规则把结束点0改为4;延长规则取当前时刻0与旧结束点0中的较大值,再加4,得到4。
第2次在4秒触发:刷新规则把结束点4改为8;延长规则取当前时刻4与旧结束点4中的较大值,再加4,得到8。
第3次在10秒触发:刷新规则把结束点8改为14;延长规则取当前时刻10与旧结束点8中的较大值,再加4,得到14。
第4次在12秒触发:刷新规则把结束点14改为16;延长规则取当前时刻12与旧结束点14中的较大值,再加4,得到18。
第5次在16秒触发:刷新规则把结束点16改为20;延长规则取当前时刻16与旧结束点18中的较大值,再加4,得到22。
第6次在20秒触发:刷新规则把结束点20改为24;延长规则取当前时刻20与旧结束点22中的较大值,再加4,得到26。
第7次在22秒触发:刷新规则把结束点24改为26;延长规则取当前时刻22与旧结束点26中的较大值,再加4,得到30。
结果与交叉核对
最后一次触发后,刷新版本到26秒结束,延长版本到30秒结束,相差4秒。
从最后触发时刻22看,两种规则剩余时间分别是4秒和8秒。要比较剩余时间,必须减掉同一个观察时刻,不能直接把结束点当成持续长度。
自己怎样练习
自己复核时,可以把纸分成“操作前状态、这一条输入、操作后状态”三栏。先遮住解答完成一遍,再只查找第一次出现分歧的位置;后面的错误往往只是前一步状态传递的结果。确认规则没有改变后,再重新继续,避免只改最终答案却保留中间错误。
第二轮练习只改一条输入,提前写下你预计哪些后续步骤会变化,再重新演算验证。不要同时更改多个条件,否则很难分清是哪条规则造成差别。若实际游戏还涉及随机结果、其他角色、装备或额外判定,应先把这些条件补入记录,本例不会替它们作假设。
