【发布时间】:2016-11-15 23:19:13
【问题描述】:
所以我有一个名为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);
}
}
编辑:这是我尝试过的代码,但我觉得它使用了太多的 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);
}
}
【问题讨论】:
-
您“感觉”它使用了过多的 CPU?还是您对其进行了分析并确定它实际上使用了过多的 CPU?
-
我设法通过减少迭代次数来减少它的 cpu 使用率,即它减少了 100 而不是 1。但是是的,它仍然消耗更多的 CPU 功率,而目前的 CPU 功率就是我的'我在游戏中真的很缺乏
标签: javascript algorithm loops screeps