用户:
13661555450查看: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.代码更短小 2.可控性更强 3.更好看 本代码由23332808编写再打个广告: https://box3.codemao.cn/p/box3-minecraft作者发现这是张好图,名字叫minecraft,大家快去玩!!
点赞0
评论