zoukankan      html  css  js  c++  java
  • [JavaScript]一个25行代码的贪吃蛇程序

    先mark,稍后研究,JS代码只有17行!

     1 <!DOCTYPE html>
     2 <html>
     3 <body>
     4 <canvas id="myCanvas" width="240" height="240" style="border:1px solid #d3d3d3;">Your browser does not support the HTML5 canvas tag.</canvas>
     5 <script>
     6 var ctx=document.getElementById("myCanvas").getContext("2d"),r = [{x:10,y:9},{x:10,y:8}],co=40,e=null;
     7 ctx.shadowBlur=20,ctx.shadowColor="black";
     8 setInterval(function(){
     9 if(check(r[0],0) || r[0].x < 0 || r[0].x >= 24 || r[0].y < 0 || r[0].y >= 24)return;
    10 e!=null&&((co==40&&r[0].x==e.x&&r[0].y+1==e.y)||(co==38&&r[0].x==e.x&&r[0].y-1==e.y)||(co==37&&r[0].x-1==e.x&&r[0].y==e.y)||(co==39&&r[0].x+1==e.x&&r[0].y==e.y))?(r.unshift(e),e=null,r.unshift(r.pop())):(r.unshift(r.pop()));
    11 (co==40 || co==38)?(r[0].x=r[1].x,r[0].y=r[1].y+(co==40?1:-1)):(r[0].x=r[1].x+(co==39?1:-1),r[0].y=r[1].y);
    12 ctx.clearRect(0,0,240,240);
    13 if(e)ctx.fillRect(e.x*10,e.y*10,10,10);
    14 for(var i=0;i<r.length;i++)ctx.fillRect(r[i].x*10,r[i].y*10,10,10);
    15 while(e==null || check(e))e={y:(Math.random()*24 >>>0),x:(Math.random()*24 >>>0)};
    16 if(check(r[0],0) || r[0].x < 0 || r[0].x >= 24 || r[0].y < 0 || r[0].y >= 24)alert("game over\nYou get ["+(r.length-2)+"]");
    17 },100);
    18 document.onkeyup = function(event){co=event.keyCode>=37 && event.keyCode<=40 && (Math.abs(event.keyCode-co) != 2)?event.keyCode:co;}
    19 function check(e,j){
    20 for(var i=0;i<r.length;i++)if(j!=i && r[i].x==e.x && r[i].y==e.y)return true;
    21 return false;
    22 }
    23 </script>
    24 </body>
    25 </html>

    不得不说,HTML5的出现,为各种实现创造了很多便利啊!

  • 相关阅读:
    将Linux下python默认版本切换成替代版本
    ubuntu下卸载python2和升级python3.5
    Linux下安装theano
    梯度下降法
    使用Matlab实现对图片的缩放
    matlab 中的删除文件
    解决aws ec2的centos7设置时区无效
    yum安装redis5/mq/consul
    django web应用runserver模式下cpu占用高解决办法
    N1如何完美刷入armbian系统教程
  • 原文地址:https://www.cnblogs.com/hustcser/p/2842162.html
Copyright © 2011-2022 走看看