【发布时间】:2016-07-25 14:08:11
【问题描述】:
我是 javascript 的新手,我正在尝试制作一个蛇游戏,我想用 snake.push 和 snake.shift(tail) 让蛇自动移动,我尝试了一些东西但总是失败,比如foor loop 并将 dy++ 添加到 hY(但只有头部在移动)。
使用这段代码,我得到的只是头部移动和尾部移动,但它只移动一次。通过在多维数组中添加和删除项目来使其保持向所需方向移动是一种聪明的方法吗?
var canvas = document.getElementById("myCanvas");
var ctx = canvas.getContext("2d");
var snakeSize=10;
var snakeLength = 5;
var dist =2+snakeSize;
var dy=1;
var direction = "up";
function game(){
ctx.clearRect(0,0,canvas.width,canvas.height);
drawSnake()
}
function snakeBody(x,y){
ctx.beginPath();
ctx.fillRect(x*(dist),y*(dist),snakeSize,snakeSize);
ctx.fillStyle="red";
ctx.fill();
ctx.closePath();}
function drawSnake(){
var snake = [];
for (var i=0;i<=snakeLength;i++){
snake.push({x:i, y:canvas.height/dist/2});
}
var hX = snake[snake.length-1].x
var hY = snake[snake.length-1].y
switch(direction){
case "down":
hY++;
break;
case "up":{
hY--;}
break;
case "right":
hX++
break;
case "left":
hX--;
break;
}
var tail = snake.shift();
tail.x=hX;
tail.y=hY;
snake.push(tail);
for (var i=0;i<=snake.length;i++){
snakeBody(snake[i].x,snake[i].y);
}
}
setInterval(game,1000)
【问题讨论】:
标签: javascript loops multidimensional-array