写的比较乱,有个逻辑错误:蛇吃了果果后应该是蛇尾加一节,写成了蛇头部增加一节- -。
可用键盘的上下左右键操作;
效果图:
代码如下:
<html> <head> <title> 贪吃蛇 </title> <style type="text/css"> body{margin:0;padding:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-user-select:none; -moz-user-select:none; -ms-user-select:none; user-select:none;} table{border-collapse:collapse;width:500px} td{border:1px solid white;width:20px;height:20px;} #wrap{width:500px;height:500px;background-color:#8B8386;margin:0 auto;position:absolute;border:1px solid #8B2500;} #tar{width:20px;height:20px;position:absolute;background-color:#FFEE26;} .num{width:20px;height:20px;background-color:#FDFF68;border:1px solid blue;border-radius:50%;position:absolute;} input{color:red;font-size:20px;font-weight:bold;position:absolute;display:block;width:60px;height:35px;} #btn2{top:45px;left:0px;} #btn4{top:90px;left:70px;} #btn1{top:45px;left:140px;} #btn3{top:0px;left:70px;} #btn{position:absolute;background-color:black;width:200px;height:125px;} #txt{width:80px;height:55px;background-color:black;position:absolute;left:60px;top:35px;color:white;font-size:16px;font-weight:bold;line-height:55px;text-align:center;cursor:move;} </style> </head> <body> <div id="btn" style="left:520px;top:20px"> <input type="button" value="→" id="btn1"/> <input type="button" value="←" id="btn2"/> <input type="button" value="↑" id="btn3"/> <input type="button" value="↓" id="btn4"/> <div id="txt">点此拖动</div> </div> <div id="wrap" style="left:20px;top:20px"> <div id="tar"></div> <table> <tbody id="tb"> </tbody> </table> <div class="num"></div> <div class="num"></div> <div class="num"></div> <div class="num"></div> <div class="num"></div> </div> <script type="text/javascript"> var tb=document.getElementById('tb'); var wrap=document.getElementById('wrap'); var tr=new Array(); var td=new Array(); for(var i=0;i<25;i++) //绘制地图 { tr[i]=document.createElement('tr'); tb.appendChild(tr[i]); for(var j=0;j<25;j++) { td[j]=document.createElement('td'); tr[i].appendChild(td[j]); } } var tar=document.getElementById('tar'); //食物定位 function food() { var a,b; a=Math.random()*460; a=Math.floor(a/20)*20+20; b=Math.random()*460; b=Math.floor(b/20)*20+20; tar.style.left=a+"px"; tar.style.top=b+"px"; } food(); var s=document.getElementsByClassName('num'); //定位蛇的位置 s[0].style.backgroundColor="#3EFF1A"; var x=300,y=400,f,d,p,Fraction=0,t=600,tt=60; for(var k=0;k<s.length;k++) { s[k].style.left=x+"px"; s[k].style.top=y+20*k+"px"; } function move(obj,direction) //控制移动函数开始 { clearTimeout(d); s=document.getElementsByClassName('num'); var l=new Array(); l[0]=s[0].style.left; var w=new Array(); w[0]=s[0].style.top; obj; //移动方向 s[0].style.left=x+"px"; s[0].style.top=y+"px"; for(var k1=1;k1<s.length;k1++) { l[k1]=s[k1].style.left; w[k1]=s[k1].style.top; s[k1].style.left=l[k1-1]; s[k1].style.top=w[k1-1]; } if(parseInt(s[0].style.left)==parseInt(tar.style.left)&&parseInt(s[0].style.top)==parseInt(tar.style.top)) { t=t-tt; tt-=5; if(tt==0)tt=5; var new_div=document.createElement('div'); new_div.className="num"; Fraction+=100; if(p==1) { new_div.style.top=s[0].style.top; new_div.style.left=parseInt(s[0].style.left)+20+"px"; } if(p==2) { new_div.style.top=s[0].style.top; new_div.style.left=parseInt(s[0].style.left)-20+"px"; } if(p==3) { new_div.style.left=s[0].style.left; new_div.style.top=parseInt(s[0].style.top)-20+"px"; } if(p==4) { new_div.style.left=s[0].style.left; new_div.style.top=parseInt(s[0].style.top)+20+"px"; } s[0].parentNode.insertBefore(new_div,s[0]); food(); s[0].style.backgroundColor="#3EFF1A"; for(var k=1;k<s.length;k++) { s[k].style.backgroundColor="#FDFF68"; } } if(parseInt(s[0].style.left)<0||parseInt(s[0].style.left)>=500||parseInt(s[0].style.top)<0||parseInt(s[0].style.top)>=500) { alert("GAME OVER!"+"你的分数为:"+Fraction+"分"); food(); x=300; y=400; for(var k=0;k<5;k++) { s[k].style.left=x+"px"; s[k].style.top=y+20*k+"px"; } for(var kk=s.length-1;kk>4;kk--) { s[kk].parentNode.removeChild(s[kk]); } t=700; tt=60; return false; } for(k=1;k<s.length;k++) { if(parseInt(s[0].style.left)==parseInt(s[k].style.left)&&parseInt(s[0].style.top)==parseInt(s[k].style.top)) { alert("GAME OVER!"+"你的分数为:"+Fraction+"分"); food(); x=300; y=400; for(var k=0;k<5;k++) { s[k].style.left=x+"px"; s[k].style.top=y+20*k+"px"; } for(var kk=s.length-1;kk>4;kk--) { s[kk].parentNode.removeChild(s[kk]); } t=700; tt=60; return false; } } d=setTimeout(direction,t); } document.getElementById('btn1').onclick=function R() //绑定鼠标点击事件 { x=parseInt(s[0].style.left); y=parseInt(s[0].style.top); if(parseInt(s[0].style.left)<parseInt(s[1].style.left))return false; p=1; move(x=x+20,R); } document.getElementById('btn2').onclick=function L() { x=parseInt(s[0].style.left); y=parseInt(s[0].style.top); if(parseInt(s[0].style.left)>parseInt(s[1].style.left))return false; p=2; move(x=x-20,L); } document.getElementById('btn3').onclick=function T() { x=parseInt(s[0].style.left); y=parseInt(s[0].style.top); if(parseInt(s[0].style.top)>parseInt(s[1].style.top))return false; p=3; move(y=y-20,T); } document.getElementById('btn4').onclick=function B() { x=parseInt(s[0].style.left); y=parseInt(s[0].style.top); if(parseInt(s[0].style.top)<parseInt(s[1].style.top))return false; p=4; move(y=y+20,B); } document.onkeydown=function(event) //绑定键盘事件 { var e=event||window.event; if(e&&e.keyCode==39) { function R() { x=parseInt(s[0].style.left); y=parseInt(s[0].style.top); if(parseInt(s[0].style.left)<parseInt(s[1].style.left))return false; p=1; move(x=x+20,R); } R(); return false; } if(e&&e.keyCode==37) { function L() { x=parseInt(s[0].style.left); y=parseInt(s[0].style.top); if(parseInt(s[0].style.left)>parseInt(s[1].style.left))return false; p=2; move(x=x-20,L); } L(); return false; } if(e&&e.keyCode==38) { function T() { x=parseInt(s[0].style.left); y=parseInt(s[0].style.top); if(parseInt(s[0].style.top)>parseInt(s[1].style.top))return false; p=3; move(y=y-20,T); } T(); return false; } if(e&&e.keyCode==40) { function B() { x=parseInt(s[0].style.left); y=parseInt(s[0].style.top); if(parseInt(s[0].style.top)<parseInt(s[1].style.top))return false; p=4; move(y=y+20,B); } B(); return false; } } var btn=document.getElementById('btn'); var btn_l,btn_t; function btn_move() { btn_l=clientX-parseInt(wrap.style.left) } confirm("可用键盘的上下左右四个按键进行游戏操作!") var btn=document.getElementById('btn'); //开始制作操作区拖动效果 var txt=document.getElementById('txt'); var new_x,new_y,bool=false; txt.onmousedown=function () { var eve=event||window.event; bool=true; new_x=eve.clientX-parseInt(btn.style.left); new_y=eve.clientY-parseInt(btn.style.top); } btn.onmousemove=function btn_move(event) { if(bool) { var e=event||window.event; btn.style.left=e.clientX-new_x; btn.style.top=e.clientY-new_y; if(parseInt(btn.style.left)<520)btn.style.left="520px"; if(parseInt(btn.style.top)<0)btn.style.top="0px"; if(parseInt(btn.style.top)>395)btn.style.top="395px"; } } document.body.onmouseup=function() { bool=false; } </script> </body> </html>
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持!
华山资源网 Design By www.eoogi.com
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
华山资源网 Design By www.eoogi.com
暂无评论...
更新日志
2024年11月18日
2024年11月18日
- 【雨果唱片】中国管弦乐《鹿回头》WAV
- APM亚流新世代《一起冒险》[FLAC/分轨][106.77MB]
- 崔健《飞狗》律冻文化[WAV+CUE][1.1G]
- 罗志祥《舞状元 (Explicit)》[320K/MP3][66.77MB]
- 尤雅.1997-幽雅精粹2CD【南方】【WAV+CUE】
- 张惠妹.2007-STAR(引进版)【EMI百代】【WAV+CUE】
- 群星.2008-LOVE情歌集VOL.8【正东】【WAV+CUE】
- 罗志祥《舞状元 (Explicit)》[FLAC/分轨][360.76MB]
- Tank《我不伟大,至少我能改变我。》[320K/MP3][160.41MB]
- Tank《我不伟大,至少我能改变我。》[FLAC/分轨][236.89MB]
- CD圣经推荐-夏韶声《谙2》SACD-ISO
- 钟镇涛-《百分百钟镇涛》首批限量版SACD-ISO
- 群星《继续微笑致敬许冠杰》[低速原抓WAV+CUE]
- 潘秀琼.2003-国语难忘金曲珍藏集【皇星全音】【WAV+CUE】
- 林东松.1997-2039玫瑰事件【宝丽金】【WAV+CUE】