猫史档案馆


开始研究算法

用户:全能代码师全能代码师查看:9 回复:5 评论:9 创建时间:2022-04-07T20:38:26


开始研究战术兵团的寻路算法,屑搬砖不给我是吧()

我自己造还不行?造完立即公开


回复

上一页1 页 / 共 1下一页
叶光_x叶光_x

。。。

点赞0


评论


银狐残影银狐残影

会长大大,求您了带我一个吧

点赞0


评论


yee089yee089

。bfs了解一下?

点赞0


评论


梁桂琪梁桂琪

666

点赞0


评论


yee089yee089

啊哈哈哈,全能你的饭碗我抢走啦啊哈哈哈或或(center_image(为了方便,这里的兵我用的是‘zero’方块))

world.onPlayerJoin(({entity})=>{
    entity.player.canFly=true;
})
const dir =  [new Box3Vector3(-1,0,0),new Box3Vector3(0,0,-1),new Box3Vector3(0,0,1),new Box3Vector3(1,0,0) ];
var voxel=voxels.id('zero')
var a=[];
a[voxels.id('grass')] = 1;
a[voxels.id('green_leaf')]=2
a[voxels.id('stone')]=4
a[voxels.id('water')] = 114514
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.getVoxelId(nowx,nowy,nowz) == voxels.id('air')){
                if(stp+a[voxels.getVoxelId(nowx,nowy-1,nowz)] < 9){
                    queue.push(new Box3Vector3(nowx,nowy,nowz));
                    stpq.push(stp+a[voxels.getVoxelId(nowx,nowy-1,nowz)]);
                    voxels.setVoxel(nowx,nowy,nowz,'glass')
                }
           }
        }
        await sleep(1);
    }
    console.log('finishbfs');
}


for(let i  =0; i < 128; i++){
    for(let k = 0; k < 128; k++){
        if(voxels.getVoxelId(i,9,k) == voxel){
            bfs(i,9,k);
            break;
        }
    }
}

点赞2


评论