【问题标题】:Game Screeps - creep.room.find(Game.CONSTRUCTION_SITES); not workingGame Screeps - crawl.room.find(Game.CONSTRUCTION_SITES);不工作
【发布时间】:2015-01-20 00:17:29
【问题描述】:

我有教程中的以下代码,除了在模拟模式下它不起作用..

if(creep.memory.role == 'builder') {

    if(creep.energy === 0) {
        creep.moveTo(Game.spawns.Spawn1);
        Game.spawns.Spawn1.transferEnergy(creep);
    }
    else {
        var targets = creep.room.find(Game.CONSTRUCTION_SITES);
        if(targets.length) {
            creep.moveTo(targets[0]);
            creep.build(targets[0]);
        }
    }
}

在控制台打印“目标”的结果,响应未定义。 谁能解释一下“CONSTRUCTION_SITES”常量是如何工作的以及如何在房间内找到它们?

【问题讨论】:

    标签: javascript screeps


    【解决方案1】:

    代码在我看来是正确的,看来您实际上没有为构建者设置任何构造。例如,您是否使用左侧的“Construct”菜单来建造道路?

    【讨论】:

    • 感谢您的快速回复。确实解决了我的问题。不知道我必须使用 Construct 菜单。谢谢!
    • 没问题!你能接受这个答案是正确的吗?
    • 好的,谢谢!我对 screeps 很兴奋,等不及完整的游戏发布了 :)
    【解决方案2】:

    在 Screeps 中 console.log() 总是打印 undefined。在 undefined 之前的行中,您可以找到打印值:

    > console.log(Game)
    [hh:mm:ss] [object Object]
    < undefined
    

    【讨论】:

    • 在脚本编辑器而不是控制台中使用 console.log() 时,如果可以打印值,我将不会打印 undefined。
    【解决方案3】:

    我不知道这个问题是否已经得到解答,或者只是游戏的语法发生了变化,这就是你最初以这种方式编写它的原因,但这段代码适用于你正在做的事情:

    var targets = creep.room.find(FIND_CONSTRUCTION_SITES);
    

    【讨论】:

      猜你喜欢
      • 2015-01-26
      • 2015-01-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-13
      • 2014-04-03
      • 1970-01-01
      • 2014-05-29
      相关资源
      最近更新 更多