独立小游戏开发记录-关于《勇者世界?》无限地图生成方案说明和最初代码

一,关于此游戏无限地图生成方案说明和最初代码
思路可以参考九宫格键盘,玩家所在方格可以看成数字5,而其它0-9的数字是包围数字5的其它方格,如果方格5只要大于游戏玩家视野,而玩家角色每次移动都能提前算出周围方格的话, 在创建地图时顺便加点元素等等,给玩家的感觉也相当于无限地图了
从下面是以html/vue写的简单获取周围方格的算法,测试方法,复制保存下方代码,改成html文件,双击运行会在浏览器打开新页面,点击创建按钮就好执行查看效果(别忘按F12)
此算法仅供参考,只是简单的实现,想要更好的实现无限地图,请在论坛上搜索大神们的实现,再次感谢你们的支持!

<html lang="zh-CN">

<head></head>

<body>
    <div id="app">
        <button type="button" @click="create()">生成</button>
    </div>
    <script src="https://cdn.bootcss.com/vue/2.5.20/vue.min.js"></script>
    <script>
        new Vue({
            el: "#app",
            data: {
                maps:[],
                map:{
                    x:0,
                    y:0,
                    w:100,
                    h:100,
                    create:false
                }
            },
            created() {
                console.log("--vue加载成功!--");
            },
            methods: {
                create: function () {
                    this.createMap(this.map);
                    console.log(this.maps.map(t=>{return t.x+','+t.y}));
                },
                createMap(map){
                    const {x,y,w,h} = map;
                    let p0 = {...map};
                    let p1 = {...map,x:x-1,y:y+1};
                    let p2 = {...map,x:x,y:y+1};
                    let p3 = {...map,x:x+1,y:y+1};
                    let p4 = {...map,x:x-1,y:y};
                    let p5 = {...map,x:x+1,y:y};
                    let p6 = {...map,x:x-1,y:y-1};
                    let p7 = {...map,x:x,y:y-1};
                    let p8 = {...map,x:x+1,y:y-1};
                    this.addMap(p0);
                    this.addMap(p1);
                    this.addMap(p2);
                    this.addMap(p3);
                    this.addMap(p4);
                    this.addMap(p5);
                    this.addMap(p6);
                    this.addMap(p7);
                    this.addMap(p8);
                },
                addMap(map){
                    const {x,y} = map;
                    let findMap = this.maps.find(t=>t.x == x&& t.y==y);
                    if(!findMap){
                        this.maps.push(map);
                    }
                },
            }
        })
    </script>
</body>

</html>