【问题标题】:screeps: conditions won't work - cluelessscreeps:条件行不通 - 无能为力
【发布时间】:2015-01-11 23:30:18
【问题描述】:

所以我一直在尝试这个来自动生成 Creeps 占总生存小兵的百分比。 但是,当我运行它时,它只是继续产卵收割机,即使 console.log 返回预期结果,也完全忽略了条件。

现在我对出了什么问题一无所知

//creepManager.creations() == counts total creeps and spawns creeps in function of total
    var spawnCreep = require('spawnCreep');
    var counter = require('counter');
    exports.creations=function(){

    if(  counter.guardCount()/counter.totalCount()<0.5 && counter.harvesterCount()>1){

        spawnCreep.guard();

    } else if (counter.harvesterCount()/counter.totalCount()<0.3){

        spawnCreep.harvester();

    } else if(counter.builderCount()/counter.totalCount()<0.2){

        spawnCreep.builder();
    } else {
        spawnCreep.guard(); //default
    }
};  // 5guards, 3harvesters, 2 builder per 10CREEPS`

(spawnCreep 是另一个跟踪爬行者如何构建的模块)

【问题讨论】:

  • 你的柜台是什么样子的?你在检查内存吗?即使生物已经死了,内存也会将生物保留在其中,并且其中还有排队的生物,它们可能永远不会被构建(取决于您的代码)。我有类似的设置,并且有类似的问题。但是我让它们运行正常,但过了一段时间它们不再产生......
  • 我们首先需要知道计数器方法在做什么。

标签: javascript screeps


【解决方案1】:

我在旧代码中做了类似的事情:

function allocateResources() {
    var counts = {guard : 0, healer : 0}
    for (var name in Game.creeps) { 
        if (name.indexOf("guard") > -1) {
            counts["guard"]++;
        } else if (name.indexOf("builder") > -1) {
            counts["builder"]++;
        }
        // ...
        counts["total"]++;
    }

    if (counts["guard"] / (counts["total"] + 1) < 0.51) {
       spawnCreep("guard"); 
    } else if (counts["builder"] / (counts["total"] + 1) < 0.34) {
       spawnCreep("builder");
    } 
    // ...
}

您应该确保避免被零除,也许这就是您的错误。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-01
    • 2018-05-21
    相关资源
    最近更新 更多