Javascript 如何计算网格状数独游戏中的单元格间距?

Javascript 如何计算网格状数独游戏中的单元格间距?,javascript,html,actionscript-3,game-development,starling-framework,Javascript,Html,Actionscript 3,Game Development,Starling Framework,这就是我现在正在使用的,它正在工作 var cellSize:Number = 36; var cellGap:Number = 4; var row:Number; var col:Number; for (var a:int = 0 ; a < puzzleSTR.length ; a++) { col = a % 9; row = Math.floor(a / 9); var cell:Cell = new Cell(puzzleSTR.c

这就是我现在正在使用的,它正在工作

var cellSize:Number = 36;
var cellGap:Number = 4;
var row:Number;
var col:Number;

for (var a:int = 0 ; a < puzzleSTR.length ; a++)
{
        col = a % 9;
        row = Math.floor(a / 9);

    var cell:Cell = new Cell(puzzleSTR.charAt(a));
    cell.x = col * (cellSize + cellGap);
    cell.y = row * (cellSize + cellGap);                
    container.addChild(cell);
    cells.push(cell);
}
var cellSize:Number=36;
var cellGap:Number=4;
var行:编号;
var-col:数字;
for(var a:int=0;a
这个结果是9*9的网格,它们之间有4个像素的间隔,现在我想要相同的结果,但是水平和垂直方向的间隔应该是每3个单元格8个,就像数独游戏一样

我使用actionscript3,但我只需要任何语言的概念
谢谢你

因为你要绝对定位元素,所以你需要一个额外的4px间距(除了默认的4px间距,等于8px),从第四列到该行的每个后续列。从第7列开始,您需要添加8px,以考虑这两个间隙

同样的逻辑也适用于行间距。请注意,我将与
3
6
进行比较,以获得第四列和第七列,因为变量是以零为基础的

var extraColPadding = col >= 6 ? 8 : col >= 3 ? 4 : 0;
var extraRowPadding = row >= 6 ? 8 : row >= 3 ? 4 : 0;

cell.x = col * (cellSize + cellGap) + extraColPadding;
cell.y = row * (cellSize + cellGap) + extraRowPadding;   

提示:当
number%3==0
时,您可以检测数字是否是3的倍数(请记住,当索引从零开始时,您需要测试
number+1
,而不是
number
),额外像素数为
Math.floor(col/3)*4
表示
x
。对于
/
y
也是如此。如果您还没有看到我的上述评论,我鼓励您再次查看。这样做更具可读性。Chris G是对的,不仅更具可读性,而且它也适用于行数或列数大于9的网格,而公认的解决方案是不会的。我实际上使用了这一点。谢谢你在david的回复中看到这一点的任何人。体外填充应该在括号外,如下图所示(cellSize+cellGap)+extraColPadding;否则,间距将每3列加倍。啊,是的,
extraColPadding
不打算包含在乘法中。已更新。