@MANCHERA
web

Не могу нарисовать карту из двумерного массива. Как отрисовать её на canvas?

Не работает код

let canvas = document.getElementById('canvas');
let ctx = canvas.getContext('2d');


// global info
let GI = {
    // tiles size
    TS: 50,
}

let map = [
    [0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0],
    [0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0],
    [0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0],
    [0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0],
    [0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0],
    [0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0],
    [0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0],
    [0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0],
    [0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0],
    [0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0],
]

function SetCanvasSize(e){
    ctx.canvas.width = e.innerWidth
    ctx.canvas.height = e.innerHeight
}

function drowMap(){
    for(let x = 0; x < map.length; x++){
        for(let y = 0; y < map[x].length; y++){
            ctx.clearRect(0 , 0 , ctx.canvas.width , ctx.canvas.height)

            ctx.fillStyle = '#ff0000'
            ctx.fillRect(x * GI.TS , y * GI.TS , GI.TS , GI.TS)
            
        }
    }
}

drowMap()

SetCanvasSize(window)

window.addEventListener('resize' , ()=>{
    drowMap()
    
    SetCanvasSize(window)
})
  • Вопрос задан
  • 95 просмотров
Решения вопроса 1
Seasle
@Seasle Куратор тега JavaScript
Сначала меняете размеры, потом рисуете.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
sergiks
@sergiks Куратор тега JavaScript
♬♬
Ошибка в том, что при отрисовке каждой ячейки стираете ВСЮ канву:
ctx.clearRect(0 , 0 , ctx.canvas.width , ctx.canvas.height)


Рабочий пример:
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы