找到受损的Creeps(或如何调试)

时间:2014-11-21 21:31:02

标签: javascript screeps

我试图编写治疗师蠕变程序。 简单的任务:

  1. 发现受损的蠕变。
  2. 治愈受损的蠕动。
  3. 如果没有损坏 发现了小兵,回到家里(硬编码的Spawn1)
  4. 这是我的代码(我也试过Game.CREEPS的选项,但效果相同):

    module.exports = function (creep) {
        var damagedCreeps = creep.room.find(Game.MY_CREEPS, function(chr){return chr.hits < chr.hitsMax;});
        if (damagedCreeps.length > 0){
            creep.moveTo(damagedCreeps[0]);
            creep.heal(damagedCreeps[0]);
        } else {
            creep.moveTo(Game.spawns.Spawn1);
        }
    };
    

    这是我的小兵(按创作顺序):

    1. Harvester1(点击数:300,点击率:300),
    2. Harvester2(点击数:300,点击率:300),
    3. Guard1(点击数:190,点击率:400),
    4. Healer1(点击数:400,点击率:400),
    5. Harvester3(点击率:300,点击率:300)。
    6. 收割机正在做他们的事情,警卫正在做他的事情&#34; Healer1&#34;跟随&#34; Harvester1&#34;。

      我认为我拼错了点击并点击了Max并没有注意到它但是在控制台中我得到了:

      > Game.creeps.Harvester1.hits
      < 300
      > Game.creeps.Harvester1.hitsMax
      < 300
      

      我唯一想到的是&#39; chr&#39;参数包含除creep对象之外的其他内容。

      我试过了:

      1. consol.log(chr)但游戏中的控制台没有出现任何内容。
      2. &#39; Game.creeps.Healer1.memory.a = CHR; Game.creeps.Healer1.a = CHR;&#39;并在控制台键入&#39; Game.creeps.Healer1.memory.a&#39; /&#39; Game.creeps.Healer1.a&#39;但未定义。
      3. 在Chrome的js控制台中:var a =&#39; Healer1&#39 ;; a.hits&lt; a.hitsMax ;.得到了“假”&#39;在第二个。
      4. 这是一个游戏错误还是我错过了什么?

1 个答案:

答案 0 :(得分:5)

詹姆斯是对的。你可以使用

找到受伤的士兵
var wounded = creep.room.find( Game.MY_CREEPS, {
    filter: function(object) {
        return ( object.hits < object.hitsMax );
    } } );

现在你可以检查你是否有任何东西,然后像

那样走过清单
if( wounded.length ) {
    // Care for any wounded soldiers
}

for( var i = 0; i < wounded.length; ++i ) {
    // Do something to wounded[i]
}