公司新闻

游戏机制练习簿:等宽按钮分配中的余数像素——5按钮在八种宽度中的像素分配(案例20)

2026-10-27

一排按钮平分可用宽度时,除法不一定得到整数像素。若每个按钮独立四舍五入,最后总宽度可能超出容器或留下缝隙。明确分配余数,可以使边距与总尺寸精确对齐。

以下是一组输入完整的独立案例。先读清规则,再按时间或操作顺序记录中间状态;遇到与预期不同的结果时,检查首次出现差异的位置。案例使用明确限定的教学模型,不假定所有作品都采用相同的处理方式。

规则和原始数据

先扣除左右边距和固定间距,再把剩余整数像素平均分给按钮。每个按钮先得商,剩余像素从左到右各加一;位置区间右端排除,所有按钮至少有一个像素。

同一排5个按钮;每项[容器宽,左边距,右边距,间距] [[120, 2, 5, 5], [174, 12, 10, 6], [163, 4, 12, 12], [116, 10, 7, 6], [202, 2, 11, 10], [82, 5, 9, 3], [90, 6, 12, 3], [98, 9, 9, 7]]

逐步记录

容器宽120,左右边距2/5、间距5:可分配93,商18余3;按钮宽[19, 19, 19, 18, 18],区间[[2, 21], [26, 45], [50, 69], [74, 92], [97, 115]],末端为115。

容器宽174,左右边距12/10、间距6:可分配128,商25余3;按钮宽[26, 26, 26, 25, 25],区间[[12, 38], [44, 70], [76, 102], [108, 133], [139, 164]],末端为164。

容器宽163,左右边距4/12、间距12:可分配99,商19余4;按钮宽[20, 20, 20, 20, 19],区间[[4, 24], [36, 56], [68, 88], [100, 120], [132, 151]],末端为151。

容器宽116,左右边距10/7、间距6:可分配75,商15余0;按钮宽[15, 15, 15, 15, 15],区间[[10, 25], [31, 46], [52, 67], [73, 88], [94, 109]],末端为109。

容器宽202,左右边距2/11、间距10:可分配149,商29余4;按钮宽[30, 30, 30, 30, 29],区间[[2, 32], [42, 72], [82, 112], [122, 152], [162, 191]],末端为191。

容器宽82,左右边距5/9、间距3:可分配56,商11余1;按钮宽[12, 11, 11, 11, 11],区间[[5, 17], [20, 31], [34, 45], [48, 59], [62, 73]],末端为73。

容器宽90,左右边距6/12、间距3:可分配60,商12余0;按钮宽[12, 12, 12, 12, 12],区间[[6, 18], [21, 33], [36, 48], [51, 63], [66, 78]],末端为78。

容器宽98,左右边距9/9、间距7:可分配52,商10余2;按钮宽[11, 11, 10, 10, 10],区间[[9, 20], [27, 38], [45, 55], [62, 72], [79, 89]],末端为89。

每种布局的最后右端都恰好等于容器宽减右边距,余数已完整分配。

交叉核对与应用

逐个统计按钮宽度与固定间距,检查最后一项右端恰好落在容器宽度减右边距处。任意两个按钮宽度最多差一,额外像素只分配给前面的若干项。

从左到右发放余数是一种确定约定,也可以设计居中或交替分配,但不能在同一组测试里混用。确定性规则有助于减少窗口大小来回变化时不必要的边缘抖动。

建议保留原始输入、每一步状态和最终输出,再只改变一个条件做对照。重点检查空输入、相等边界、重复请求以及先后顺序;把规则约定、计算过程和显示表现分别核对,比只比较最后一个数字更容易找到原因。