设计
一眼找到自己的棋子:更大,却仍能六个共处一格
棋盘上的棋子原本只有 15 像素宽,很容易看丢。现在它们大了约一半——而且会沿着格子排开,而不是溢出格外。

通俗版
在棋盘上移动的彩色圆点原本只有 15 像素宽。在手机上,当同一张棋盘还有另外五名玩家时,找到自己的棋子要费一番功夫——而知道自己在哪,是一款棋盘游戏对其画面最基本的要求。
现在它们是 23 像素,约大了一半,白色描边、当前玩家光晕和跳跃动画也按同样比例放大。棋盘的其他部分毫无变化:同样的颜色、同样的格子、同样的布局。

更大的棋子让第二个问题变得显眼:多名玩家同处一格。现在它们会沿着格子的长边像扇形排开的硬币一样叠压,因此即便六个棋子同在起点角,也仍待在格内。
技术细节
尺寸改动只涉及一个组件:直径、描边宽度和光晕都由同一个设计变量推导而来,跳跃弧线也相应抬高。编译后的样式表可以确认旧值确实消失了,而不只是被覆盖。
布局修复才是有意思的那一半。棋子原本以水平 flex 行排列,这对一个棋子没问题,对四个就不对了:在狭窄的上下格——以及可能容纳全部六个棋子的角格——它们干脆溢出边界,而 flex 的排布方式还把本应让它们呈扇形展开的偏移量放大了一倍。
tsx
// Board.tsx — absolute-centred, offset along the cell's LONG axis
const offset = (i - (count - 1) / 2) * STACK_STEP;
const style = vertical
? { transform: `translate(-50%, calc(-50% + ${offset}px))` } // top/bottom + corners
: { transform: `translate(calc(-50% + ${offset}px), -50%)` }; // left/right columns验证它需要的是浏览器而不是测试:按真实格子尺寸,把从两个到六个的每种数量、每种格子朝向都渲染一遍,检查有没有被裁切。最初的溢出问题也正是这样发现的——它在任何单元测试里都不可见,因为在被绘制出来之前,一切看起来都没有错。
