小编Tha*_*omb的帖子

寻找具有最高能量尖锐的结构

所以我有一个叫做creep的角色storer,应该从容器中获取能量并将其带到存储器中.然而,目前,它发现容器最接近Path并且能量水平大于某个阈值,因此每次矿工重新装满容器时它不会在那里等待几个小时.

storer遇到的问题是,如果我降低阈值,将会来回运行相同的容器,忽略房间内的任何容器并让它们填满.
提高门槛将使他坐下来等待太久,没有给他足够的时间来清空容器,因此存储器几乎一直都是空的.

我需要一种方法让蠕变来确定具有最高能量的容器并从那里填满.

这是运行的代码:

if ((source = creep.pos.findClosestByPath(FIND_STRUCTURES, {filter: (s) => {return (s.structureType == STRUCTURE_CONTAINER && s.store[RESOURCE_ENERGY] >= 150)}})) != undefined) {
    if (creep.withdraw(source, RESOURCE_ENERGY) == ERR_NOT_IN_RANGE) {
        creep.moveTo(source);
    }
}
Run Code Online (Sandbox Code Playgroud)

编辑:这是我尝试的代码,但我觉得它使用了太多的CPU能力,可以更好的方式完成:

for (let i = 2000; i>=0; i=i-100) {
    source = creep.pos.findClosestByPath(FIND_STRUCTURES, {filter: (s) => {return s.structureType == STRUCTURE_CONTAINER && s.store[RESOURCE_ENERGY] >= i}});
        if (source != undefined) {
            break;
        }
    }
    if (creep.withdraw(source, RESOURCE_ENERGY) == ERR_NOT_IN_RANGE) {
        creep.moveTo(source);
    }
}
Run Code Online (Sandbox Code Playgroud)

javascript algorithm loops screeps

2
推荐指数
1
解决办法
3110
查看次数

标签 统计

algorithm ×1

javascript ×1

loops ×1

screeps ×1