我正在做蛇游戏。 我遇到的问题是,如果蛇与食物处于同一位置,则食物会重生到另一个地方。
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
}
应该在乐谱上加分,发出声音,更换食物。
现在它正在添加一个点并发出声音。
答案 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 ...