游戏界面与规则实验:多条件物品筛选(独立例14)
本篇用一组独立的虚构记录研究多条件物品筛选。先规定输入和边界,再逐步推演结果;所有规则都为练习而设,不代表某个真实产品的默认实现。你可以先遮住答案,用纸记录中间状态,再比较第一处产生分歧的位置,而不只看最终结论。
机制与注意点
筛选背包时,多个条件之间是同时满足还是满足其一,会直接改变结果。把每项条件分别列出,再求交集,可以解释某件物品为什么没有出现在列表中。
本例筛选不改变背包,只改变可见结果。数值相等是否保留、标签缺失如何处理,都按下面写明的规则判断。
明确规则与输入
同时满足重量不超过9、品质至少4、包含标签“任务”才显示,保持原顺序。下文True表示满足,False表示不满足。
编号0,重量8,品质4,标签['任务', '护具'] 编号1,重量8,品质4,标签['任务', '工具'] 编号2,重量6,品质5,标签['工具', '护具', '材料'] 编号3,重量9,品质4,标签['任务', '工具', '食物'] 编号4,重量8,品质4,标签['任务'] 编号5,重量12,品质2,标签['任务', '工具', '食物'] 编号6,重量3,品质2,标签['任务'] 编号7,重量10,品质1,标签['护具', '材料', '食物'] 编号8,重量2,品质2,标签['任务', '工具', '护具']
逐步核对记录
物品0:重量True,品质True,标签True;保留。
物品1:重量True,品质True,标签True;保留。
物品2:重量True,品质True,标签False;隐藏。
物品3:重量True,品质True,标签True;保留。
物品4:重量True,品质True,标签True;保留。
物品5:重量False,品质False,标签True;隐藏。
物品6:重量True,品质False,标签True;隐藏。
物品7:重量False,品质False,标签False;隐藏。
物品8:重量True,品质False,标签True;隐藏。
结果及另一种检查
最终保留编号[0, 1, 3, 4],共4件。
独立列出符合重量、品质、标签的三个编号集合,取交集后按原序排列,应与逐物品判断一致。若结果为空,不代表背包消失,只说明没有物品同时满足这组三个条件。
自己动手复盘
复核时把数据、判断条件和更新后的状态分开写。相等边界、编号从零还是从一开始、先筛选还是先排序,都可能造成看似微小却会延续到后续步骤的差别。不要为了让最后数字吻合而跳过中间错误;先找到第一处不同,再按同一规则重新推演。
进一步练习只改变一项输入,例如一个边界值、一个标签或一次操作,先预测受影响的部分,再计算新结果。把不受影响的部分也记录下来,能更清楚地看出规则的作用范围。应用到真实游戏前,先核对其帮助说明或在可重复场景中验证条件,避免把本例的虚构约定当成通用标准。