Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/449.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 我不知道';我不明白为什么我应该使用let I=2来操作函数冲突_Javascript_If Statement - Fatal编程技术网

Javascript 我不知道';我不明白为什么我应该使用let I=2来操作函数冲突

Javascript 我不知道';我不明白为什么我应该使用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

我正在编写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', 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;i假设
array
是蛇的不同部分:对于碰撞检测,您不想测试头部是否与自己的头部发生碰撞(
array[0]
),因为它们是同一个对象,所以这总是正确的。头部后面的部分(
array[1]
)也不应该与头部发生碰撞,因为蛇不应该以这样的方式移动以允许发生碰撞。因此,开始检测的位置是第二节
数组[2]
[0][1][2][3][4][5][6]
假设这是你的蛇,0是蛇的头部,因此不可能使用0来检查碰撞,因为0总是与头部碰撞。哦!我想当我使用let I=0与此代码一起使用时,我无法操作函数碰撞。我将进一步研究以发现我想要使用的方法。