猫史档案馆


【box3】扩建技术——山丘地形生成器

用户:龙的传人_龙的传人_查看:7 回复:14 评论:7 创建时间:2021-04-26T21:17:30


center_image以前我是做过关于扩建技术的哈,

我又改进了亿下,

跟MC和尹子差远了()

不喜勿喷!

function hill(x1,y1,z1,width){
    var l=[[[-1,0],[-2,0],[-1,-1],[-1,1]],[[1,0],[2,0],[1,-1],[1,1]],[[0,-1],[0,-2],[-1,-1],[1,-1]],[[0,1],[0,2],[-1,1],[1,1]]]
    for(y2=y1;y2<=Infinity;y2++){
        var b=0;
        for(i1=0;i1<=3;i1++){
            if(voxels.getVoxelId(x1+l[i1][0][0],y2-1,z1+l[i1][0][1])!=0){
                b+=1;
            }
        }
        if(b==4){
            voxels.setVoxelId(x1,y2,z1,127);
        }else{
            break;
        }
        for(i2=0;i2<=width*2-y2**1.3;i2++){
            for(x2=0;x2<=254;x2++){
                for(z2=0;z2<=254;z2++){
                    if(voxels.getVoxelId(x2,y2,z2)==127){
                        for(i3=0;i3<=3;i3++){
                            if(voxels.getVoxelId(x2+l[i3][0][0],y2,z2+l[i3][0][1])!=127){
                                var b=0;
                                for(i4=1;i4<=3;i4++){
                                    if(voxels.getVoxelId(x2+l[i3][i4][0],y2-2,z2+l[i3][i4][1])==0||voxels.getVoxelId(x2+l[i3][i4][0],y2-1,z2+l[i3][i4][1])!=0){
                                        b+=1;
                                    }
                                }
                                if(b==3&&Math.random()>=0.5){
                                    voxels.setVoxelId(x2+l[i3][0][0],y2,z2+l[i3][0][1],125);
                                }
                            }
                        }
                    }
                }
            }
            for(x2=0;x2<=254;x2++){
                for(z2=0;z2<=254;z2++){
                    if(voxels.getVoxelId(x2,y2,z2)==125){
                        voxels.setVoxelId(x2,y2,z2,127);
                    }
                }
            }
        }
        for(x2=0;x2<=254;x2++){
            for(z2=0;z2<=254;z2++){
                if(voxels.getVoxelId(x2,y2,z2)==127){
                    voxels.setVoxelId(x2,y2,z2,317);
                }
            }
        }
    }
}

(async function(){
    var num=Math.round(Math.random()*30+20);
    for(i=1;i<=num;i++){
        var x=Math.round(Math.random()*254);
        var y=9;
        var z=Math.round(Math.random()*254);
        var w=Math.round(Math.random()*20+30);
        hill(x,y,z,w);
        await sleep(1000);
    }
    for(x=0;x<=254;x++){
        for(z=0;z<=254;z++){
            for(y=0;y<=254;y++){
                if(voxels.getVoxelId(x,y,z)==317){
                    voxels.setVoxelId(x,y,z,127);
                }
                if(voxels.getVoxel(x,y,z)==127&&voxels.getVoxel(x,y+1,z)!=0){
                    voxels.setVoxel(x,y,z,'dirt');
                }
            }
        }
    }
})();

 

 


回复

上一页1 页 / 共 1下一页
BSS梅者如西BSS梅者如西

不错啊蒙蒙

点赞0


评论


AlcalaAlcala

点赞0


评论


此号已被封067此号已被封067

考古

点赞0


评论


umbrallawwumbrallaww

巨人屋的bug?()(不是老玩家别回)

点赞1


评论


爱笑的赤星芽芽牛爱笑的赤星芽芽牛

能不能加点树

点赞0


评论


该账号已被封禁该账号已被封禁

地形整体不错,有格局,但是方块有点乱,可以适当增加海平面与树

点赞0


评论


难起的名字难起的名字

欸,龙啥时候研究上地形代码了???#@#¥#@¥#¥……%%******#¥%#

点赞0


评论


YDS尹子YDS尹子

这个可以稍微解决一下噪点的问题

多运行几次就好了

(async function(){
    var waterLevel=14;/*水平面高度 */
    var d=[
        [1,0,0],
        [0,0,1],
        [-1,0,0],
        [0,0,-1]
    ];
    var 喵sReadyBreak=[];
    world.say("消噪初始化...");
    for(let i=0;i<257;i++){
        for(let j=0;j<257;j++){
            for(let k=0;k<60;k++){
                if([127,125].includes(voxels.getVoxel(i,k,j))){
                    var cnt=0,cnt2=0;
                    for(let s=0;s<d.length;s++){
                        if([0,3喵].includes(voxels.getVoxel(i+d[s][0],k+d[s][1],j+d[s][2]))){
                            cnt++;
                        }else{
                            cnt2++;
                        }
                    }
                    var 喵s=0;
                    if(k<=waterLevel)喵s=3喵;
                    if(cnt>=3)喵sReadyBreak.push([i,k,j,喵s]);
                }
            }
        }
        await sleep(5);
        if(i%10==0)world.say(i+"/257");
    }
    world.say("清除中...");
    for(let i=0;i<喵sReadyBreak.length;i++){
        voxels.setVoxel(喵sReadyBreak[i][0],喵sReadyBreak[i][1],喵sReadyBreak[i][2],喵sReadyBreak[i][3])
    }
    world.say("地形正常化...");
    for(let i=0;i<257;i++){for(let j=0;j<257;j++)for(let k=0;k<55;k++){if(voxels.getVoxel(i,k,j)==voxels.id("dirt")&&voxels.getVoxel(i,k+1,j)==0){voxels.setVoxel(i,k,j,"grass")}}};
    for(let i=0;i<257;i++){for(let j=0;j<257;j++)for(let k=0;k<55;k++){if(voxels.getVoxel(i,k,j)==voxels.id("grass")&&voxels.getVoxel(i,k+1,j)!=0){voxels.setVoxel(i,k,j,"dirt")}}}
})();

点赞2


评论


PercentLeePercentLee

怎样复制粘贴?

点赞0


评论


七式草莓七式草莓

用这个更好:

function hill(x1,y1,z1,width){
    var l=[[[-1,0],[-2,0],[-1,-1],[-1,1]],[[1,0],[2,0],[1,-1],[1,1]],[[0,-1],[0,-2],[-1,-1],[1,-1]],[[0,1],[0,2],[-1,1],[1,1]]];
    for(y2=y1;y2<=Infinity;y2++){
        var b=0;
        for(i1=0;i1<=3;i1++){
            if(voxels.getVoxelId(x1+l[i1][0][0],y2-1,z1+l[i1][0][1])!=0){
                b+=1;
            };
        };
        if(b==4){
            voxels.setVoxelId(x1,y2,z1,127);
        }else{
            break;
        };
        for(i2=0;i2<=width*2-y2**1.3;i2++){
            for(x2=0;x2<=254;x2++){
                for(z2=0;z2<=254;z2++){
                    if(voxels.getVoxelId(x2,y2,z2)==127){
                        for(i3=0;i3<=3;i3++){
                            if(voxels.getVoxelId(x2+l[i3][0][0],y2,z2+l[i3][0][1])!=127){
                                var b=0;
                                for(i4=1;i4<=3;i4++){
                                    if(voxels.getVoxelId(x2+l[i3][i4][0],y2-2,z2+l[i3][i4][1])==0||voxels.getVoxelId(x2+l[i3][i4][0],y2-1,z2+l[i3][i4][1])!=0){
                                        b+=1;
                                    };
                                };
                                if(b==3&&Math.random()>=0.5){
                                    voxels.setVoxelId(x2+l[i3][0][0],y2,z2+l[i3][0][1],125);
                                };
                            };
                        };
                    };
                };
            };
            for(x2=0;x2<=254;x2++){
                for(z2=0;z2<=254;z2++){
                    if(voxels.getVoxelId(x2,y2,z2)==125){
                        voxels.setVoxelId(x2,y2,z2,127);
                    };
                };
            };
        };
        for(x2=0;x2<=254;x2++){
            for(z2=0;z2<=254;z2++){
                if(voxels.getVoxelId(x2,y2,z2)==127){
                    voxels.setVoxelId(x2,y2,z2,317);
                };
            };
        };
    };
};
(async function(){
    var num=Math.round(Math.random()*30+20);
    for(i=1;i<=num;i++){
        var x=Math.round(Math.random()*254);
        var y=9;
        var z=Math.round(Math.random()*254);
        var w=Math.round(Math.random()*20+30);
        hill(x,y,z,w);
        await sleep(1000);
    };
    for(x=0;x<=254;x++){
        for(z=0;z<=254;z++){
            for(y=0;y<=254;y++){
                if(voxels.getVoxelId(x,y,z)==317){
                    voxels.setVoxelId(x,y,z,127);
                };
                if(voxels.getVoxel(x,y,z)==127&&voxels.getVoxel(x,y+1,z)!=0){
                    voxels.setVoxel(x,y,z,'dirt');
                };
            };
        };
    };
})();

点赞0


评论


难起的名字难起的名字

wa

点赞0


评论


银狐残影银狐残影

收藏

点赞0


评论


小白鸡小白鸡

wa

点赞0


评论


宁静倒数28天宁静倒数28天

说实话生成地形的公式我还不知道,不然我自己都可以做了

点赞0


评论