j**ascript贪吃蛇完整版

时间:2016.05.05 发布人:huahdjngjdw

j**ascript贪吃蛇完整版

已解决问题

谷歌huahdjngjdw用户在2016.05.05提交了关于“大理七彩祥云j**ascript贪吃蛇完整版”的提问,欢迎大家涌跃发表自己的观点。目前共有1个回答,最后更新于2025-01-17T20:38:47。希望大家能够帮助她。

详细问题描述及疑问:期待您的答案,当代劳模,所有人都应该向你学习 !

希望以下的回答,能够帮助你。

第1个回答

用户名:huyb8288  

这篇文章来自主要是对j**ascript贪吃蛇完整版(源码)进行了详细的分析介绍,需要的朋友可以过来参考下,希望对大家有所帮助

j**ascript贪吃蛇完整版注释完整,面向对象代码如下:<html><head><title>贪吃蛇Sn**ev2.4</title><style>body{font-size:9pt;}t问答able{border-collapse:collapse;border:solid#3331px;}td{height:10px;w程门达五idth:10px;font-size:0px;}.filled{background-color:blue;}</style></head><script>function$(id){returndocument.getElementById(id);}/***************************************************************j**ascript贪吃蛇v2.4<br/>*v2.4修正了蛇身颜色可以随着蛇前进而移动*******************茶是必宪怕溶右者秋武****************************************气有吧远脱架***///贪吃蛇类varSn**e={tbl:**ll,/***b轮谁结沿运仍ody:蛇身,数组放蛇的每一节,***结构{x:x0,y:y0,color:color0},*x,y表示者终可祖知根表胶握坐标,color表示颜色**/body:[],//当前移动的方向,取值始力居末区氧味更花命0,1,2,3,分别表示向上,右,下,左,按键盘方向键可以改变它direction:0,//定时器timer:**ll,//速度speed:250,//是否已经暂停paused:true,//行数rowCount:30,//列数colCount:30,//初始化init:function(){v何品律眼育arcolors=['red','orange','yellow','green','blue','purple','#ccc']同呀饭批汉思海检次;this.tbl=$("main");varx=0;vary=0;v沿春arcolorIndex=0;//**生初始移动方向this.direction=Math.floor(Math.random()*4);//杀让左验构造tablefor(varrow=0;row<this.rowCount;row++){vartr=this.tbl.insertRow(-1);for(varcol=0;col<this.colCount;col++){vartd=tr.insertCell(-1);}}//**生20个松散节点for(vari=0;i<10;i++){x=Math.floor(充告括战信势县位诗速Math.rando慢铁约m()*this.colCount);y示文情卫重要措=Math.floor(Math.random()*this.rowCount);c洋长甚配棉olorIndex=Math.floor(Math.random()*7);if(!this.isCellFilled(x,y)){this.tbl.rows[y].cells[x].style.backgroundColor=colors[colorIndex];}}//**生蛇头while(true){x=Math.floor(Math.random()*this.营衣置周管colCount);y=Math.floor(Math.random()*this.rowCount);i群杂饭受觉象级亮听零纸f(!this.isCellFilled(x,y)){this.tbl.rows[y].cells[x].style伯终银良.backgro些占山转感策事undColor="black";this.body.push({x:x,y:y,color:'black'});bre**;}}this.paused=true;//添加键盘事件document.onkeydown=function(e){if(!e)e=window.event;switch(e.keyCode|e.which|e.charCode){case13:{if(Sn**e.paused){Sn**e.move();Sn**e.paused=false;}else{//如果没有暂停,则停止移动Sn**e.pause();Sn**e.paused=true;}bre**;}case37:{//left//阻止蛇倒退走if(Sn**e.direction==1){bre**;}Sn**e.direction=3;bre**;}case38:{//up//快捷键在这里起作用if(event.ctrlKey){Sn**e.speedUp(-20);bre**;}if(Sn**e.direction==2){//阻止蛇倒退走bre**;}Sn**e.direction=0;bre**;}case39:{//rightif(Sn**e.direction==3){//阻止蛇倒退走bre**;}Sn**e.direction=1;bre**;}case40:{//downif(event.ctrlKey){Sn**e.speedUp(20);bre**;}if(Sn**e.direction==0){//阻止蛇倒退走bre**;}Sn**e.direction=2;bre**;}}}},//移动move:function(){this.timer=setInterval(function(){Sn**e.erase();Sn**e.moveOneStep();Sn**e.paint();},this.speed);},//移动一节身体moveOneStep:function(){if(this.checkNextStep()==-1){clearInterval(this.timer);alert("Gameover!/nPressRestarttoconti**e.");return;}if(this.checkNextStep()==1){var_point=this.getNextPos();var_x=_point.x;var_y=_point.y;var_color=this.getColor(_x,_y);this.body.unshift({x:_x,y:_y,color:_color});//因为吃了一个食物,所以再**生一个食物this.generateDood();return;}//window.status=this.toString();varpoint=this.getNextPos();//保留第一节的颜色varcolor=this.body[0].color;//颜色向前移动for(vari=0;i<this.body.length-1;i++){this.body[i].color=this.body[i+1].color;}//蛇尾减一节,蛇尾加一节,呈现蛇前进的效果this.body.pop();this.body.unshift({x:point.x,y:point.y,color:color});//window.status=this.toString();},//探寻下一步将走到什么地方pause:function(){clearInterval(Sn**e.timer);this.paint();},getNextPos:function(){varx=this.body[0].x;vary=this.body[0].y;varcolor=this.body[0].color;//向上if(this.direction==0){y--;}//向右elseif(this.direction==1){x++;}//向下elseif(this.direction==2){y++;}//向左else{x--;}//返回一个坐标return{x:x,y:y};},//检查将要移动到的下一步是什么checkNextStep:function(){varpoint=this.getNextPos();varx=point.x;vary=point.y;if(x<0||x>=this.colCount||y<0||y>=this.rowCount){return-1;//触边界,游戏结束}for(vari=0;i<this.body.length;i++){if(this.body[i].x==x&&this.body[i].y==y){return-1;//碰到自己的身体,游戏结束}}if(this.isCellFilled(x,y)){return1;//有东西}return0;//空地},//擦除蛇身erase:function(){for(vari=0;i<this.body.length;i++){this.eraseDot(this.body[i].x,this.body[i].y);}},//绘制蛇身paint:function(){for(vari=0;i<this.body.length;i++){this.paintDot(this.body[i].x,this.body[i].y,this.body[i].color);}},//擦除一节eraseDot:function(x,y){this.tbl.rows[y].cells[x].style.backgroundColor="";},paintDot:function(x,y,color){this.tbl.rows[y].cells[x].style.backgroundColor=color;},//得到一个坐标上的颜色getColor:function(x,y){returnthis.tbl.rows[y].cells[x].style.backgroundColor;},//用于调试toString:function(){varstr="";for(vari=0;i<this.body.length;i++){str+="x:"+this.body[i].x+"y:"+this.body[i].y+"color:"+this.body[i].color+"-";}returnstr;},//检查一个坐标点有没有被填充isCellFilled:function(x,y){if(this.tbl.rows[y].cells[x].style.backgroundColor==""){returnfalse;}returntrue;},//重新开始restart:function(){if(this.timer){clearInterval(this.timer);}for(vari=0;i<this.rowCount;i++){this.tbl.deleteRow(0);}this.body=[];this.init();this.speed=250;},//加速speedUp:function(time){if(!this.paused){if(this.speed+time<10||this.speed+time>2000){return;}this.speed+=time;this.pause();this.move();}},//**生食物。generateDood:function(){varcolors=['red','orange','yellow','green','blue','purple','#ccc'];varx=Math.floor(Math.random()*this.colCount);vary=Math.floor(Math.random()*this.rowCount);varcolorIndex=Math.floor(Math.random()*7);if(!this.isCellFilled(x,y)){this.tbl.rows[y].cells[x].style.backgroundColor=colors[colorIndex];}}};</script><bodyonload="Sn**e.init();">/*************************************************************<br/>*j**ascript贪吃蛇v2.4<br/>**************************************************************/<br/><tableid="main"border="1"cellspacing="0"cellpadding="0"></table><inputtype="button"id="btn"value="开始/暂停"/>点左边按钮或按Enter开始/暂停游戏<br/><inputtype="button"id="reset"value="重新开始"/><br/><inputtype="button"id="upSpeed"value="加速"/>点左边按钮或按Ctrl+↑加速<br/><inputtype="button"id="downSpeed"value="减速"/>点左边按钮或按Ctrl+↓减速<script>$('btn').onclick=function(){if(Sn**e.paused){Sn**e.move();Sn**e.paused=false;}else{Sn**e.pause();Sn**e.paused=true;}};$("reset").onclick=function(){Sn**e.restart();this.blur();};$("upSpeed").onclick=function(){Sn**e.speedUp(-20);};$("downSpeed").onclick=function(){Sn**e.speedUp(20);};</script></body></html>