用户:
yee089查看:11 回复:10 评论:11 创建时间:2022-03-01T10:48:14
我解释不清,上代码吧))
const fx = [new Box3Vector3(-1,0,0),new Box3Vector3(0,0,-1),new Box3Vector3(0,0,1),new Box3Vector3(1,0,0) ]
console.clear();
async function bfs(x,y,z){
var queue = [new Box3Vector3(0,0,0),new Box3Vector3(0,0,0),new Box3Vector3(0,0,0)];
queue.pop();
queue.pop();
queue.pop();
var stpq=[0,0,0];
stpq.pop();stpq.pop();
queue.push(new Box3Vector3(x,y,z));
world.say(x + ' ' + y +' ' + z)
while(queue.length > 0){
var now = queue[0];
queue.shift();
var stp = stpq[0];
stpq.shift();
for(var i = 0; i < 4; i++){
var nowx = now.x+fx[i].x;
var nowy = now.y+fx[i].y;
var nowz = now.z+fx[i].z;
if(voxels.getVoxel(nowx,nowy,nowz) == voxels.id('grass')){
if(stp < 30 && Math.floor( Math.random() * 1000) % 2 == 0){
voxels.setVoxel(nowx,nowy,nowz,'yellow_grass');
queue.push(new Box3Vector3(nowx,nowy,nowz));
stpq.push(stp+1);
}
}
}
await sleep(200);
}
}
var flag = true;
for(let i = 0; i < 128 && flag; i++){
for(var j = 0; j < 128 && flag; j++){
for(var k = 0; k < 128 && flag; k++){
if(voxels.name(voxels.getVoxelId(i,j,k)) == 'yellow_grass'){
console.log(i + ' ' + j +' ' + k);
bfs(i,j,k);
flag = false;
}
}
}
}
a
墨染云天imgsrc="https://static.codemao.cn/emoji/codemao/%E7%BC%96%E7%A8%8B%E7%8C%AB_%E7%82%B9%E8%B5%9E.gif"alt="emotion_编程猫_点赞"
点赞0
评论
yee089如果你读懂了这些代码,其实很有用,比如这段铺地板代码:
const fx = [new Box3Vector3(-1,0,0),new Box3Vector3(0,0,-1),new Box3Vector3(0,0,1),new Box3Vector3(1,0,0) ];
async function bfs(x,y,z){
var queue = [new Box3Vector3(0,0,0),new Box3Vector3(0,0,0),new Box3Vector3(0,0,0)];
queue.pop();
queue.pop();
queue.pop();
var stpq=[0,0,0];
stpq.pop();stpq.pop();
queue.push(new Box3Vector3(x,y,z));
world.say(x + ' ' + y +' ' + z);
var voxel = 1;
while(queue.length > 0){
var now = queue[0];
queue.shift();
var stp = stpq[0];
stpq.shift();
for(var i = 0; i < 4; i++){
var nowx = now.x+fx[i].x;
var nowy = now.y+fx[i].y;
var nowz = now.z+fx[i].z;
if(voxels.getVoxel(nowx,nowy,nowz) == voxels.id('air')){
if(stp < 100 ){
await sleep(Math.random() * 50);
voxels.setVoxelId(nowx,nowy,nowz,voxels.id('stone'));
queue.push(new Box3Vector3(nowx,nowy,nowz));
stpq.push(stp+1);
}
}
}
}
console.log('finish');
}
bfs(40,9,79)
虽然你可以写出一些更简单的,但本质思想相同,而且优点是在于无论什么鬼样子的地板,它都可以铺(改造后可以铺3维的地板,同理还可以判封闭)
点赞0
评论