久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 6650|回復(fù): 3
打印 上一主題 下一主題
收起左側(cè)

貪吃蛇小游戲的文本網(wǎng)頁代碼

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:690575 發(fā)表于 2020-2-6 20:14 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
<!DOCTYPE html>
<html lang="en">
<head>
        <meta charset="UTF-8">
        <title>wjz</title>
        <style>
    *{
      margin:0;
      padding:0;
    }
.map{
   width:800px;
   height:600px;
   background-color: #ccc;
   position: relative;
}
        </style>
</head>
<body>
  <div class="map"></div>
  <script src="js/common.js"></script>

   <script >

   //自調(diào)用函數(shù)
    (function(){
      var elements=[];//用來保存每個小方塊實物的
      ////實物就是一個對象,有寬和高和顏色還有橫縱坐標(biāo),先定義構(gòu)造函數(shù)

      function Food(x,y,height,width,color){
        this.x=x||0;
        this.y=y||0;
        this.width=width||20;
        this.height=height||20;
        this.color=color||"pink";

      }
      //為原型添加初始化的方法。作用頁面顯示實物
      //因為實物要在地圖顯示有map參數(shù)
      Food.prototype.init=function(map){
        //先刪除這個小食物
        remove();
        //創(chuàng)建div
        var div=document.createElement("div");
        //吧div加到map中
        map.appendChild(div);
        //設(shè)置div的樣式
        div.style.width=this.width+"px";
        div.style.height=this.height+"px";
        div.style.backgroundColor=this.color;
        //先脫離文檔流
       div.style.position="absolute";
        //隨機(jī)橫縱坐標(biāo)
        this.x=parseInt(Math.random()*(map.offsetWidth/this.width))*this.width;
         this.y=parseInt(Math.random()*(map.offsetHeight/this.height))*this.height;
        //橫縱坐標(biāo)先放著 --隨機(jī)產(chǎn)生
        div.style.left=this.x+"px";
        div.style.top=this.y+"px";
        //把div鍵入到數(shù)組elements中
        elements.push(div);
      };
      //私有的函數(shù)--刪除實物
      function remove(){
        //elements數(shù)組中有這個食物
         for(var i=0;i<elements.length;i++){
          var ele=elements[i];
          //找到這個元素的父輩元素然后刪除這個元素
          ele.parentNode.removeChild(ele);
          //再次把elelments中的這個元素也要刪除
          elements.splice(i,1);
         }
      }

      //把Food暴露給window,外部可以使用
      window.Food=Food;
      }());
     //自調(diào)用函數(shù)--食物
    (function(){
      var elements=[];//存放小蛇的每個身體部分
      //小蛇的構(gòu)造函數(shù)
      function Snake(width,height,direction){
        //蛇的每個部分的寬
        this.width=width||20;
        this.height=height||20;
        //小蛇的身體
        this.body=[
        {x:3,y:2,color:"red"},//頭
        {x:2,y:2,color:"orange"},
        {x:1,y:2,color:"orange"}//身體
        ];


        //方向
        this.direction=direction||"right";
      }

      //為原型添加方法--小蛇初始化的方法
      Snake.prototype.init=function(map){
        //先刪除之前的小蛇
        remove();

        //循環(huán)遍歷創(chuàng)建div
        for(var i=0; i<this.body.length;i++){
          //數(shù)組中的每個數(shù)組元素都是一個對象
          var obj=this.body[i];
          var div=document.createElement("div");
          //把div加入在map中
          map.appendChild(div);
          div.style.position="absolute";
          div.style.width=this.width+"px";
          div.style.height=this.height+"px";
          //橫縱坐標(biāo)
          div.style.left=obj.x*this.width+"px";
          div.style.top=obj.y*this.height+"px";
          //背景顏色
          div.style.backgroundColor=obj.color;


          //方向暫時不定

          //把div加入到elements數(shù)組中--目的是為了刪除
          elements.push(div);
        }
      };
      //為原型添加方法--小蛇動起來
      Snake.prototype.move=function(food,map){
        //改變小蛇的身體坐標(biāo)位置
        var i=this.body.length-1
        for( ;i>0;i--){
          this.body[i].x=this.body[i-1].x;
          this.body[i].y=this.body[i-1].y;
        }
        //判斷方向--改變小蛇的頭--坐標(biāo)位置
        switch(this.direction){
          case "right":this.body[0].x+=1;break;
          case "left":this.body[0].x-=1;break;
          case "top":this.body[0].y-=1;break;
          case "bottom":this.body[0].y+=1;break;
        }
        //判斷有沒有吃到食物
        //小蛇的頭的坐標(biāo)和食物的坐標(biāo)一致
        var headX=this.body[0].x*this.width;
        var headY=this.body[0].y*this.height;
        //判斷食物的橫縱坐標(biāo)與小蛇的頭的坐標(biāo)是否相等  
        if(headX==food.x&&headY==food.y){
          //獲取小蛇的最后的尾巴
          var last=this.body[this.body.length-1];
          //最后的蛇尾復(fù)制一份加入到身體當(dāng)中
          this.body.push({
            x:last.x,
            y:last.y,
            color:last.color
          });
          //把食物刪除,重新初始化食物
          food.init(map);

        }
      };
      //刪除小蛇的私有函數(shù)
      function remove(){
        //獲取數(shù)組
        var i=elements.length-1;
        for(;i>=0;i--){
         //先從當(dāng)前的子元素找到父輩元素,然后刪除子元素
         var ele=elements[i];
         //從map中刪除這個子元素
         ele.parentNode.removeChild(ele);
         elements.splice(i,1);
        }
      }


      //把snake暴露給weindow,外部可以訪問
      window.Snake=Snake;

    }());
    //自調(diào)用函數(shù)--游戲?qū)ο?br />    (function(){
       var that=null;
       //游戲的構(gòu)造函數(shù)
       function Game(map){
       this.food=new Food();//食物的對象
       this.snake=new Snake();//小蛇的對象
       this.map=map;//地圖
       that=this;

       }
       Game.prototype.init=function(){
        //初始化游戲
        //食物初始化
        this.food.init(this.map);
        //小蛇初始化
       this.snake.init(this.map);
     //條用自動移動小蛇的方法
     this.runSnake(this.food,this.map);
     //調(diào)用按鍵的方法
      this.bindKey();//========================
       };
      //添加原型方法--設(shè)置小蛇可以自動跑起來
      Game.prototype.runSnake=function(food,map){
        //自由的移動
          var timeId=setInterval(function(){
          //此時的this是window
          //移動小蛇
          this.snake.move(food,map);
          //再次初始化
          this.snake.init(map);
          //橫坐標(biāo)的最大值
          var maxX=map.offsetWidth/this.snake.width;
          //縱坐標(biāo)的最大值
          var maxY=map.offsetHeight/this.snake.height;
          //小蛇頭的坐標(biāo)
          var headX=this.snake.body[0].x;
          var headY=this.snake.body[0].y;
          if(headX<0||headX>=maxX){
            //撞墻了
            clearInterval(timeId);
            alert("難受呀馬飛");

          }
          //縱坐標(biāo)判斷
           if(headY<0||headY>=maxY){
            //撞墻了
            clearInterval(timeId);
            alert("難受呀馬飛");

          }

          console.log(maxX+"===="+this.snake.body[0].x);
          console.log(this.snake.body[0].x);
          console.log(maxY);
          console.log(this.snake.body[0].y);
        }.bind(that),150)
      };
      //添加原型方法--設(shè)置用戶按鍵,改變小蛇的方向
      Game.prototype.bindKey=function(){
        //獲取用戶的按鍵,改變小蛇的移動方向
        document.addEventListener("keydown",function(e){
          //這里的this是document,應(yīng)該改為觸發(fā)事件keyDown的事件的對象
          //獲取鍵盤的按鍵值
          switch(e.keyCode){
            case 37:this.snake.direction="left";break;
            case 38:this.snake.direction="top";break;
            case 39:this.snake.direction="right";break;
            case 40:this.snake.direction="bottom";break;
          }

        }.bind(that),false);
      };
       window.Game=Game;
    }());


      //初始化游戲?qū)ο?br />       var gm=new Game(document.querySelector(".map"));
      //初始化游戲--開始游戲
       gm.init();

    //外部測試代碼
   //  var fd=new Food();
   //  var snake=new Snake();
   // snake.init(document.querySelector(".map"));//先看到小蛇

   //  setInterval(function(){

   //   snake.move(fd,document.querySelector(".map"));//走一步
   //   snake.init(document.querySelector(".map"));//初始化重新畫一條蛇
   //  },150);


    // console.log(fd.x+"====>"+fd.y);
    // console.log(fd.width);
   </script>

</body>
</html>  

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:106272 發(fā)表于 2020-2-7 11:31 | 只看該作者
不錯,學(xué)習(xí)一下
回復(fù)

使用道具 舉報

板凳
ID:992854 發(fā)表于 2021-12-15 19:15 | 只看該作者
文本拓展名是啥?
回復(fù)

使用道具 舉報

地板
ID:1032338 發(fā)表于 2022-6-5 15:00 | 只看該作者

vbs啊不然還可以什么
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 国产伦精品一区二区三区视频金莲 | 久久久久久亚洲精品 | 欧美成人一区二免费视频软件 | 久久久91| 久久久国产一区二区三区 | 国产精品久久视频 | 黄色毛片在线观看 | 日韩精品一区二区不卡 | 国产欧美日韩综合精品一 | 日日骚视频| 国产色婷婷久久99精品91 | 日本黄色大片免费 | 中文字幕国产一区 | 亚洲视频一区在线 | 国产精品亚洲一区 | 国产 日韩 欧美 制服 另类 | 国产毛片毛片 | 国产女人精品视频 | 国产美女在线免费观看 | gogo肉体亚洲高清在线视 | 午夜电影福利 | 亚洲精品综合一区二区 | 国产欧美日韩在线一区 | 欧美一级免费看 | 黄在线| 福利片在线| 91久操视频 | 天天天天操 | 国产探花在线精品一区二区 | 三级黄色片在线观看 | 国产欧美精品在线 | 日韩精品一区二区三区视频播放 | 91资源在线 | 一区二区三区在线观看免费视频 | 欧美一区两区 | 午夜精品久久久久久久久久久久 | 成人黄色av网站 | 免费成人av网站 | 国产精品一区一区三区 | 欧美日韩在线精品 | 日日干夜夜草 |