猫史档案馆


又一个地形生成器

用户:1366155545013661555450查看:3 回复:6 评论:3 创建时间:2022-09-25T15:50:32


console.clear()
b=[]
function club(sx, sy, sz, xsize, ysize, zsize,vox){
    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)
    }}}
}

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 echs(x,x1,x2,y,y1,y2){
    a=(y1-y2-(y-y1)*(x1-x2)/(x-x1))/((x1*x1-x2*x2)-(x1-x2)*(x+x1))
    b=(y-y1-a*(x*x-x1*x1))/(x-x1)
    c=y-a*x*x-b*x
    return [a,b,c]
}
function scopy_list_plus(list){
    turn=[]
    for(i=0;i<list.length;i++){buffer=[]
        for(b=0;b<list[i].length;b++){buffer.push(list[i][b])}turn.push(buffer)}
    return turn
}
function block1(x2,z2,size,a,b,c,d){
    corner=[a,b,c,d]
    x1=echs(x2,x2+size,x2+size*2,corner[0],corner[2],corner[0])
    x3=echs(x2,x2+size,x2+size*2,corner[1],corner[3],corner[1])
    block={}
    for(x=x2;x<x2+size;x++){
        a=echs(z2,z2+size,z2+size*2,x1[0]*x*x+x1[1]*x+x1[2],x3[0]*x*x+x3[1]*x+x3[2],x1[0]*x*x+x1[1]*x+x1[2])
        for(z=z2;z<z2+size;z++){
            b=a[0]*z*z+a[1]*z+a[2]
            club(x,0,z,1,Math.round(b)-4,1,"stone")
            club(x,Math.round(b)-4,z,1,4,1,"dirt")
            club(x,Math.round(b),z,1,1,1,"grass")
        }
    }}
var low=10
var change=30
var size=16
var tree_low=80
var tree_hight=120
function tree(x,z){
    for(var y=low;y<low+change+1;y++){
        if(voxels.name(voxels.getVoxel(x,y,z))=="grass" && voxels.getVoxel(x,y+1,z)==0){
            if(voxels.getVoxel(x-2,y+3,z)==0 && voxels.getVoxel(x+2,y+3,z)==0 && voxels.getVoxel(x,y+3,z+2)==0 && voxels.getVoxel(x,y+3,z-2)==0){
                club(x-2,y+3,z-2,5,2,5,"green_leaf")
                club(x-1,y+5,z-1,3,1,3,"green_leaf")
                club(x-1,y+6,z,3,1,1,'green_leaf')
                club(x,y+6,z-1,1,1,3,'green_leaf')
                club(x,y+1,z,1,5,1,"wood")
                break
            }else{
                break
            }

        }
    }
}
async function world1(){
a=[]
c=[]
d=[]
e=[]
for(x=0;x<128/size;x++){b=[]
    for(z=0;z<128/size;z++){b.push(randint(low,low+change))}a.push(b)}
x=0
z=0
for(m=0;m<128/size-1;m++){
    for(n=0;n<128/size-1;n++){buffer=scopy_list_plus(a)
    block1(x,z,size,a[x/16][z/16],a[x/16][z/16+1],a[x/16+1][z/16],a[x/16+1][z/16+1])
    a=scopy_list_plus(buffer)
x-=size
}x+=size
z=0}for(i=tree_low;i<tree_hight;i++){tree(randint(0,128),randint(0,128))}}
world1()


回复

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

那有人就要问了,这个地形生成器和伊子的比有社么优势呢? 1.代码更短小 2.可控性更强 3.更好看 本代码由23332808编写再打个广告: https://box3.codemao.cn/p/box3-minecraft作者发现这是张好图,名字叫minecraft,大家快去玩!!

点赞0


评论


1366155545013661555450

center_image

点赞0


评论


1366155545013661555450

顶顶顶

点赞0


评论


屑怪盗屑怪盗

愚公又有可以移的了

点赞0


评论


1366155545013661555450

顶顶顶

点赞0


评论


呆若木鸟呆若木鸟

python

点赞0


评论