Javascript仿贪吃蛇出现Bug的反思
bug现象: 图一
图一 ,代码分析
Snake.prototype.move=function (food,map) { // 头先移动, switch (this.direction) { case "right": this.body[0].x +=1; break; case "left": this.body[0].x -=1; break; case "top": this.body[0].y -=1; break; case "bottom": this.body[0].y +=1; break; } var i=this.body.length-1; for(i;i>0;i--){ this.body[i].x=this.body[i-1].x;//第二节X坐标==第一节X坐标 this.body[i].y=this.body[i-1].y; }
// 运行的结果 /* this.body=[ {x:4,y:2,color:"red"}, {x:2,y:2,color:"orange"}, {x:1,y:2,color:"orange"} ]; this.body=[ 0 {x:4,y:2,color:"red"}, 1 {x:4,y:2,color:"orange"}, 2 {x:2,y:2,color:"orange"} ]; */
图二正确
图二代码分析
Snake.prototype.move=function (food,map) { var i=this.body.length-1; for(i;i>0;i--){ this.body[i].x=this.body[i-1].x;//第二节X坐标==第一节X坐标 this.body[i].y=this.body[i-1].y; } // 头后移动 switch (this.direction) { case "right": this.body[0].x +=1; break; case "left": this.body[0].x -=1; break; case "top": this.body[0].y -=1; break; case "bottom": this.body[0].y +=1; break; } /* 运行结果 this.body=[ {x:3,y:2,color:"red"}, {x:2,y:2,color:"orange"}, {x:1,y:2,color:"orange"} ]; this.body=[ 0 {x:4,y:2,color:"red"}, 1 {x:3,y:2,color:"orange"}, 2 {x:2,y:2,color:"orange"} ]; */
结论:
1,bug逻辑错误导致,提醒了自己特别是在学习东西,清楚逻辑实现原理,数据哪里产生,哪里有在用。
2,调试能力得到极大锻炼,这次从发现现象,到不断尝试背后的原因,最后开始在文件中写测试代码,最后准确找到出错的地方,前后经历了1个小时左右。
3,错误并不可怕,可怕的是不犯错误,一点问题都没有。经验,这次不会,犯错了,把它攻克了那你就会了。
Javascript仿贪吃蛇出现Bug的反思的更多相关文章
- javascript实现贪吃蛇
<html> <head> <style> body { background:#444; } .rect { border:1px solid #94F; wid ...
- JavaScript版—贪吃蛇小组件
最近在学习JavaScript,利用2周的时间看完了<JavaScript高级编程>,了解了Js是一门面向原型编程的语言,没有像C#语言中的class,也没有私有.公有.保护等访问限制的级 ...
- JS仿贪吃蛇:一串跟着鼠标的Div
贪吃蛇是一款80后.90后比较熟悉的经典游戏,下面通过简单的JS代码来实现低仿版贪吃蛇效果:随着鼠标的移动,在页面中呈现所有Div块跟随鼠标依次移动,效果如下图所示. <!DOCTYPE htm ...
- JavaScript—面向对象贪吃蛇_1
前面说了.面向对象的思考方式和面向过程的思考方式有着本质的区别. 贪吃蛇.作为各大培训机构.面向对象的练手项目,的确好.我昨天看完视频,有一种领悟面向对象的感觉,当然可能只针对贪吃蛇..要想在实际开发 ...
- 使用javascript实现贪吃蛇游戏
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m ...
- JavaScript—面向对象 贪吃蛇最终
效果 代码 //食物对象 ;(function () { function Food(element) { this.width = 20 this.height = 20 this.backgrou ...
- JavaScript—面向对象 贪吃蛇_3 蛇对象
蛇对象 function Snake(element) { this.width = 20 this.height = 20 //蛇身 位置 颜色 this.body = [ {x: 6, y: 4, ...
- javascript写贪吃蛇游戏(20行代码!)
<!doctype html> <html> <body> <canvas id="can" width="400" ...
- JavaScript—面向对象 贪吃蛇_2 游戏对象
游戏对象 function Game(map) { this.map = map; this.food = new Food(this.map) this.snake = new Snake(this ...
随机推荐
- test--3
<script type="text/javascript">// <![CDATA[$(function () { if (isLogined &&am ...
- UVa 11389 - The Bus Driver Problem 难度:0
题目 https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&a ...
- 一款堪称完美的编程字体Source Code Pro
对于程序员来说,好的字体应该满足的基本条件: 字母和数字易于分辨,如: 英文字母o 和 阿拉伯数字 0 ,或者 英文字母 l 和 阿拉伯数字 1 ,两个单引号 '' 和双引号 ”. 字体等宽,保持对齐 ...
- C#Mvc4.0IIS部署(内网)
安装IIS(百度中搜索教程安装) 在Vs中将项目发布到文件夹 回到桌面,右键计算机=>管理=>服务和应用程序=>Internet信息服务(IIS)管理器 右键添加新网站,输入网站名称 ...
- 电脑小白和ta的小白电脑——Tomcat服务器
配置web服务器tomcat,这里默认了已经配置JAVA开发环境↓ https://www.cnblogs.com/gifted35/p/9775112.html (一)下载tomcat 我安装的服务 ...
- 使用该方法在ubuntu下安装flashplayer的rpm包
Ubuntu的软件包格式是deb,如果要安装rpm的包,则要先用alien把rpm转换成deb. sudo apt-get install alien #alien默认没有安装,所以首先要安装它 su ...
- AnnotationTransactionAttributeSource is only available on Java 1.5 and higher
前言: 在eclipse中用到spring2.0的web项目,启动elipse自带的tomcat7,tomcat7报错如下: AnnotationTransactionAttributeSource ...
- 20145338 《网络对抗》 MSF基础应用
20145338<网络对抗> MSF基础应用 实验内容 ·掌握metasploit的基本应用方式,掌握常用的三种攻击方式的思路. 具体需要完成(1)一个主动攻击;(2)一个针对浏览器的攻击 ...
- navicat for mysql 12中文破解版(安装+破解)--亲测可用
http://www.ddooo.com/softdown/129457.htm#dltab
- Google 最新推出数据集搜索
继Google在2004年11月推出Google的重量产品Google scholar后,Google在最近推出的另一个重量级产品 Google Dataset Search.众所周知,互联网上的信息 ...