我的js学习笔记之第一阶段总结即小作业贪吃蛇V0.1
来源:互联网 发布:电脑怎么没网络了 编辑:程序博客网 时间:2024/04/20 06:18
最近看到不少同龄人写的东西,实在自行惭愧,觉得自己落后太多了,一定要加油努力了。
来公司实习也有半个多月了,从对前端技术基本一无所知,到现在可以用EXT写一点点很简单前端,感觉进步还是有那么一点点的,但并没在EXT花费太多精力,主要还把大部分时间都放在对js的学习上。总觉得框架是好东西,但决不能依赖于框架。下一步的学习方向,是JS和EXT并行,并且多花些时间进行对《how tomcat works》的学习,我看了头俩章,觉得这本书讲得真的非常的好,不仅是对WEB服务器有很清楚的讲解,看这本书,对java本身也是很好的提升,希望国内的大牛们也能多出些这些关注技术本身的书,对于我四级都差点不过的人来说,英文书籍看着还是相当困扰的。
自学JS也有差不多10几天了,对语法的学习只是编写程序的第一步,为做练习而用,偶尔看了一个大牛写的js贪吃蛇,今天就抽空写了一个不完全版的还没有可玩性的贪吃蛇,差距是相当明显的,希望可以在以后对js的学习中,逐步完善这个小游戏。
游戏还只是构建中一小部分,构建出游戏的整体框架,可以根据上下左右键改变蛇的运动方向,和对墙壁的进行碰撞检测,
这个游戏的关键就是--根据蛇头的方向计算出下一步的坐标,进而判断,并把蛇身的坐标放到数组中,进而根据数组“重绘”,没用到html5的canvas,毕竟不懂,用js生成一个表格模拟了一个二维数组。
代码如下。
来公司实习也有半个多月了,从对前端技术基本一无所知,到现在可以用EXT写一点点很简单前端,感觉进步还是有那么一点点的,但并没在EXT花费太多精力,主要还把大部分时间都放在对js的学习上。总觉得框架是好东西,但决不能依赖于框架。下一步的学习方向,是JS和EXT并行,并且多花些时间进行对《how tomcat works》的学习,我看了头俩章,觉得这本书讲得真的非常的好,不仅是对WEB服务器有很清楚的讲解,看这本书,对java本身也是很好的提升,希望国内的大牛们也能多出些这些关注技术本身的书,对于我四级都差点不过的人来说,英文书籍看着还是相当困扰的。
自学JS也有差不多10几天了,对语法的学习只是编写程序的第一步,为做练习而用,偶尔看了一个大牛写的js贪吃蛇,今天就抽空写了一个不完全版的还没有可玩性的贪吃蛇,差距是相当明显的,希望可以在以后对js的学习中,逐步完善这个小游戏。
游戏还只是构建中一小部分,构建出游戏的整体框架,可以根据上下左右键改变蛇的运动方向,和对墙壁的进行碰撞检测,
这个游戏的关键就是--根据蛇头的方向计算出下一步的坐标,进而判断,并把蛇身的坐标放到数组中,进而根据数组“重绘”,没用到html5的canvas,毕竟不懂,用js生成一个表格模拟了一个二维数组。
代码如下。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>无标题文档</title><style type="text/css">*{margin:10px auto;}td{width:12px;height:12px;}</style></head><body onload="Frame.init()"><div id="tit"><h1>贪吃蛇V0.1-按任意键开始</h1></div><div id="div"></div><script type="text/javascript">//屏蔽游览器的事件差异的工具类var EventUtil={ addHandler:function(element,type,handler){ if(element.addEventListener){ element.addEventListener(type,handler,false); }else if(element.attachEvent){ element.attachEvent("on"+type,handler) }else{ element["on"+type]=handler; } }, removeHandler:function(element,type,handler){ if(element.removeEventListener){ element.removeEventListener(type,handler,false); }else if(element.detachEvent){ element.detachEvent("on"+type,handler); }else{ element["on"+type]=null; } }, getEvent:function(event){ return event ? event : window.event; }, getTarget:function(event){ return event.target || event.srcElement; }, preventDefault:function(event){ if(event.preventDefault){ event.preventDefault(); }else{ event.returnValue=false; } }, stopPropagation:function(event){ if(event.stopPropagation){ event.stopPropagation(); }else{ event.cancelBubble=true; } }}//界面对象Frame={ e:null, init:function(){ //表格的行列数 var rows=25; var cols=25; //用表格模拟一个二维数组 var table=document.createElement("table"); //插入行和单元格 for(i=0;i<rows;i++){ var tr=table.insertRow(i); for(j=0;j<cols;j++){ var td=tr.insertCell(j); } } table.border='1'; var tab=document.getElementById("div"); tab.appendChild(table); //绑定键盘监听 EventUtil.addHandler(document,"keydown",function(event){ e=EventUtil.getEvent(event); Dargon.setDir(e); Dargon.move(e,table); }); }}//蛇对象var Dargon={ //定时器 timer:null, //速度 speed:2000, //存放蛇身{x:x,y:y},作为绘制蛇的根依据 body:[{x:4,y:4},{x:5,y:4},{x:6,y:4}], //头的方向,1是右,2是左,3是上,4是下,默认为右 direction:1, //根据事件,设置蛇头方向 setDir:function(event){ var code=event.keyCode; switch(code){ case 37: Dargon.direction=2; break; case 38: Dargon.direction=3; break; case 39: Dargon.direction=1; break; case 40: Dargon.direction=4; break; } }, //蛇的一定,设置定时器 move:function(event,table){ this.timer=setInterval(function(){ Dargon.erase(table); Dargon.moveOne(event); Dargon.paint(table); },this.speed); }, //定时器驱动任务之一 moveOne:function(event){ if(this.checkNext()==-1){ alert("笨蛋,撞墙了!"); clearInterval(this.timer); return; } //得到下一个点 var nextP=this.nextStep(); var _x=nextP.x; var _y=nextP.y; //蛇尾的坐标出栈 this.body.pop() //把下一个点的想x,y放入数组头部 this.body.unshift({x:_x,y:_y}); }, eraseDot: function(x,y,table){ table.rows[x].cells[y].style.backgroundColor = ""; }, paintDot:function(x,y,table){ table.rows[x].cells[y].style.backgroundColor = "black"; }, //根据数组的值,绘制蛇身 paint:function(table){ for(var i=0;i<this.body.length;i++){ this.paintDot(this.body[i].y,this.body[i].x,table); } }, //根据数组的值,擦出蛇身 erase:function(table){ for(var i=0;i<this.body.length;i++){ this.eraseDot(this.body[i].y,this.body[i].x,table); } }, //得到下一个点的坐标 nextStep:function(){ var x=this.body[0].x; var y=this.body[0].y; if(this.direction==1){ x++; } if(this.direction==2){ x--; } if(this.direction==3){ y--; } if(this.direction==4){ y++; } return {x:x,y:y}; }, //碰撞检测,情况并不完全 checkNext:function(){ var point = this.nextStep(); var x = point.x; var y = point.y; if(x<0||x>=Frame.rows||y<0||y>=Frame.cols){ return -1;//碰撞边界,游戏结束 } }}//种子类,还未用到var Bean={ //种子会出现的位置 x:null, y:null,}</script></body></html>
- 我的js学习笔记之第一阶段总结即小作业贪吃蛇V0.1
- js贪吃蛇学习笔记
- ORACLE的学习笔记第一阶段总结
- 我的FPGA之路 - 入门篇(暨我的第一阶段学习总结 )
- C++之第一阶段学习总结
- JS贪吃蛇总结
- 第一阶段JavaScript的学习总结
- 对于第一阶段学习的总结
- java 贪吃蛇之我的实现
- JS小案例: 贪吃蛇
- JS贪吃蛇开发笔记1
- 我的贪吃蛇
- Android组件学习笔记(贪吃蛇小demo)
- java第一阶段小总结
- 学习贪吃蛇JS项目实战笔记2
- 学习贪吃蛇JS项目实战笔记3
- 学习贪吃蛇JS项目实战笔记2
- 学习贪吃蛇JS项目实战笔记3
- 通过PHP控制缓冲区来实现的应用
- 复习啦
- xcode4.2手动添加MainWindow.xib
- itest Tutorial
- 打开ppp packet打印
- 我的js学习笔记之第一阶段总结即小作业贪吃蛇V0.1
- Ubuntu中clear命令无法找到的解决
- 网络编程基础概述
- 作者自述CSE语言设计思想(五)----用CSE模拟LISP语言(下)
- Oracle 控制文件(CONTROLFILE)
- 在android中如何引用其他工程
- 十六进制与字符串之间转换
- Latex 空格~
- Oracle 参数文件