Итак, у меня есть эта роль ползучести, называемая storer
, которая должна собирать энергию из контейнеров и выводить ее на хранение. Однако в настоящее время он находит ближайший контейнер по пути и с уровнем энергии, превышающим определенный порог, так что он не дожидается там в течение нескольких часов каждый раз, когда шахтер заправляет контейнер.Поиск структуры с наивысшей энергией screeps
Проблема в том, что если я опустил порог, 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);
}
}
EDIT: Вот код, который я попробовал, но я чувствую, что она использует слишком много ресурсов процессора и может быть сделано в лучшем виде:
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);
}
}
Вы «чувствуете себя», используя слишком много CPU? Или вы профилировали его и определили, что на самом деле он использует слишком много CPU? –
Мне удалось уменьшить его использование процессора, уменьшив количество итераций, т. Е. Уменьшилось на 100, а не на 1. Но да, его по-прежнему используют больше мощности процессора, а в настоящее время мощность процессора - это то, чего мне действительно не хватает в игра – ThaBomb