猫史档案馆


新型河流代码

用户:1366155545013661555450查看:4 回复:2 评论:4 创建时间:2022-11-12T21:32:31


console.clear()
function cube(vox, sx, sy, sz, xsize, ysize, zsize){
    var xend = sx+xsize
    var yend = sy+ysize
    var zend = sz+zsize
    for(var x=sx;x<xend;x++){
    for(var y=sy;y<yend;y++){
    for(var z=sz;z<zend;z++){
        voxels.setVoxel(x,y,z,vox)
    }}}
}
for(y=9;y<21;y++){cube("dirt",0,y,0,256,1,256)}

river_list2=[]
async function river(x,y,z,list,circle,long,corner){
    rvr=[]
    x_river=x
    z_river=z
    corner_river=corner
    circle_river=circle
    for(i=0;i<long;i++){
        circle1=circle_river
        for(a=0;a<list.length;a++){
            circle1+=list[a]
            cylinder("air",x_river,y+a+1,z_river,circle1,1)
        }circle1=circle_river+2
        y_change=y
        
        while(circle1>=3){
            cylinder("sand",x_river,y_change,z_river,circle1,1)
            circle1-=1
            y_change-=1
        }rvr.push([x_river,z_river,circle_river])
        length=randint(1,circle_river)
        x=length*Math.abs(Math.cos(corner_river%90))
        z=length*Math.abs(Math.sin(corner_river%90))
        bx=x_river
        bz=z_river
        if(corner_river<=90){
            x_river+=x
            z_river+=z
        }else if(corner_river<=180){
            x_river+=x
            z_river-=z
        }else if(corner_river<=270){
            x_river-=x
            z_river+=z
        }else{
            x_river-=x
            z_river-=z
        }x_river=Math.round(x_river)
        z_river=Math.round(z_river)
        if(x_river-bx<-7||x_river-bx>7||z_river-bz<-7||z_river-bz>7){
            x_river=bx
            z_river=bz
        }
        corner_river+=randint(0,10)-5
        if(corner_river<=10){corner_river=10}
        else if(corner_river>=350){corner_river=350}
        if(!(0<x_river&&x_river<250&&0<z_river&&z_river<250)){
            break
        }
        await sleep(1)
        }
        river_list2.push(rvr)}
function water(y,list){
    for(a in list){
        for(b in list[a]){
            y_change=y
            circle1=list[a][b][2]
        while(circle1>=3){
            cylinder("water",list[a][b][0],y_change,list[a][b][1],circle1,1)
            circle1-=1
            y_change-=1
        }}}}
function randint(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;
    }
}function cylinder(vox, cx, cy, cz, radius, height){
    let xend = cx+radius
    let yend = cy+height
    let zend = cz+radius
    for(let x=cx-radius; x<=xend; x++){
    for(let z=cz-radius; z<=zend; z++){
        let dx = x-cx;
        let dz = z-cz;
        if(Math.round(Math.sqrt(dx*dx+dz*dz)) <= radius){
            for(let y=cy; y<yend; y++){
                voxels.setVoxel(x,y,z,vox)
            }
        }
    }}
}
async function world1(){
rivery=15//水平面
rivery2=21//喵地高度
river_list=[]
for(i=rivery+1;i<rivery2;i++){
    river_list.push(randint(1,2))
}
for(time=0;time<randint(3,5);time++){
    river(randint(0,128),rivery,randint(0,128),river_list,randint(3,7),randint(100,200),randint(10,350))
    await sleep(1000)
}
water(rivery,river_list2)
for(x=0;x<257;x++){for(z=0;z<257;z++){for(y=0;y<rivery2+1;y++){if(voxels.getVoxel(x,y,z)!=0&&voxels.name(voxels.getVoxel(x,y,z))!="sand"&&voxels.name(voxels.getVoxel(x,y,z))!="water"&& voxels.getVoxel(x,y+1,z)==0){voxels.setVoxel(x,y,z,'grass')}}}}
}
world1()


回复

上一页1 页 / 共 1下一页
1366155545013661555450

center_image

点赞0


评论


小屑鹿小屑鹿

你这河不对劲🤔:

center_image

点赞0


评论