本篇用一份独立的虚构游戏记录练习护盾吸收与固定减免。先按规则预测最后状态,再逐行对照运算,可以找出差异究竟来自输入、边界条件,还是结算先后。下面所有数值都只服务于这一道练习。
先读清楚本例规则
初始生命120、护盾19,每次命中先减免5点,伤害最低为零。护盾先吸收剩余伤害,生命最低为零。第四次命中前额外补充11护盾。
七次原始伤害:10,10,24,22,19,17,16
为何这样记录
护盾、固定减免和生命值是三层不同的结算位置。只比较攻击的原始数值,会漏掉减免在每次命中时分别生效以及护盾可能中途耗尽的影响。
本题先从单次伤害减去固定减免,再由护盾吸收,剩余部分才扣生命。改变这三个步骤的次序,就相当于换了一套规则。
逐步演算
第1次:原始10减免5后为5;护盾吸收5,生命实际减少0,留下护盾14、生命120。
第2次:原始10减免5后为5;护盾吸收5,生命实际减少0,留下护盾9、生命120。
第3次:原始24减免5后为19;护盾吸收9,生命实际减少10,留下护盾0、生命110。
第四次命中之前,护盾补充11点,此时护盾变为11点。
第4次:原始22减免5后为17;护盾吸收11,生命实际减少6,留下护盾0、生命104。
第5次:原始19减免5后为14;护盾吸收0,生命实际减少14,留下护盾0、生命90。
第6次:原始17减免5后为12;护盾吸收0,生命实际减少12,留下护盾0、生命78。
第7次:原始16减免5后为11;护盾吸收0,生命实际减少11,留下护盾0、生命67。
结果与交叉核对
最终生命67、护盾0;护盾共吸收30点,生命实际共减少53点。
护盾账目是初始19+补充11−吸收30=0。固定减免逐次生效,不能先把七次原始伤害合计后只减一次5。
自己怎样练习
自己复核时,可以把纸分成“操作前状态、这一条输入、操作后状态”三栏。先遮住解答完成一遍,再只查找第一次出现分歧的位置;后面的错误往往只是前一步状态传递的结果。确认规则没有改变后,再重新继续,避免只改最终答案却保留中间错误。
第二轮练习只改一条输入,提前写下你预计哪些后续步骤会变化,再重新演算验证。不要同时更改多个条件,否则很难分清是哪条规则造成差别。若实际游戏还涉及随机结果、其他角色、装备或额外判定,应先把这些条件补入记录,本例不会替它们作假设。
