繁体   English   中英

JavaScript中的蛇:我不能再让蛇尾巴更长

[英]Snake in JavaScript: I can't get my snakes tail longer

我做了一个几乎可以正常工作的蛇游戏。 我有一个蛇头,以及一个包含头和所有尾巴的阵列。 当蛇吃食物时,食物会移动,但是当我吃食物时,我的尾巴不会变大。 我对数组没有IMMENSE的了解,也许我做错了吗?

这是代码:

 setSize(400, 400); var background = new Rectangle(getWidth(), getHeight()); background.setPosition(0, 0); background.setColor(Color.black); add(background); // ------------------------------------------------ var gameTime = 0; var snakeX = (Randomizer.nextInt(0, 19)) * 20; var snakeY = (Randomizer.nextInt(0, 19)) * 20; var foodX; var foodY; var snakeFood = new Rectangle(20, 20); snakeFood.setColor(Color.red); var food_eaten = 0; var snakeSpeed = 20; var keyLeft = false; var keyRight = false; var keyUp = false; var keyDown = false; var snake_size = 10; var snakeHead = new Rectangle(20, 20); snakeHead.setColor(Color.green); var snakes = [snakeHead]; // ------------------------------------------------ function start(){ setup(); keyDownMethod(checkKey); setTimer(counter, 250); } function counter(){ gameTime += 0.25; updateSnake(); } function setup(){ foodX = (Randomizer.nextInt(0, 19)) * 20; foodY = (Randomizer.nextInt(0, 19)) * 20; snakeHead.setPosition(snakeX, snakeY); add(snakeHead); snakeFood.setPosition(foodX, foodY); add(snakeFood); } function checkKey(e){ if(e.keyCode == Keyboard.LEFT){ keyRight = false; keyUp = false; keyDown = false; keyLeft = true; }else if(e.keyCode == Keyboard.RIGHT){ keyLeft = false; keyUp = false; keyDown = false; keyRight = true; }else if(e.keyCode == Keyboard.UP){ keyRight = false; keyLeft = false; keyDown = false; keyUp = true; }else if(e.keyCode == Keyboard.DOWN){ keyRight = false; keyLeft = false; keyUp = false; keyDown = true; } } function updateSnake(){ if(foodX == snakeX && foodY == snakeY){ eat(); } var dirX = 0; var dirY = 0; if(keyLeft == true){ dirX = -(snakeSpeed); dirY = 0; }else if(keyRight == true){ dirX = snakeSpeed; dirY = 0; }else if(keyUp == true){ dirY = -(snakeSpeed); dirX = 0; }else if(keyDown == true){ dirY = snakeSpeed; dirX = 0; } // moving the snake head snakeHead.setPosition(snakeX + dirX, snakeY + dirY); snakeX += dirX; snakeY += dirY; // moving the snake body if(snakes.length > 1){ for(var i = 0; i < snakes.length; i++){ var curr_body = snakes[i]; curr_body.setPosition(snakeX + dirX, snakeY + dirY); } } } function eat(){ foodX = (Randomizer.nextInt(0, 19)) * 20; foodY = (Randomizer.nextInt(0, 19)) * 20; var tail = new Snake(snakeX, snakeY); snakeFood.setPosition(foodX, foodY); } function Snake(x, y){ var snakeBody = new Rectangle(20, 20); if(keyLeft == true){ snakeBody.setPosition(x + snake_size, y); }if(keyRight == true){ snakeBody.setPosition(x - snake_size, y); }if(keyUp == true){ snakeBody.setPosition(x, y + snake_size); }if(keyDown == true){ snakeBody.setPosition(x, y - snake_size); } snakeBody.setColor(Color.green); snakes.push(snakeBody); add(snakeBody); } 

在eat()函数中,您将新的Snake对象分配给var tail,但随后不对其进行任何处理。 我认为您需要将其添加到蛇形数组中(我认为它代表了整个蛇形?)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM