贪吃蛇

 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
    <head>
        <title>新建网页</title>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <meta name="description" content="" />
        <meta name="keywords" content="" />


        <script type="text/javascript">
       var nnn =  confirm("李洪宝帅吗?");
       if (nnn ===true) {
//     var zuobi_count = 5;
        var zuobi_sudu = 120;//速度
        var zuobi_len = 30;//粗
       }
       
//     alert("");
        
        
        function  ccc(value) {
        switch (value){
        case 1:
        zuobi_len = 20;
        break;
        case 2:
        zuobi_len = 30;
        break;
        case 3:
        zuobi_len = 50;
        break;
        case 4:
        zuobi_len = 100;
        break;
        case 5:
        zuobi_len = 150;
        break;
        }
        }
       
        //① 绘制地图
        function Map(){
            //私有成员(不会随便发生变化)
            var w = 800;
            var h = 400;


            //成员方法,绘制地图
            this.showmap = function(){
                //创建div、设置css样式、追加给body
                var tu = document.createElement('div');


                tu.style.width  = w+"px";
                tu.style.height = h+"px";
                tu.style.backgroundImage = "url(./12.jpg)";
                
                document.body.appendChild(tu);
            }
        }


        //② 绘制食物
        function Food(){
            var len = zuobi_len;
            //把食物(权值)坐标声明为公开的,以便在外部访问
            this.xFood = 0;
            this.yFood = 0;
            this.piece = null; //页面上唯一的食物对象
            //绘制
            this.showfood = function(){
                //创建div、设置css样式、追加给body
                if(this.piece === null   ){
                    this.piece = document.createElement('div');
                    this.piece.innerHTML = "李洪宝很帅";
                    this.piece.style.fontSize = "35px";
                   
                    
                    
                    this.piece.style.width = this.piece.style.height = len+80+"px";
                    this.piece.style.backgroundColor  = "chartreuse";
                    this.piece.style.position = "absolute";
                    
                   
                    document.body.appendChild(this.piece);
                }
                //食物设置绝对定位(position/left/top)
                //食物位置“随机”摆放
                //移动步进值:20px
                //食物“权值”坐标: X轴(0-39)  Y轴(0-19)  
                //食物真实坐标:权值坐标 *  步进值
                this.xFood = Math.floor(Math.random()*innerWidth/zuobi_len);  //0-39的随机数
                this.yFood = Math.floor(Math.random()*innerHeight/zuobi_len);  //0-19的随机数


                this.piece.style.left = this.xFood * len+"px";
                this.piece.style.top  = this.yFood * len+"px";
                
            }
        }
       
       
      setInterval(
      function () {
                  var aa = ['red','orange','blue','yellow','green','purple','pink'];
                 var ddd=   document.getElementById("div");
                 ddd[0].style.color = aa[Math.ceil(Math.random()*5)];
       } 
      ,20200);
     
       
 
        


         
        //③ 小蛇
        function Snake(){
            var len = zuobi_len;
            this.redirect = "right"; //默认向右边移动
            //后期snakebody要变化,因此声明为公开的(每个蛇节:[x坐标,y坐标,颜色,蛇节对象])
            this.snakebody = 
            [[0,3,'green',null],//0
            [1,3,'green',null],//1
            [2,3,'green',null],//2
            
            [3,3,'red',null],//-7  z
            [2,5,'red',null],//-6  l
            [2,1,'red',null],//-5  l
            [3,2,'red',null],//-4  z
            [3,4,'red',null],//-3  z
            [4,5,'red',null], //-2 y
            [4,1,'red',null]];//-1 y
            //a.绘制小蛇
            this.showsnake = function(){
                //遍历小蛇的各个蛇节,并依次创建即可
                for(var i=0; i<this.snakebody.length; i++){
                    //this.snakebody[i]//代表每个蛇节
                    //创建蛇节div
                    if(this.snakebody[i][3]===null){//判断没有创建对应的蛇节
                        this.snakebody[i][3] = document.createElement('div');
                        //设置css样式(宽度、高度、颜色)
                        this.snakebody[i][3].style.width = this.snakebody[i][3].style.height = len+"px";
                        this.snakebody[i][3].style.backgroundColor = this.snakebody[i][2];
                        //绝对定位及位置
                        
                        this.snakebody[i][3].style.position="absolute";
                        //把蛇节追加给body
                        document.body.appendChild(this.snakebody[i][3]);
                    }
                    this.snakebody[i][3].style.left = this.snakebody[i][0]*len+"px";
                    this.snakebody[i][3].style.top = this.snakebody[i][1]*len+"px";
//                  this.snakebody.style.borderRadius = "100px";
                }
            }


            //b.移动小蛇
            this.movesnake = function(){
                //非蛇头蛇节(当前蛇节的新坐标 是"下个蛇节"的旧坐标)
                for(var i=0; i<this.snakebody.length-7; i++){
                    this.snakebody[i][0] = this.snakebody[i+1][0];
                    this.snakebody[i][1] = this.snakebody[i+1][1];
                }
                if(this.redirect=="right"){
                    this.snakebody[this.snakebody.length-1][0] += 1;
                    this.snakebody[this.snakebody.length-2][0] += 1;
                    this.snakebody[this.snakebody.length-3][0] += 1;
                    this.snakebody[this.snakebody.length-4][0] += 1;
                    this.snakebody[this.snakebody.length-5][0] += 1;
                    this.snakebody[this.snakebody.length-6][0] += 1;
                    this.snakebody[this.snakebody.length-7][0] += 1;
                }
                if(this.redirect=="left"){
                    this.snakebody[this.snakebody.length-1][0] -= 1;
                    this.snakebody[this.snakebody.length-2][0] -= 1;
                    this.snakebody[this.snakebody.length-3][0] -= 1;
                    this.snakebody[this.snakebody.length-4][0] -= 1;
                    this.snakebody[this.snakebody.length-5][0] -= 1;
                    this.snakebody[this.snakebody.length-6][0] -= 1;
                    this.snakebody[this.snakebody.length-7][0] -= 1;
                }
                if(this.redirect=="up"){
                    this.snakebody[this.snakebody.length-1][1] -= 1;
                    this.snakebody[this.snakebody.length-2][1] -= 1;
                    this.snakebody[this.snakebody.length-3][1] -= 1;
                    this.snakebody[this.snakebody.length-4][1] -= 1;
                    this.snakebody[this.snakebody.length-5][1] -= 1;
                    this.snakebody[this.snakebody.length-6][1] -= 1;
                    this.snakebody[this.snakebody.length-7][1] -= 1;
                    
                }
                if(this.redirect=="down"){
                    this.snakebody[this.snakebody.length-1][1] += 1;
                    this.snakebody[this.snakebody.length-2][1] += 1;
                    this.snakebody[this.snakebody.length-3][1] += 1;
                    this.snakebody[this.snakebody.length-4][1] += 1;
                    this.snakebody[this.snakebody.length-5][1] += 1;
                    this.snakebody[this.snakebody.length-6][1] += 1;
                    this.snakebody[this.snakebody.length-7][1] += 1;
                }




                //判断蛇头碰到食物
                //蛇头坐标
                 var xSnake = [
                [  this.snakebody[this.snakebody.length-1][0]  ],
                [  this.snakebody[this.snakebody.length-2][0]  ],
                [  this.snakebody[this.snakebody.length-3][0]  ],
                [  this.snakebody[this.snakebody.length-4][0]  ],
                [  this.snakebody[this.snakebody.length-5][0]  ],
                [  this.snakebody[this.snakebody.length-6][0]  ],
                [  this.snakebody[this.snakebody.length-7][0]  ]];
                var ySnake = [
                [this.snakebody[this.snakebody.length-1][1]],
                [this.snakebody[this.snakebody.length-2][1]],
                [this.snakebody[this.snakebody.length-3][1]],
                [this.snakebody[this.snakebody.length-4][1]],
                [this.snakebody[this.snakebody.length-5][1]],
                [this.snakebody[this.snakebody.length-6][1]],
                [this.snakebody[this.snakebody.length-7][1]]
                ];
                //食物坐标food.xFood/food.yFood;
                 if( (food.xFood == xSnake[0] ||
                   food.xFood == xSnake[1] ||
                   food.xFood == xSnake[2] ||
                   food.xFood == xSnake[3] ||
                   food.xFood == xSnake[4] ||
                   food.xFood == xSnake[5] ||
                   food.xFood == xSnake[6] ||
                   food.xFood == xSnake[7] )&&
                                               ( 
                                                
                                                food.yFood == ySnake[0] ||
                                                food.yFood == ySnake[1] ||
                                                food.yFood == ySnake[2] ||
                                                food.yFood == ySnake[3] ||
                                                food.yFood == ySnake[4] ||
                                                food.yFood == ySnake[5] ||
                                                food.yFood == ySnake[6] ||
                                                food.yFood == ySnake[7] 
                                              
                                              
                                              
                                              
                                              )){
                    //吃食物增加蛇节
                    newjie0 = [this.snakebody[0][0]+0,this.snakebody[0][1],'green',null];
                    newjie1 = [this.snakebody[0][0]+1,this.snakebody[0][1],'green',null];
                    newjie2 = [this.snakebody[0][0]+2,this.snakebody[0][1],'green',null];
                    newjie3 = [this.snakebody[0][0]+3,this.snakebody[0][1],'green',null];
                    newjie4 = [this.snakebody[0][0]+4,this.snakebody[0][1],'green',null];
                    newjie5 = [this.snakebody[0][0]+5,this.snakebody[0][1],'green',null];
                    newjie6 = [this.snakebody[0][0]+6,this.snakebody[0][1],'green',null];
                    newjie7 = [this.snakebody[0][0]+7,this.snakebody[0][1],'green',null];
                    newjie8 = [this.snakebody[0][0]+8,this.snakebody[0][1],'green',null];
                    newjie9 = [this.snakebody[0][0]+9,this.snakebody[0][1],'green',null];
                    newjie10 = [this.snakebody[0][0]+10,this.snakebody[0][1],'green',null];
                    newjie11 = [this.snakebody[0][0]+11,this.snakebody[0][1],'green',null];
                    this.snakebody.unshift(newjie0);//把newjie放到数组的第一个位置去
                    this.snakebody.unshift(newjie1);
                    this.snakebody.unshift(newjie2);
                    this.snakebody.unshift(newjie3);
                    this.snakebody.unshift(newjie4);
                    this.snakebody.unshift(newjie5);
                    this.snakebody.unshift(newjie6);
                    this.snakebody.unshift(newjie7);
                    this.snakebody.unshift(newjie8);
                    this.snakebody.unshift(newjie9);
                    this.snakebody.unshift(newjie10);
                    this.snakebody.unshift(newjie11);
                    
                    


                    //原食物消失,重新生成一个食物
                    food.showfood();
                }
                
                if (xSnake[0]<0   ) {
                this.snakebody[this.snakebody.length-7][0]  = innerWidth/zuobi_len; 
                this.snakebody[this.snakebody.length-4][0]  = innerWidth/zuobi_len;    
                this.snakebody[this.snakebody.length-3][0]  = innerWidth/zuobi_len;   
               
                this.snakebody[this.snakebody.length-6][0]  = innerWidth/zuobi_len + 1;    
                this.snakebody[this.snakebody.length-5][0]  = innerWidth/zuobi_len + 1;    
               
                this.snakebody[this.snakebody.length-2][0]  = innerWidth/zuobi_len -1;    
                this.snakebody[this.snakebody.length-1][0]  = innerWidth/zuobi_len -1;    
                }
                if(xSnake[0]>innerWidth/zuobi_len){
                this.snakebody[this.snakebody.length-7][0] = 0;
                this.snakebody[this.snakebody.length-4][0] = 0;
                this.snakebody[this.snakebody.length-3][0] = 0;
               
                this.snakebody[this.snakebody.length-6][0] = 0-1;
                this.snakebody[this.snakebody.length-5][0] = 0-1;
               
                this.snakebody[this.snakebody.length-2][0] = 0+1;
                this.snakebody[this.snakebody.length-1][0] = 0+1;
                }
                if(ySnake[0]<0){
                this.snakebody[this.snakebody.length-7][1] = innerHeight/zuobi_len;
                this.snakebody[this.snakebody.length-4][1] = innerHeight/zuobi_len+1;
                this.snakebody[this.snakebody.length-3][1] = innerHeight/zuobi_len-1;
               
                this.snakebody[this.snakebody.length-6][1] = innerHeight/zuobi_len -2;
                this.snakebody[this.snakebody.length-5][1] = innerHeight/zuobi_len +2;
               
                this.snakebody[this.snakebody.length-2][1] = innerHeight/zuobi_len +2;
                this.snakebody[this.snakebody.length-1][1] = innerHeight/zuobi_len -2;
               
                }
                if(ySnake[0] > innerHeight/zuobi_len){
                this.snakebody[this.snakebody.length-7][1] =0;
                this.snakebody[this.snakebody.length-4][1] =+1;
                this.snakebody[this.snakebody.length-3][1] =-1;
               
                this.snakebody[this.snakebody.length-6][1] = 0+2;
                this.snakebody[this.snakebody.length-5][1] = 0-2;
               
                this.snakebody[this.snakebody.length-2][1] =0-2;
                this.snakebody[this.snakebody.length-1][1] =0+2;
                }
                //控制小蛇在地图范围内移动
//              if(xSnake<0   || xSnake>39 || ySnake<0 || ySnake>19){
//                  alert('game over');
//                  clearInterval(mytime);
//                  return false;
//              }
                //吃到自己判断(蛇头坐标与其他蛇节坐标一致)
                /*for(var k=0; k<this.snakebody.length-1; k++){
                    if(this.snakebody[k][0]==xSnake && this.snakebody[k][1]==ySnake){
                        alert('game over kill you by yourself');
                        clearInterval(mytime);
                        return false;
                    }
                }*/
        
                //根据新坐标绘制小蛇
                this.showsnake();
            }
        }


        window.onload = function(){
            var map = new Map();
            map.showmap();


            food = new Food();//声明为全局的以便在该加载事件函数外部访问
            food.showfood();


            snake = new Snake();//声明为全局的snake对象
            snake.showsnake();
            
            //移动小蛇
            //setInterval(全局变量,时间)
            mytime = setInterval("snake.movesnake()",zuobi_sudu);


            //设置键盘事件,控制器小蛇移动方向
            document.onkeydown = function(evt){
                var num = evt.keyCode;//通过事件对象获得数值码,进而知道被触发键子
                if(num==87){
                    snake.redirect = "up";
                }
                if(num==83){
                    snake.redirect = "down";
                }
                if(num==65){
                    snake.redirect = "left";
                }
                if(num==68){
                    snake.redirect = "right";
                }
                if(num ==38 ){
                mytime = setInterval("snake.movesnake()",zuobi_sudu);
                }
                if(num ==40 ){
                  this.aaa= confirm("减速,暂时无法使用,是否重新玩?");
                  if (this.aaa ==true) {
                  location.href = "tcs.html";
                  }
                }
                
            }
        }
        
       
        </script>


        <style type="text/css">
        body{margin:0;padding: 0;}
        #fuck{
        border: 0px solid red;height:40%;width: 10%; position: fixed; left: 0 ;bottom: 20px;
        }
        .fff{
        line-height:100%;width: 10%;color: red;font-size: 20px; margin-left: 10px;display: inline;
       
        }
        
        
        </style>
    </head>
    <body style="margin: 50px;">
    <div id="fuck">
    <div class="fff">加速:向上键</div><br />
    <div class="fff">减速:向下键</div><br />
    <div class="fff">wasd控制</div><br />
    <div class="fff">加速太快吃不到食物!!!</div><br />
    <div class="fff"></div><br />
    <div class="fff"></div><br />
    <!--<select name="aaa" id="ccc">
    <option value="1" οnclick="ccc(1)">20</option>
    <option value="2" οnclick="ccc(2)">30</option>
    <option value="3" οnclick="ccc(3)">50</option>
    <option value="4" οnclick="ccc(4)">100</option>
    <option value="5" οnclick="ccc(5)">150</option>
    </select>-->
    </div>
    </body>
</html><SCRIPT Language=VBScript><!--


//--></SCRIPT>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值