Javascript 我不知道';我不明白为什么我应该使用let I=2来操作函数冲突
我正在编写JavaScript snake游戏,我不知道为什么我应该输入let I=2而不是let I=0Javascript 我不知道';我不明白为什么我应该使用let I=2来操作函数冲突,javascript,if-statement,Javascript,If Statement,我正在编写JavaScript snake游戏,我不知道为什么我应该输入let I=2而不是let I=0 const apple_length = 40; // ground width, height = 680 let ground_width = 680 let ground_height = 680 //create the snake let snake = []; //control the snake document.addEventListener('keydown
const apple_length = 40;
// ground width, height = 680
let ground_width = 680
let ground_height = 680
//create the snake
let snake = [];
//control the snake
document.addEventListener('keydown', event => {}
//draw everything to the canvas
function draw() {
for (let i = 0; i < snake.length; i++) {
ctx.fillStyle = 'blue';
ctx.fillRect(snake[i].x,snake[i].y,apple_length, apple_length)
ctx.strokeStyle = 'black';
ctx.strokeRect(snake[i].x,snake[i].y,apple_length,apple_length)
}
//which direction
if (d === 'LEFT') snakeX -= apple_length;
if (d === 'UP') snakeY -= apple_length;
if (d === 'RIGHT') snakeX += apple_length;
if (d === 'DOWN') snakeY += apple_length;
//old head position
let snakeX = snake[0].x;
let snakeY = snake[0].y;
if (snakeX === apple.x && snakeY === apple.y) {
apple = {
x: Math.floor(Math.random() * 17) * apple_length,
y: Math.floor(Math.random() * 17) * apple_length
}
}else {
snake.pop();
}
// add new Head
let newHead = {
x: snakeX,
y: snakeY
}
snake.unshift(newHead);
// when the snake collide with one's body and head the game is over
function collision(head, array) {
for (let i = 2; i < array.length; i++) {
if (head.x === array[i].x && head.y === array[i].y) {
return true;
}
} return false;
}
函数内冲突(头,数组)(设i=2;i{}
//把一切都画到画布上
函数绘图(){
for(设i=0;iarray
是蛇的不同部分:对于碰撞检测,您不想测试头部是否与自己的头部发生碰撞(array[0]
),因为它们是同一个对象,所以这总是正确的。头部后面的部分(array[1]
)也不应该与头部发生碰撞,因为蛇不应该以这样的方式移动以允许发生碰撞。因此,开始检测的位置是第二节数组[2]
[0][1][2][3][4][5][6]
假设这是你的蛇,0是蛇的头部,因此不可能使用0来检查碰撞,因为0总是与头部碰撞。哦!我想当我使用let I=0与此代码一起使用时,我无法操作函数碰撞。我将进一步研究以发现我想要使用的方法。