最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JavaScript編寫一個貪吃蛇游戲

 更新時間:2017年03月09日 15:47:14   作者:歐陽翠花  
本文主要介紹了JavaScript寫的一個貪吃蛇游戲的實例,具有很好的參考價值。下面跟著小編一起來看下吧

寫的比較亂,有個邏輯錯誤:蛇吃了果果后應該是蛇尾加一節(jié),寫成了蛇頭部增加一節(jié)- -。

可用鍵盤的上下左右鍵操作;

效果圖:

代碼如下:

<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)       //控制移動函數(shù)開始
{
 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!"+"你的分數(shù)為:"+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!"+"你的分數(shù)為:"+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');  //開始制作操作區(qū)拖動效果
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>

以上就是本文的全部內容,希望本文的內容對大家的學習或者工作能帶來一定的幫助,同時也希望多多支持腳本之家!

相關文章

  • 在線編輯器中換行與內容自動提取

    在線編輯器中換行與內容自動提取

    這幾天在寫在線編輯器,碰到個問題,當使用回車換行時不是你希望的<br>而是<p></p>對或是<div></div>對。使用google搜索,在網上找不到滿意的答案。
    2009-04-04
  • js apply/call/caller/callee/bind使用方法與區(qū)別分析

    js apply/call/caller/callee/bind使用方法與區(qū)別分析

    js apply/call/caller/callee/bind使用方法與區(qū)別分析,需要的朋友可以參考下。
    2009-10-10
  • 通過DOM腳本去設置樣式信息

    通過DOM腳本去設置樣式信息

    在大多數(shù)場合,我們都用CSS去設置樣式,但在某些特殊情況下,例如要根據元素在節(jié)點樹里的位置來設置節(jié)點樣式信息時,目前CSS還沒辦法做到這一點。但利用DOM就可以很輕易的完成。
    2010-09-09
  • 一文總結JavaScript中Promise遇到的問題

    一文總結JavaScript中Promise遇到的問題

    Promise 是異步編程的一種解決方案,比傳統(tǒng)的解決方案——回調函數(shù)和事件——更合理和更強大。本文將總結一下在Promise中容易遇到的一些問題,感興趣的同學可以參考下
    2023-05-05
  • JS 異步遍歷的實現(xiàn)方法

    JS 異步遍歷的實現(xiàn)方法

    本文主要介紹了JS 異步遍歷的實現(xiàn)方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-04-04
  • 原生JS京東輪播圖代碼

    原生JS京東輪播圖代碼

    這篇文章主要為大家詳細介紹了原生JS京東輪播圖代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-03-03
  • el表達式 寫入bootstrap表格數(shù)據頁面的實例代碼

    el表達式 寫入bootstrap表格數(shù)據頁面的實例代碼

    這篇文章主要介紹了el表達式 寫入bootstrap表格數(shù)據頁面的實例代碼,非常不錯,具有參考借鑒價值,需要的的朋友參考下吧
    2017-01-01
  • JavaScript中奇葩的假值示例應用

    JavaScript中奇葩的假值示例應用

    這篇文章主要介紹了JavaScript中奇葩的假值應用,需要的朋友可以參考下
    2014-03-03
  • window.onload的頁面加載技巧

    window.onload的頁面加載技巧

    大家仔細看下面兩段代碼,代碼一的window.onload = doIt()函數(shù)后面有();而代碼二的window.onload = doIt函數(shù)名后面沒有括號。
    2008-09-09
  • Javascript實現(xiàn)商品秒殺倒計時(時間與服務器時間同步)

    Javascript實現(xiàn)商品秒殺倒計時(時間與服務器時間同步)

    在一些購物商城經??吹接泻芏嗌唐纷雒霘⒒顒?,也就是倒計時,本篇文章給大家介紹Javascript實現(xiàn)商品秒殺倒計時(時間與服務器時間同步),需要的朋友可以了解下
    2015-09-09

最新評論

普安县| 深水埗区| 彰武县| 连平县| 开原市| 成安县| 秦皇岛市| 井陉县| 唐山市| 丹巴县| 平阴县| 安国市| 高雄市| 商水县| 博爱县| 胶南市| 桓仁| 澜沧| 金秀| 克拉玛依市| 宁远县| 七台河市| 绥德县| 洞头县| 略阳县| 阜阳市| 灵山县| 台北市| 讷河市| 宁乡县| 洞头县| 禹州市| 龙陵县| 大名县| 桦南县| 平邑县| 方山县| 宁国市| 西青区| 扎鲁特旗| 扬州市|