如果不起作用,请让函数进入内部。 (没有错误信息)

时间:2019-05-06 17:02:09

标签: javascript

我正在做蛇游戏。 我遇到的问题是,如果蛇与食物处于同一位置,则食物会重生到另一个地方。

Nophing,我在互联网上的任何地方都找不到错误。

function draw (){

    if(snakeX == food.x && snakeY == food.y){
        score++;
        eat.play();
        let food = {
            x : Math.floor(Math.random()*17+1) * box,
            y : Math.floor(Math.random()*15+3) * box
        }

应该在乐谱上加分,发出声音,更换食物。

现在它正在添加一个点并发出声音。

1 个答案:

答案 0 :(得分:4)

您需要删除let statement,因为您创建了一个仅在块中具有作用域的新局部变量。变量外部保持相同的值,而不会更改为新值。

if (snakeX == food.x && snakeY == food.y) {
    score++;
    eat.play();
    food = {                                         // without let
        x: Math.floor(Math.random() * 17 + 1) * box,
        y: Math.floor(Math.random() * 15 + 3) * box
    };
}

请查看以下示例:

x获得具有自己值的新本地范围。外部变量x保持不变。

let x = { a: 42 };

if (true) {
    let x = { b: 0 };
    console.log(x);   // b ...
}

console.log(x);       // a ...