公司新闻

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

2026-10-27

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

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

规则和原始数据

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

同一排3个按钮;每项[容器宽,左边距,右边距,间距] [[95, 2, 3, 2], [116, 11, 3, 9], [93, 7, 10, 11], [97, 6, 7, 10], [103, 8, 4, 9], [102, 4, 10, 8], [75, 8, 2, 8], [101, 8, 2, 5]]

逐步记录

容器宽95,左右边距2/3、间距2:可分配86,商28余2;按钮宽[29, 29, 28],区间[[2, 31], [33, 62], [64, 92]],末端为92。

容器宽116,左右边距11/3、间距9:可分配84,商28余0;按钮宽[28, 28, 28],区间[[11, 39], [48, 76], [85, 113]],末端为113。

容器宽93,左右边距7/10、间距11:可分配54,商18余0;按钮宽[18, 18, 18],区间[[7, 25], [36, 54], [65, 83]],末端为83。

容器宽97,左右边距6/7、间距10:可分配64,商21余1;按钮宽[22, 21, 21],区间[[6, 28], [38, 59], [69, 90]],末端为90。

容器宽103,左右边距8/4、间距9:可分配73,商24余1;按钮宽[25, 24, 24],区间[[8, 33], [42, 66], [75, 99]],末端为99。

容器宽102,左右边距4/10、间距8:可分配72,商24余0;按钮宽[24, 24, 24],区间[[4, 28], [36, 60], [68, 92]],末端为92。

容器宽75,左右边距8/2、间距8:可分配49,商16余1;按钮宽[17, 16, 16],区间[[8, 25], [33, 49], [57, 73]],末端为73。

容器宽101,左右边距8/2、间距5:可分配81,商27余0;按钮宽[27, 27, 27],区间[[8, 35], [40, 67], [72, 99]],末端为99。

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

交叉核对与应用

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

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

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