关于Js实现贪吃蛇的移动的一些感想
2017-11-27 21:37
537 查看
基本思路;身体随着头的移动而移动。当头部移动时,生成一个新头,添加到snake身体的第一位,然后弹出最后一个元素(即尾部),就这样不断的进行变化,就实现了蛇的移动
代码如下:(只给出移动部分的代码)
完整代码:https://github.com/ytbLib/Greedy_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
相关文章推荐
- 最近的一些感想(关于移动客户端开发android,ios)
- 关于SLG战略游戏中,人物移动范围的算法(js实现)
- 关于Asm.js的一些基本介绍和它的实现
- 关于select上下移动实现的一些个人见解
- 关于"多级目录(分类)"的一些想法 ----- 实现方法
- 关于Memory Pool的一些想法及实现
- 关于VR(主要是虚拟城市场景)的一些想法及实现(可能会连载)
- 关于JS实现客户端保存网页
- 关于VR(主要是虚拟城市场景)的一些想法及实现(可能会连载)
- 关于Borland,Delphi9的一些杂七杂八的感想
- 关于反选的一些js
- 关于“龙芯”的一些感想...
- [转]关于Memory Pool的一些想法及实现
- js实现DIV的一些简单控制
- js实现DIV的一些简单控制
- 用JS实现移动的窗口
- js 实现 datagrid 鼠标移动时datagrid 表的该变
- 关于使用commons-betwixt组件实现xml信息-->Java Bean的转化的一些感受
- ASP.Net一些知识点(关于.net与JS如何交互)
- 关于无限分级(ASP+数据库+JS)的实现代码