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

JS實(shí)現(xiàn)簡(jiǎn)易貪吃蛇游戲

 更新時(shí)間:2020年08月24日 09:54:40   作者:彎月liang  
這篇文章主要為大家詳細(xì)介紹了JS實(shí)現(xiàn)簡(jiǎn)易貪吃蛇游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了JS實(shí)現(xiàn)簡(jiǎn)易貪吃蛇的具體代碼,供大家參考,具體內(nèi)容如下

<!DOCTYPE html>
<html>
<head>
 <title></title>
 <meta charset="utf-8">
 <style type="text/css">
 #body{
  width: 900px;/*長(zhǎng)寬最好是obj的倍數(shù)*/
  height: 600px;
  border-width: 10px;
  border-style: solid;
  border-color: blue;
  line-height:600px;/*文本垂直居中*/
  text-align: center;/*文本水平居中*/
  position: relative;/*相對(duì)定位*/
  left: 0px;
  top: 0px;
 }
 #obj{
  width: 30px;
  height: 30px;
  background-color: red;
  position: absolute;/*絕對(duì)定位*/
  left: 0px;
  top: 0px;
  z-index: 1;/*頭部在上層顯示*/
 }
 div{
  text-align: center;
  line-height:30px;
 }
 </style>
</head>
 
<body id='body'>
 <!--內(nèi)容-->
 按awsd移動(dòng)
 <div id='obj'></div>
 <select id='speed' onclick="setspeed(this)">
 <option value="100">快速</option>
 <option value="500">中速</option>
 <option value="1000" selected>慢速</option>
 </select>
 | <button onclick="lenbodyadd()">身體+1</button>
 | <button onclick="stopspeed()">暫停</button>
 <div class="div"></div>
</body>
</html>
<script>
 
 var val={key:"d"};//默認(rèn)向右移動(dòng)
 var key = document.getElementById("body");
 key.onkeydown =f; //注冊(cè)keydown事件處理函數(shù)
 var divnum=1;//身體每節(jié)編號(hào)
 var lenbody=5;//默認(rèn)身體長(zhǎng)度
 var speed=1000;//默認(rèn)速度
 
 var obj=document.getElementById('obj');
 var myWidth=parseInt(getComputedStyle(obj,null).getPropertyValue('width'));
 var myHeight=parseInt(getComputedStyle(obj,null).getPropertyValue('height'));
 
 var clientH= document.body.clientHeight;//獲取body高
 var clientW= document.body.clientWidth;//獲取body寬
 
 var foodLeft=0;//食物x坐標(biāo)
 var foodTop=0;//食物y坐標(biāo)
 
 function f (va) {
 var e = e || window.event; //標(biāo)準(zhǔn)化事件處理
 let s = '';//val.type + " " + val.key; //獲取鍵盤(pán)事件類(lèi)型和按下的值
 let key=val.key;
 val=va;
 
 var myTop=parseInt(getComputedStyle(obj,null).getPropertyValue('top'));//獲取精靈y坐標(biāo) parseInt(obj.style.top);
 var myLeft=parseInt(getComputedStyle(obj,null).getPropertyValue('left'));//獲取精靈x坐標(biāo) parseInt(obj.style.left);
 
 var movePx=myWidth;//每次移動(dòng)的距離
 var move=0;
 if(key=='w'){
  move=myTop-movePx;//每次移動(dòng)10
  if(move<0 || move>clientH){
  return false;//不能超過(guò)邊界
  }
  obj.style.top=move+'px';
  s='上';
 }
 if(key=='s'){
  move=myTop+movePx;
  if(move<0 || move>clientH-myHeight){
  return false;
  }
  obj.style.top=move+'px';
  s='下';
 }
 if(key=='a'){
  move=myLeft-movePx;
  if(move<0 || move>clientW){
  return false;
  }
  obj.style.left=move+'px';
  s='左';
 }
 if(key=='d'){
  move=myLeft+movePx;
  if(move<0 || move>clientW-myWidth){
  return false;
  }
  obj.style.left=move+'px';
  s='右';
 }
 obj.innerText=s;//設(shè)置文本 & 清楚之前的元素
 console.log(move+' top:'+myTop+' left:'+myLeft);
 
 //移除之前的身體元素,使有頭有尾
 if(document.getElementsByClassName('div').length>=lenbody){
  document.getElementsByClassName('div')[0].parentNode.removeChild(document.getElementsByClassName('div')[0]);
 }
 
 //div身體元素隨后移動(dòng)
 let newMyMoveWidth=myLeft;
 let newMyMoveHeight=myTop;
 
 let div=document.createElement('div');
  div.className ='div';
  div.style.width = myWidth + 'px';
  div.style.height = myHeight + 'px';
  div.style.position = 'absolute';
  div.style.left=newMyMoveWidth + 'px';
  div.style.top=newMyMoveHeight + 'px';
  div.style.backgroundColor='blue';
  div.innerHTML=divnum;//設(shè)置文字|方便識(shí)別div順序
 obj.parentNode.appendChild(div);
 console.log('newMyMoveWidth:'+newMyMoveWidth+' newMyMoveHeight:'+newMyMoveHeight);
 divnum++;
 
 ifeatfood(myLeft,myTop);
 } /*f() end--*/
 
 
 //生成食物
 function setfood(){
 
 foodLeft=parseInt(Math.random()*clientW);
 foodTop=parseInt(Math.random()*clientH);
 
 let div=document.createElement('div');
  div.id ='food';
  div.style.width = myWidth + 'px';
  div.style.height = myHeight + 'px';
  div.style.position = 'absolute';
  div.style.left= foodLeft + 'px';
  div.style.top= foodTop + 'px';
  div.style.backgroundColor='pink';
  div.innerHTML='吃';//設(shè)置文字|方便識(shí)別div順序
 document.body.appendChild(div);
 }
 setfood();
 
 //判斷吃到食物
 function ifeatfood(myLeft,myTop){
 //判斷是否吃到食物
 if(Math.abs(foodLeft-myLeft)<myWidth && Math.abs(foodTop-myTop)<myHeight){
  lenbodyadd();//長(zhǎng)度+1
  //刪除舊food,生成新food
  document.getElementById('food').parentNode.removeChild(document.getElementById('food'));
  setfood();
 }
 }
 
 //吃到食物身體加1
 function lenbodyadd(){
 lenbody++;
 }
 
 //保持移動(dòng)
 var setinter=setInterval((function move(){
 f(val);
 }),speed);
 
 //設(shè)置移動(dòng)速度
 function setspeed(obj){
 speed=obj.options[obj.options.selectedIndex].value;
 stopspeed();
 setinter=setInterval((function move(){
  f(val);
 }),speed);
 }
 
 //停止移動(dòng)
 function stopspeed(){
 clearInterval(setinter);
 }
 
 //窗口改變時(shí)跳轉(zhuǎn)-防f12
 window.onresize = ()=>{
 console.log(window.innerWidth,window.innerHeight);
 //window.location.;
 }
</script>

更多有趣的經(jīng)典小游戲?qū)崿F(xiàn)專(zhuān)題,分享給大家:

C++經(jīng)典小游戲匯總

python經(jīng)典小游戲匯總

python俄羅斯方塊游戲集合

JavaScript經(jīng)典游戲 玩不停

java經(jīng)典小游戲匯總

javascript經(jīng)典小游戲匯總

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • javascript動(dòng)態(tài)向網(wǎng)頁(yè)中添加表格實(shí)現(xiàn)代碼

    javascript動(dòng)態(tài)向網(wǎng)頁(yè)中添加表格實(shí)現(xiàn)代碼

    動(dòng)態(tài)向網(wǎng)頁(yè)中添加表格的方法有很多,本文為大家介紹下利用javascript是如何實(shí)現(xiàn)的
    2014-02-02
  • Javascript中構(gòu)造函數(shù)要注意的一些坑

    Javascript中構(gòu)造函數(shù)要注意的一些坑

    JavaScript語(yǔ)言是一門(mén)面向?qū)ο蟮恼Z(yǔ)言,但JS中并沒(méi)有類(lèi)的概念的。于是JavaScript采用構(gòu)造函數(shù)的方式來(lái)模擬類(lèi)的效果,即我們通過(guò)函數(shù)來(lái)創(chuàng)建對(duì)象。這也證明了函數(shù)在JavaScript中具有非常重要的地位。本文主要介紹了Javascript中構(gòu)造函數(shù)的一些坑,需要的朋友可以參考。
    2017-01-01
  • JavaScript的setter與getter方法

    JavaScript的setter與getter方法

    這篇文章主要為大家詳細(xì)介紹了JavaScript的setter與getter方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-11-11
  • 利用JS實(shí)現(xiàn)scroll自定義滾動(dòng)效果詳解

    利用JS實(shí)現(xiàn)scroll自定義滾動(dòng)效果詳解

    這篇文章主要給大家介紹了關(guān)于利用JS如何實(shí)現(xiàn)scroll自定義滾動(dòng)效果的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-10-10
  • 刷新頁(yè)面后讓控制臺(tái)的js代碼繼續(xù)執(zhí)行

    刷新頁(yè)面后讓控制臺(tái)的js代碼繼續(xù)執(zhí)行

    這篇文章主要介紹了刷新頁(yè)面后讓控制臺(tái)的js代碼繼續(xù)執(zhí)行,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-09-09
  • JavaScript oncopy事件用法實(shí)例解析

    JavaScript oncopy事件用法實(shí)例解析

    這篇文章主要介紹了JavaScript oncopy事件用法實(shí)例解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-05-05
  • js判斷PC端與移動(dòng)端跳轉(zhuǎn)

    js判斷PC端與移動(dòng)端跳轉(zhuǎn)

    本文主要介紹了js判斷PC端與移動(dòng)端跳轉(zhuǎn)的方法,具有很好的參考價(jià)值。下面跟著小編一起來(lái)看下吧
    2017-03-03
  • jquery實(shí)現(xiàn)的圖片點(diǎn)擊滾動(dòng)效果

    jquery實(shí)現(xiàn)的圖片點(diǎn)擊滾動(dòng)效果

    這篇文章主要介紹了jquery實(shí)現(xiàn)的圖片點(diǎn)擊滾動(dòng)效果,需要的朋友可以參考下
    2014-04-04
  • JavaScript電子時(shí)鐘倒計(jì)時(shí)

    JavaScript電子時(shí)鐘倒計(jì)時(shí)

    這篇文章主要介紹了JavaScript電子時(shí)鐘倒計(jì)時(shí)的實(shí)現(xiàn)代碼,具有一定的參考價(jià)值,感興趣的朋友可以參考一下
    2016-01-01
  • javascript中bind函數(shù)的作用實(shí)例介紹

    javascript中bind函數(shù)的作用實(shí)例介紹

    bind()的方法在ie,6,7,8中不適用,需要擴(kuò)展通過(guò)擴(kuò)展Function prototype可以實(shí)現(xiàn)此方法,下面為大家介紹下javascript中bind函數(shù)的作用
    2014-09-09

最新評(píng)論

永安市| 五寨县| 定安县| 巴林右旗| 常宁市| 昌吉市| 永德县| 巫溪县| 河西区| 长白| 东平县| 沙雅县| 扎兰屯市| 崇州市| 遵义县| 卢湾区| 松阳县| 长垣县| 合作市| 花莲市| 齐河县| 巴塘县| 武冈市| 烟台市| 鄱阳县| 庄河市| 广西| 于都县| 平南县| 武陟县| 驻马店市| 宁都县| 报价| 名山县| 五大连池市| 玉溪市| 神池县| 鱼台县| 曲阳县| 密山市| 三原县|