用户:
yee089查看:5 回复:6 评论:5 创建时间:2022-03-03T08:00:27
const dir = [new Box3Vector3(-1,0,0),new Box3Vector3(0,0,-1),new Box3Vector3(0,0,1),new Box3Vector3(1,0,0) ];
console.clear();
var voxel = voxels.id('zero');
async function bfs(x,y,z){
let queue = [new Box3Vector3(0,0,0),new Box3Vector3(0,0,0),new Box3Vector3(0,0,0)];
queue.pop();
queue.pop();
queue.pop();
let stpq=[0,0,0];
stpq.pop();stpq.pop();
queue.push(new Box3Vector3(x,y,z));
world.say(x + ' ' + y +' ' + z);
while(queue.length > 0){
let now = queue[0];
queue.shift();
let stp = stpq[0];
stpq.shift();
for(let i = 0; i < 4; i++){
let nowx = now.x+dir[i].x;
let nowy = now.y+dir[i].y;
let nowz = now.z+dir[i].z;
if(voxels.getVoxel(nowx,nowy,nowz) == voxels.id('grass')){
if(stp < 35){
voxels.setVoxelId(nowx,nowy,nowz,voxel+stp*2+2);
queue.push(new Box3Vector3(nowx,nowy,nowz));
stpq.push(stp+1);
}
}
}
await sleep(1);
}
console.log('finishbfs');
}
bfs(90,8,90);
async function dfs(x1,y1,z1,stp){
if(stp == 35) return;
for(let i = 0; i < 4; i++){
let nowx = x1+dir[i].x;
let nowy = y1+dir[i].y;
let nowz = z1+dir[i].z;
if(voxels.getVoxel(nowx,nowy,nowz) == voxels.id('grass')){
if(stp < 36){
voxels.setVoxelId(nowx,nowy,nowz,voxel+stp*2+2);
dfs(nowx,nowy,nowz,stp+1);
}
}
await sleep(100);
}
await sleep(1000);
}
dfs(36,8,36,0)
voxels.setVoxel(36,8,36,'zero')
voxels.setVoxel(90,8,90,'zero')
world.onPlayerJoin(({entity})=>{
entity.player.canFly=true;
})
最后面的onPlayerJoin是用于测试的代码))不要管