У меня проблема с тем, как рисовать квадраты на холсте, используя координаты во вложенном массиве. Идея состоит в том, чтобы выделить несколько квадратов, чтобы игрок знал, что он может двигаться по ним.
Функция рисования этих квадратов вызывается после, поэтому весь холст не рисуется снова.
Я знаю, как отобразить изображение на точном квадрате, но не понимаю, как я могу выполнить итерацию по вложенному массиву, чтобы холст смог снова нарисовать некоторые квадраты красным цветом.
Как преобразовать "координаты массива" в значения, используемые методами рисования на холсте.
Или проблема кроется в разнице между availableSquare и chartBoard?
Поскольку я не нашел ни одной темы по этому вопросу, я надеюсь, что мой пример достаточно подробный.
function Game(width, height) {
this.width = width;
this.height = height;
}
const game = new Game(10, 10)
const chartBoard = [];
const availableSquares = [
[6, 6],
[6, 7],
[6, 8]
]
// The nested arrays with all the possible position
function createBoard(width, height) {
for (let i = 0; i < width; i++) {
const row = [];
chartBoard.push(row);
for (let j = 0; j < height; j++) {
const col = {};
row.push(col);
}
}
return chartBoard;
};
createBoard(game.width, game.height);
console.log(chartBoard)
// Display the array on the canvas
const ctx = $('#board').get(0).getContext('2d');
function drawBoard(width, height) {
for (let i = 0; i < width; i++) {
for (let j = 0; j < height; j++) {
ctx.strokeStyle = 'rgba(0, 0, 0, 0.7)';
ctx.beginPath();
ctx.strokeRect(j * 64, i * 64, 64, 64);
ctx.closePath();
}
}
};
drawBoard(game.width, game.height);
// Function to highlight the squares from the array availableSquares
// function showAvailableMovement(array) {
// for (let i = 0; i < array.length; i++) {
// for (let j = 0; j < array[i].length; j++) {
//
// ctx.strokeStyle = 'red';
// ctx.beginPath();
// ctx.strokeRect(j * 64, i * 64, 64, 64);
// ctx.closePath();
// }
// }
// };
// showAvailableMovement(availableSquares);
body {
background-color: black;
}
#board {
background-color: white;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<canvas id="board" width="640" height="640"></canvas>