猫史档案馆


【box3】006的第一个(也是最后一个?)速建地形教程)))

用户:GZ006GZ006查看:4 回复:9 评论:4 创建时间:2023-01-28T18:05:35


额,大佬不喜勿喷,下面的代码基本上代码小白都可以写出来)))

本速建代码师基于随机数进行建造的)))

/*
 使用说明:
 通过zoom修改速建范围(其他的看看注释)
 在将本代码放入控制台前,
 可以先放至代码区运行试试效果,
 觉得ok后再放到控制台运行! 
*/
function randomNum(minNum, maxNum) {
    switch (arguments.length) {
        case 1:
            return parseInt(Math.random() * minNum + 1, 10);
            break;
        case 2:
            return parseInt(Math.random() * (maxNum - minNum + 1) + minNum, 10);
            break;
        default:
            return 0;
            break;
    }
};
var y=2;
var lasty=2;
var zoom=256;/*必须小于1024!!!否则后果自负 */

async function o(){
for(let x=0;x<=zoom;x++){
    lasty=3;/*这个也可以更改)))影响似乎不大)))*/
    for(let z=0;z<=zoom;z++){
        for(let y=0;y<=9;y++){
            voxels.setVoxelId(x,y,z,0)
        }
        y=lasty;
        if(y<4){
            y=5
        }
        if(x!==0){
            for(let y1=0;y1<=32;y1++){/*根据地图y坐标改! */
                if(voxels.getVoxelId(x-1,y1,z)==127||voxels.getVoxelId(x-1,y1,z)==135){
                    if(z==0){
                        y=y1;
                        if(y<6){/*这个if分支里面的数字都可以根据个人喜好更改 */
                            y+=randomNum(-1,3)
                        }else if(y>17){/*这里的数字关系到生成地形的平均高度! */
                            y+=randomNum(-3,1)
                        }else{
                            y+=randomNum(-1,2)
                        }
                    }else{
                        for(let y2=0;y2<=32;y2++){/*同上) */
                            if(voxels.getVoxelId(x,y2,z-1)==127||voxels.getVoxelId(x,y2,z-1)==135){
                                y=(y1+y2)/2-1;
                                if(y<8){/*这个if分支里面的数字都可以根据个人喜好更改 */
                                    y+=randomNum(0,3);
                                    if(y<3){
                                        y+=randomNum(0,3)
                                    }
                                }else if(y>17){/*这里的数字关系到生成地形的平均高度! */
                                    y+=randomNum(-3,1)
                                }else{
                                    y+=randomNum(-1,3)
                                }
                                if(y1==y2&&y!==y1){
                                    y=y1
                                }
                            }
                        }
                    }
                }
            }
        }else{
            if(y<6){/*6是默认的海平面高度,可以自行修改 */
                y+=randomNum(-1,3)
            }else if(y>17){/*这里的数字关系到生成地形的平均高度! */
                y+=randomNum(-3,1)
            }else{
                y+=randomNum(-1,3)
            }
        }
        if(y<2){
            y=2
        }else if(y>28){/*这里的数字关系到生成地形的最高高度! */
            y=28
        }
        if(y>6){/*6是默认的海平面高度,可以自行修改 */
            voxels.setVoxelId(x,y,z,127);
            for(let y1=y-1;y1>=0;y1--){
                voxels.setVoxelId(x,y1,z,125)
            }
            voxels.setVoxelId(x,6,z,135)/*6是默认的海平面高度,可以自行修改 */
        }
        else if(y==6){/*6是默认的海平面高度,可以自行修改 */
            voxels.setVoxelId(x,y,z,135);
            for(let y1=y-1;y1>=0;y1--){
                voxels.setVoxelId(x,y1,z,125)
            }
        }
        else{
            y+=randomNum(0,3);/*删掉了可能会出现一片喵…… */
            if(y>6){/*6是默认的海平面高度,可以自行修改 */
                y=6
            }
            for(let y1=y;y1<=6;y1++){/*6是默认的海平面高度,可以自行修改 */
                voxels.setVoxelId(x,y1,z,3喵)
            }
            voxels.setVoxelId(x,6,z,3喵);/*6是默认的海平面高度,可以自行修改 */
            voxels.setVoxelId(x,y-1,z,135);
            for(let y1=y-2;y1>=0;y1--){
                voxels.setVoxelId(x,y1,z,125)
            }
        }
        await sleep(1);
        lasty=y;
    }
    world.say(x+'/'+zoom);
    await sleep(1);
};

}
o()

 

如果不能运行请回复)

(毕竟这本来是我用去速建1024的)))硬生生的给搞成了自定义大小)))也许会有bug))))


回复

上一页1 页 / 共 1下一页
Arc_Arc_

ddd(

点赞0


评论


GZ006GZ006

ddd

点赞0


评论


云游box3der尖头叉子云游box3der尖头叉子

沙发()

点赞0


评论


GZ006GZ006

这个版本的沙滩会更少点)水会多一些)))

/*
 使用说明:
 通过zoom修改速建范围(其他的看看注释)
 在将本代码放入控制台前,
 可以先放至代码区运行试试效果,
 觉得ok后再放到控制台运行! 
*/
function randomNum(minNum, maxNum) {
    switch (arguments.length) {
        case 1:
            return parseInt(Math.random() * minNum + 1, 10);
            break;
        case 2:
            return parseInt(Math.random() * (maxNum - minNum + 1) + minNum, 10);
            break;
        default:
            return 0;
            break;
    }
};
var y=2;
var lasty=2;
var zoom=256;/*必须小于1024!!!否则后果自负 */

async function o(){
for(let x=0;x<=zoom;x++){
    lasty=3;/*这个也可以更改)))影响似乎不大)))*/
    for(let z=0;z<=zoom;z++){
        for(let y=0;y<=9;y++){
            voxels.setVoxelId(x,y,z,0)
        }
        y=lasty;
        if(y<4){
            y=5
        }
        if(x!==0){
            for(let y1=0;y1<=32;y1++){/*根据地图y坐标改! */
                if(voxels.getVoxelId(x-1,y1,z)==127||voxels.getVoxelId(x-1,y1,z)==135){
                    if(z==0){
                        y=y1;
                        if(y<6){/*这个if分支里面的数字都可以根据个人喜好更改 */
                            y+=randomNum(-1,3)
                        }else if(y>17){/*这里的数字关系到生成地形的平均高度! */
                            y+=randomNum(-3,1)
                        }else{
                            y+=randomNum(-1,2)
                        }
                    }else{
                        for(let y2=0;y2<=32;y2++){/*同上) */
                            if(voxels.getVoxelId(x,y2,z-1)==127||voxels.getVoxelId(x,y2,z-1)==135){
                                y=(y1+y2)/2-1;
                                if(y<8){/*这个if分支里面的数字都可以根据个人喜好更改 */
                                    y+=randomNum(0,3);
                                    if(y<3){
                                        y+=randomNum(0,3)
                                    }
                                }else if(y>17){/*这里的数字关系到生成地形的平均高度! */
                                    y+=randomNum(-3,1)
                                }else{
                                    y+=randomNum(-1,3)
                                }
                                if(y1==y2&&y!==y1){
                                    y=y1
                                }
                            }
                        }
                    }
                }
            }
        }else{
            if(y<6){/*6是默认的海平面高度,可以自行修改 */
                y+=randomNum(-1,3)
            }else if(y>17){/*这里的数字关系到生成地形的平均高度! */
                y+=randomNum(-3,1)
            }else{
                y+=randomNum(-1,3)
            }
        }
        if(y<2){
            y=2
        }else if(y>28){/*这里的数字关系到生成地形的最高高度! */
            y=28
        }
        if(y>6){/*6是默认的海平面高度,可以自行修改 */
            voxels.setVoxelId(x,y,z,127);
            for(let y1=y-1;y1>=0;y1--){
                voxels.setVoxelId(x,y1,z,125)
            }
            voxels.setVoxelId(x,6,z,135)/*6是默认的海平面高度,可以自行修改 */
        }
        /*else if(y==6){6是默认的海平面高度,可以自行修改
            voxels.setVoxelId(x,y,z,135);
            for(let y1=y-1;y1>=0;y1--){
                voxels.setVoxelId(x,y1,z,125)
            }
        }*/
        else{
            y+=randomNum(0,3);/*删掉了可能会出现一片喵…… */
            if(y>6){/*6是默认的海平面高度,可以自行修改 */
                y=6
            }
            for(let y1=y;y1<=6;y1++){/*6是默认的海平面高度,可以自行修改 */
                voxels.setVoxelId(x,y1,z,3喵)
            }
            voxels.setVoxelId(x,6,z,3喵);/*6是默认的海平面高度,可以自行修改 */
            voxels.setVoxelId(x,y-1,z,135);
            for(let y1=y-2;y1>=0;y1--){
                voxels.setVoxelId(x,y1,z,125)
            }
        }
        await sleep(1);
        lasty=y;
    }
    world.say(x+'/'+zoom);
    await sleep(1);
};

}
o()

效果展示:box3.codemao.cn/e/0b1dc159ec3cb20f5049

点赞0


评论


AokenAoken

ddd

点赞0


评论


幻境孤影幻境孤影

地形凹凸不平的

点赞0


评论


_HHHHHHHHHH__HHHHHHHHHH_

ddd)

点赞0


评论


锦衣侠客锦衣侠客

ddd

点赞0


评论


Star_Ink_sansStar_Ink_sans

ddd

点赞0


评论