站長資訊網
        最全最豐富的資訊網站

        分享一個用html5實現的貪吃蛇特效代碼

        本篇小編為大家分享一個用html5實現的簡單貪吃蛇特效代碼,喜歡的小伙伴們可以看一下

        <html>      <head>          <meta charset='utf-8'/>          <title>Snake</title>      </head>      <body>          <canvas id="plank" style="border"></canvas>          <script type="text/javascript">              //內置大量BUG,I'm sorry.              var lev=100;                //定時器間隔時間              var num=30;             //網格大小,現在是30x30              var direction=3;            //0:up  1:down  2:left  3:right              var handle;             //用于管理定時器              var score=0;                //分數              var pause=true;         //暫停使用              var canvas = document.getElementById('plank');              var context = canvas.getContext('2d');              var snakex=new Array();     //存儲蛇身x坐標,下同              var snakey=new Array();              var prize=new Array(-1,-1);     //食物的位置                  function rand(){            //產生隨機數                  return parseInt(Math.random()*num);              }                  function chk(x,y){          //檢查是否結束,包括越界                  if(x<0||y<0) return false;                  if(x>num-1||y>num-1) return false;                  for (var i=0; i!=snakex.length-1;i++) {                      if(snakex[i]==x&&snakey[i]==y) {return false;}                  };                  return true;              }                  function drawScore(text){       //打印分數                  context.clearRect(0,0,300,25);                  context.fillText("Score:"+text,5,5);              }                  function makeprize(){           //產生食物的位置                  var flag=false;                  var prizepre=new Array(2);  //使用鏈表會更好                  while(!flag){           //食物位置不能在蛇體內                      flag=true;                      prizepre[0]=rand();prizepre[1]=rand();                      for (var i=0; i!=snakex.length;i++) {                          if((snakex[i]==prizepre[0])&&(snakey[i]==prizepre[1])) {flag=false;}                      }                  }                  prize=prizepre;              }                  function runscore(x,y){     //判斷是否吃到食物,并做處理                  if(prize[0]==x&&prize[1]==y){                      score=score+1;                      drawScore(score);                      snakex[snakex.length]=prize[0];                      snakey[snakey.length]=prize[1];                      makeprize();                      drawNode(prize[0],prize[1]);                      return true;                  }                  return false;              }                  function run(){             //定時器用來判斷snake行進方向等等                  switch(direction){          //方向                      case 0: snakex[snakex.length]=snakex[snakex.length-1];snakey[snakey.length]=snakey[snakey.length-1]-1;break;                      case 1: snakex[snakex.length]=snakex[snakex.length-1];snakey[snakey.length]=snakey[snakey.length-1]+1;break;                      case 2: snakex[snakex.length]=snakex[snakex.length-1]-1;snakey[snakey.length]=snakey[snakey.length-1];break;                      case 3: snakex[snakex.length]=snakex[snakex.length-1]+1;snakey[snakey.length]=snakey[snakey.length-1];break;                  }                  if(!runscore(snakex[snakex.length-1],snakey[snakey.length-1])){                      if(chk(snakex[snakex.length-1],snakey[snakey.length-1])==false) {                          clearInterval(handle);                          drawScore('\tGame over');                          return;                      }                      drawNode(snakex[snakex.length-1],snakey[snakey.length-1]);                  }                  clearNode(snakex[0],snakey[0]);                  snakex.shift();                  snakey.shift();              }                  function drawNode(x,y){     //畫點,共30X30個點(10*10像素算1個點)                  context.fillRect(x*10+1,y*10+31,10,10);              }                  function clearNode(x,y){                  context.clearRect(x*10+1,y*10+31,10,10);              }                  function init(){        //初始化,設置畫布大小,啟動定時器等等                  canvas.width = 510;                  canvas.height = 600;                  context.font = "normal 20px Airl";                  context.textBaseline = "top";                  context.fillText('P鍵開始/暫停,方向鍵控制',0,350);                  drawScore('');                  context.strokeRect(0,30,302,302);                  makeprize();                  drawNode(prize[0],prize[1]);                  snakex[0]=0;snakex[1]=1;snakex[2]=2;                  snakey[0]=0;snakey[1]=0;snakey[2]=0;                  drawNode(snakex[0],snakey[0]);drawNode(snakex[1],snakey[1]);drawNode(snakex[2],snakey[2]);              }                  document.onkeydown=function(event){     //注冊鍵盤事件,up,down,left,right,暫停鍵p                  var e = event || window.event;                  if(e&&e.keyCode==38){                      direction=0;                  }                  if(e&&e.keyCode==40){                      direction=1;                  }                  if(e&&e.keyCode==37){                      direction=2;                  }                  if(e&&e.keyCode==39){                      direction=3;                  }                  if(e&&e.keyCode==80){                      if(pause) {pause=false;handle=setInterval(run,lev);}                      else {pause=true;clearInterval(handle);}                  }              }                      init();          </script>      </body>  </html>

        【相關推薦】

        1. 免費h5在線視頻教程

        2. HTML5 完整版手冊

        3. php.cn原創html5視頻教程

        贊(0)
        分享到: 更多 (0)
        網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
        主站蜘蛛池模板: 国产亚洲精品拍拍拍拍拍| 日韩美女18网站久久精品| 国产精品综合久久第一页| 国产亚洲精品美女久久久| 蜜臀精品国产高清在线观看| 2023国产精品自拍| 久久精品国产网红主播| 午夜亚洲av永久无码精品| 国产亚洲色婷婷久久99精品91| 精品久久久久久中文字幕| 久久精品人人做人人妻人人玩| 日韩精品成人a在线观看| 国产精品免费视频观看拍拍| 久久国产乱子伦免费精品| 国产精品久久久久影院色| 色欲精品国产一区二区三区AV | 国产成人精品视频在放| 亚洲AV午夜福利精品一区二区 | 欧美性videofree精品| 精品国产福利一区二区| 欧美精品hdvideosex4k| 四虎精品免费永久免费视频| 国产线视频精品免费观看视频 | 精品性影院一区二区三区内射| 日韩精品无码一区二区中文字幕 | 久久夜色撩人精品国产小说| 国产精品高清免费网站| 欧美成人精品一区二区三区| 国产福利视精品永久免费| 精品无码国产污污污免费网站| 亚洲中文久久精品无码| 在线精品亚洲一区二区小说| 亚洲精品夜夜夜妓女网| 亚洲一区二区三区国产精品| 婷婷成人国产精品| 日韩精品一区二区三区影院 | 国产AV午夜精品一区二区入口| 岛国精品一区免费视频在线观看| CAOPORM国产精品视频免费| 国产成人精品日本亚洲直接| 亚洲国产成人久久精品影视|