提问者:小点点

重绘网格的二级激活问题(游戏逻辑)


我正在建立一个2D js pacman与钥匙/门为第二级。 这个想法是在抓住钥匙之后有能力进入下一个级别。 当pacman到达门口时,网格就会更新。 游戏数据是一个包含两个网格的数组。 重画网格的最佳方法是什么? 还有谁能建议创造鬼魂的好资源? 提前谢谢你。

电平变化逻辑

let level = 0;

let grid = gameData[0]

function levelChange() {
    console.log(grid[pacman.y][pacman.x] === grid[door.y][door.x])
    if (grid[pacman.y][pacman.x] === grid[door.y][door.x]) {
        grid = gameData[1];
        level += 1;
    }
    console.log(level)
    console.log(grid)
}

let map;

let pacman = {
    x: 6,
    y: 4,
    direction: 'right'
};

let door = {
    x: 11,
    y: 8,
}

绘图网格

function drawMap() {
    map = document.createElement('div');
    // console.log(grid)
    let tiles = createTiles(grid);
    tiles.forEach(tile => { 
        map.appendChild(tile);
    });
    document.getElementById('body').appendChild(map)
    // document.body.appendChild(map);
}

调用级别更改

function setupKeyboardControls() {
    document.addEventListener('keydown', function (e) {
        // console.log(e.keyCode);
        if (e.keyCode === 37) {
            moveLeft();
        } else if (e.keyCode === 38) {
            moveUp();
        } else if (e.keyCode === 39) {
            moveRight();
        } else if (e.keyCode === 40) {
            moveDown();
        }
        eraseMap();
        drawMap();
        screenScore();
        doorUnlock();
        levelChange();
    });
}

function main() {
    drawMap();
    setupKeyboardControls();
}

main();


共1个答案

匿名用户

必须将drawmap/erasemap移动到setupKeyboardControls()的底部