首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >爬行建造者不收集能量

爬行建造者不收集能量
EN

Stack Overflow用户
提问于 2016-11-15 21:02:59
回答 1查看 859关注 0票数 2

我修改了一点我的role.builders.js文件,让我的爬虫第一次检查,看看产卵是否有能量,如果它不去收获能量建设,否则从产卵。以下是我所拥有的:

代码语言:javascript
复制
var roleBuilder = {

    /** @param {Creep} creep **/
    run: function(creep) {

        if(creep.memory.building && creep.carry.energy == 0) {
            creep.memory.building = false;
            creep.say('harvesting');
        }
        if(!creep.memory.building && creep.carry.energy == creep.carryCapacity) {
            creep.memory.building = true;
            creep.say('building');
        }

        if(creep.memory.building) {
            var targets = creep.room.find(FIND_CONSTRUCTION_SITES);
            if(targets.length) {
                if(creep.build(targets[0]) == ERR_NOT_IN_RANGE) {
                    creep.moveTo(targets[0]);
                }
            }
        }
        else 
        {
            if(!Game.spawns['MySpawn'].energy)
            {
               var sources = creep.room.find(FIND_SOURCES);
                if(creep.harvest(sources[0]) == ERR_NOT_IN_RANGE) 
                {
                    creep.moveTo(sources[0]);
                }
            }
            else
            {
                if(creep.withdraw(Game.spawns['MySpawn'],RESOURCE_ENERGY) == ERR_NOT_IN_RANGE)
                {
                    creep.moveTo(Game.spawns['MySpawn']);
                }
            }
        }
    }
};

module.exports = roleBuilder;

对我错过了什么有什么建议吗?建造者被冻结在原地,尽管他们说他们要转移到产卵处。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-11-23 10:40:15

正如您已经注意到的那样,如果您使用预置变量,这样的东西工作得更好。

为了完整起见,我将重新发布您的解决方案。但您不需要else部分:

代码语言:javascript
复制
var spns = creep.room.find(FIND_MY_SPAWNS);
if(creep.withdraw(spns[0], RESOURCE_ENERGY) == ERR_NOT_IN_RANGE) {
    creep.moveTo(spns[0]);
}

如果希望构建器只使用一个特定的派生程序,也可以使用它的ID:

代码语言:javascript
复制
var spwn = Game.getObjectById("42ef9e3288f108fe6e60ef23");
if(creep.withdraw(spwn, RESOURCE_ENERGY) == ERR_NOT_IN_RANGE) {
    creep.moveTo(spwn);
}

但是无论如何,我在你的代码中还注意到了一件事!你告诉你的建设者去采矿,如果目前有没有能源在产卵。

代码语言:javascript
复制
if(!Game.spawns['MySpawn'].energy) { ... }

问题是,那里几乎总是有一些能量,因为只要你的能量总量低于300,你的卵子就会产生1股能量!因此,你的建设者最多会去收获one蜱,然后转过来从产卵物中提取它--因为现在那里至少有1种能量。

下一个问题是,您将遇到一个问题,您不能建立新的爬虫,因为您的建设者总是获取您的所有能量,一个可以产生!

为了弥补这两个问题,请尝试如下所示:

代码语言:javascript
复制
var spwn = Game.getObjectById("42ef9e3288f108fe6e60ef23");
var secureEnergy = 300;
if(spwn.energy > secureEnergy) { ... }

secureEnergy设置为高于您平均需要生成的蠕变量(至少比您最重要的收割机爬行器所需的还要高!)例如,一个基本的[WORK,CARRY,MOVE]爬行需要250个能量,而你的建造者可以携带50个能量,所以你可能想让你的建造者只提取它的50能量时,至少有300 secureEnergy在产卵。这样,你总能生出一个新的变态。这对你来说有意义吗?

我希望我能帮你一个bit...and玩得开心!)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40619635

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档