• 贪吃蛇面向对象完整版


    <!DOCTYPE html>
      <html>
        <head>
          <meta charset="UTF-8">
          <title></title>
        </head>
        <body>
        </body>
      </html>
      <script>
        var t=null;

        //地图系统
        function Map(){
          this.width="800px";
          this.height="600px";
          this.background="#ccc";
          this.position="relative";
          this._map=null;
        }
        Map.prototype.init=function(){
          this._map=document.createElement("div");
          document.body.appendChild(this._map);
          this._map.style.width=this.width;
          this._map.style.height=this.height;
          this._map.style.background=this.background;
          this._map.style.position=this.position;

        }
        var map=new Map;
        map.init()

        //食物系统
        function Food(){
          this.width="20px";
          this.height="20px";
          this.background="green";
          this._food=null;
          this.position="absolute"
        }
        Food.prototype.init=function(){
          this._food=document.createElement("div");
          map._map.appendChild(this._food);
          this._food.style.width=this.width;
          this._food.style.height=this.height;
          this._food.style.background=this.background;
          this._food.style.position=this.position;
          this.x=Math.floor(Math.random()*40);
          this.y=Math.floor(Math.random()*30);
          this._food.style.left=this.x*20+"px";
          this._food.style.top=this.y*20+"px";
        }
        var food=new Food;
        food.init()

        制造小蛇;
        function Snake(){
          this.width="20px";
          this.height="20px";
          this.position="absolute"
          this.body=[
            {x:1,y:2,color:"red",son:null},
            {x:2,y:2,color:"red",son:null},
            {x:3,y:2,color:"blue",son:null}
          ]
          this.fangxiang="right";
          this.setsnake=function(code){
            switch(code){
              case 37:
              if(this.fangxiang==="right"){
              return;
              }

              this.fangxiang="left";

              break;
              case 38:
              if(this.fangxiang==="down"){
              return;
              }


              this.fangxiang="up";

              break;
              case 39:
              if(this.fangxiang==="left"){
              return;
              }


              this.fangxiang="right";

              break;
              case 40:
              if(this.fangxiang==="up"){
              return;
              }


            this.fangxiang="down";

            break;
            }
          }
        }
        Snake.prototype.init=function(){
          for(var i=0;i<this.body.length;i++){
            if(this.body[i].son==null){
              this.body[i].son=document.createElement("div");
              map._map.appendChild(this.body[i].son)
              this.body[i].son.style.width=this.width;
              this.body[i].son.style.height=this.height;
              this.body[i].son.style.position=this.position;
              this.body[i].son.style.background=this.body[i].color
            }
          this.body[i].son.style.left=this.body[i].x*20+"px"
          this.body[i].son.style.top=this.body[i].y*20+"px"

          }

        }
        Snake.prototype.move=function(){

          var length=this.body.length-1;
          for(var i=0;i<length;i++){
            this.body[i].x=this.body[i+1].x;
            this.body[i].y=this.body[i+1].y;
          }

        switch(this.fangxiang){
        case "right":
          this.body[length].x=this.body[length].x+1;
        break;
        case "left":
          this.body[length].x=this.body[length].x-1;
        break;
        case "up":
          this.body[length].y=this.body[length].y-1;
        break;
        case "down":
          this.body[length].y=this.body[length].y+1;
        }
        this.init()

        //实现小蛇的一些功能
        if(this.body[length].x<0||this.body[length].x>39||this.body[length].y<0||this.body[length].y>29){

          clearInterval(t)
          alert("瞎子吗?越界了")
          for(var j=0;j<this.body.length;j++){
            if(this.body[j].son!=null){
            map._map.removeChild(this.body[j].son)
            }
          }
        }
        if(this.body[length].x==food.x&&this.body[length].y==food.y){
          map._map.removeChild(food._food);
          food.init()
          this.body.unshift({x:null,y:null,color:"red",son:null});
        }
        //由于出现了bug,现阶段没办法解决,所以舍弃贪吃蛇自己吃自己的功能
        // for(var u=0;u<this.body.length;u++){
          // if(this.body[u]==this.body[length]){
          // return false;
          // }
        // else if(this.body[length].x==this.body[u].x&&this.body[length].y==this.body[u].y){
          // clearInterval(t)
          // alert("你是猪吗")
          // }
        // }
        }
        var snake=new Snake;
        snake.init()
        t=setInterval(function(){
        snake.move()
        },100)
        document.onkeydown=function(ev){
          var ev=ev||window.event;
          setTimeout(function(){
            snake.setsnake(ev.keyCode)
          },100)
        }


      </script>

  • 相关阅读:
    生成函数解决多重集合的计数问题
    kmp板子
    poj1001
    【题解】洛谷P1315 [NOIP2011TG] 观光公交(前缀和+贪心)
    【题解】洛谷P1941 [NOIP2014TG] 飞扬的小鸟(背包DP)
    【题解】洛谷P2679 [NOIP2015TG] 子串(DP+滚动数组)
    【题解】洛谷P1514 [NOIP2010TG] 引水入城(DFS+DP)
    【题解】洛谷P1052 [NOIP2005TG] 过河(DP+离散化)
    [arc063F]Snuke's Coloring 2-[线段树+观察]
    [agc001E]BBQ Hard[组合数性质+dp]
  • 原文地址:https://www.cnblogs.com/shangjun6/p/10375172.html
Copyright © 2020-2023  润新知