Как рассчитать разрыв клеток в сетке, как в игре Судоку? - PullRequest
0 голосов
/ 04 апреля 2019

это то, что я сейчас использую, и это работает

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);
}

это результат сетки 9 * 9 с промежутком в 4 пикселя между ними, теперь я хочу получить тот же результат, но разрыв должен составлять 8 на каждые 3 ячейки по горизонтали и вертикали, точно так же, как у судоку.

Я использую actionscript3, но мне нужна только концепция на любом языке спасибо

1 Ответ

1 голос
/ 04 апреля 2019

Поскольку вы позиционируете элементы абсолютно, вам понадобится дополнительный разрыв в 4 пикселя (в дополнение к стандартному разрыву в 4 пикселя, равному 8 пикселям), начиная с четвертого столбца и для каждого последующего столбца в этомстрока.Начиная со столбца 7 и далее, вам нужно будет добавить 8 пикселей, чтобы учесть оба пробела.

Та же логика применима к интервалу между строками.Обратите внимание, что я сравниваю с 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;   
...