当前位置:   article > 正文

贪吃蛇-食物类_贪吃蛇的食物种类

贪吃蛇的食物种类

HTML 代码


<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>食物类</title>

    <style>
        #map{
            width: 400px;
            height: 400px;
            background-color: #000;
            position: relative;
        }
    
    </style>
</head>
<body>
    
    <div id="map"></div>

    <script>

    {  
        class Map{
            constructor(el,rect = 10){
                this.el = el;
                this.rect = rect;
                this.data = [];

                //行列数 = 总宽高 / 行列的大小
                this.rows = Math.ceil(Map.getStyle(el,"height") / rect);
                this.cells = Math.ceil(Map.getStyle(el,"width") / rect);

                //总宽高 =  行列数 * 行列的大小  
                Map.setStyle(el,"height",this.rows*rect);
                Map.setStyle(el,"width",this.cells*rect);
            }

            static getStyle(el,attr){
                return  parseFloat(getComputedStyle(el)[attr]);
            }

            static setStyle(el,attr,val){
                el.style[attr] = val + "px";
            }

            //设置数据
            setData(newData){
                this.data = this.data.concat(newData);
            }

            //清除数据
            clearData(){
                    this.data.length = 0;
            }
            //判断指定位置 是否包含数据
            include({x,y}){
                return this.data.some(item=>(item.x==x && item.y==y));
            }

            //通过数据,渲染到页面元素
            render(){
                this.el.innerHTML = this.data.map(item=>{
                    return `<span style="position:absolute;left:${item.x*this.rect}px;top:${item.y*this.rect}px;width:${this.rect}px; height:${this.rect}px;background:${item.color};"></span>`
                }).join("");
            }
        }
    
        class Food{
            constructor(map,colors = ["red","blue","yellow"]){
                this.map = map;
                this.data = null;
                this.colors = colors;
            }

            //创建食物
            create(){
                let x = Math.floor(Math.random()*this.map.cells);
                let y = Math.floor(Math.random()*this.map.rows);
                let color = this.colors[parseInt(Math.random()*this.colors.length)];
                this.data = {x,y,color};

                if(this.map.include(this.data)){
                    this.create();
                }
                this.map.setData(this.data);

            }

            
        }
        
    let map = document.querySelector("#map");
     let gameMap = new Map(map,10);
     let gameFood = new Food(gameMap);   


    gameMap.setData([
                    {x:5,y:3,color:"red"},
                    {x:4,y:3,color:"#fff"},
                    {x:3,y:3,color:"#fff"},
                    {x:2,y:3,color:"#fff"},
               ]);


        setInterval(() => {
            gameFood.create();
            gameMap.render();
        }, 200);

    //  gameMap.clearData();   


     console.log(gameMap.include({x:5,y:3}));
    //  console.log(gameMap);
    }

    </script>

</body>
</html>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 105
  • 106
  • 107
  • 108
  • 109
  • 110
  • 111
  • 112
  • 113
  • 114
  • 115
  • 116
  • 117
  • 118
  • 119
  • 120
  • 121
  • 122
  • 123
  • 124

JS 代码

    // 食物类
  export default class Food {
        constructor(cells,rows, colors = ["red", "blue", "yellow", "pink"]) {
            this.cells = cells;
            this.rows = rows;
            this.data = null;
            this.colors = colors;
            this.create(); // 初始化食物
        }

        create() {
            let x = Math.floor(Math.random() * this.cells);
            let y = Math.floor(Math.random() * this.rows);
            let color = this.colors[parseInt(Math.random() * this.colors.length)];
            this.data = { x, y, color };
            // if (this.map.include(this.data)) {
            //     this.create();
            // }
            // this.map.setData(this.data);
        }
    }

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/1002629
推荐阅读
相关标签
  

闽ICP备14008679号