Я сейчас пишу шахматную программу и пытаюсь пройти все ходы ладьи. Для этого мне нужно получить такой набор чисел: 1 0 (справа), -1 0 (слева), 0 1 (вверх), 0 -1 (вниз). Я придумал следующую строчку кода:
if (this.piece == "rook" || this.piece == "queen") {
for (var dir = -3; dir <= 3; dir += 2) {
let checkChar = pposChar, checkNum = pposNum, m1, m2;
for (var i = 0; i < this.step; i++) {
if (dir == 1 || dir == -1) {
m1 = 0, m2 = dir;
} else {
m1 = dir/Math.abs(dir), m2 = 0;
}
if (isLegal(checkChar, checkNum, m1, m2)) {
this.moves.push(isLegal(checkChar, checkNum, m1, m2));
checkChar += m1;
checkNum += m2;
} else
break;
}
}
}
Работает просто отлично, но выглядит уродливо и сложно для чтения. Есть ли способ сделать это чище или лучше?