游戏规则观察:分页条数改变后保留选中项(练习25)
浏览道具列表时,调整每页条数可能使原来的页码失去意义。如果希望继续看到同一个条目,应保存条目的全局位置,再用新条数计算页码和页内位置。
以下是为了练习规则阅读而设计的独立场景。所有输入在这里完整列出,可以先自己记录结果,再对照后面的计算。它不声称对应某款现成游戏;如果实际说明中的边界或处理顺序不同,应以该说明重新演算。
条件与输入
本例条目顺序和总数保持不变,全局索引从零开始,显示页码和行号从一开始。切换条数不会换掉选中项,也没有分页时自动删除或重新排序。
页码为索引整除每页条数再加一;页内行号为余数加一;总页数向上取整。
总条目49,选中全局索引47,也就是列表第48项 依次试用每页条数[7, 3, 12, 11, 16, 13, 9, 6]
逐项复盘
每页7条:共7页,选中项在第7页第6行;本页全局索引从42到48。
每页3条:共17页,选中项在第16页第3行;本页全局索引从45到47。
每页12条:共5页,选中项在第4页第12行;本页全局索引从36到47。
每页11条:共5页,选中项在第5页第4行;本页全局索引从44到48。
每页16条:共4页,选中项在第3页第16行;本页全局索引从32到47。
每页13条:共4页,选中项在第4页第9行;本页全局索引从39到48。
每页9条:共6页,选中项在第6页第3行;本页全局索引从45到48。
每页6条:共9页,选中项在第8页第6行;本页全局索引从42到47。
最后一种排版仍指向全局第48项,其页码和行号为[8, 6]。
如何自行核对
将显示页码减一后乘每页条数,再加显示行号减一,应当还原相同的全局索引。最后一页可能不足整页,不能凭空补出不存在的条目。
若后面还要改变排序,应该先用条目的稳定标识找回它的新索引,再进行分页计算。仅保留旧页码或旧位置并不能保证仍选中同一件道具。
练习时保留原输入,只改一处条件,再观察哪些结果发生变化。若结果与预期不同,先查编号起点、边界是否包含以及前一步留下的状态。这样的记录能把“感觉不对”变成可复现的问题,也更方便向同伴说明自己的判断依据。
