您的位置:首页 > Web前端 > JavaScript

关于Js实现贪吃蛇的移动的一些感想

2017-11-27 21:37 537 查看
基本思路;身体随着头的移动而移动。当头部移动时,生成一个新头,添加到snake身体的第一位,然后弹出最后一个元素(即尾部),就这样不断的进行变化,就实现了蛇的移动

代码如下:(只给出移动部分的代码)

/**
* 蛇的移动,主要的功能
*/
self.move = function () {
var head = self.body[0];
// var t = parseInt(Math.random() * 3);
// var tColor = color[t];
var newHead = null;
if (self.dir == UP){
newHead = {
x : head.x,
y : head.y - 1
};
} else if (self.dir == DOWN){
newHead = {
x : head.x,
y : head.y + 1
};
} else if (self.dir == LEFT){
newHead = {
x : head.x - 1,
y : head.y
};
} else if (self.dir == RIGHT){
newHead = {
x : head.x + 1,
y : head.y
};
}
// console.log(head.x, head.y, food.x, food.y);
if (newHead != null){
self.body.unshift(newHead); //添加新头

//当吃到食物时,只添加新头,不删除尾部,相当于添加一节身体
if (head.x == food.x && head.y == food.y){
self.snakeLength = self.body.length;
//当蛇的长度达达到10时,速度提升50%
if (self.snakeLength == 10){
self.speed = self.speed  + parseInt(self.speed * 0.5);
self._move();
}
//当蛇的长度达达到25时,速度再次提升50%
else if (self.snakeLength == 25) {
self.speed = self.speed  + parseInt(self.speed * 0.5);
self._move();
}
//当蛇的长度达达到55时,速度再次提升50%
else if (self.snakeLength == 55) {
self.speed = self.speed  + parseInt(self.speed * 0.5);
self._move();
}
//当蛇的长度达达到100时,速度再次提升50%
else if (self.snakeLength == 100) {
self.speed = self.speed  + parseInt(self.speed * 0.5);
self._move();
} else if (self.snakeLength == 4){
map.mapLevel[0][1] = 0;
map.drawTile();
}
//清除食物层
food.layer.clearRect(0, 0, WSCREEN, HSCREEN);
//重新生成一个食物
food.init();
} else {//当没吃到食物时,既添加新头,又删除尾部,相当于向前移动一节身体
self.body.pop(); //删除尾部
}

if (self.isHit()){
clearInterval(self.timer);
}
}
};


完整代码:https://github.com/ytbLib/Greedy_Snake
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: