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

mis*_*ish 2 javascript screeps

我试图编写治疗师蠕动.简单的任务:

  1. 找到受损的蠕变.
  2. 治愈受损的蠕动.
  3. 如果没有找到受损的小兵,请回家(硬编码的Spawn1)

这是我的代码(我也试过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);
    }
};
Run Code Online (Sandbox Code Playgroud)

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

  1. Harvester1(点击数:300,点击率:300),
  2. Harvester2(点击数:300,点击率:300),
  3. Guard1(点击数:190,命中率:400),
  4. Healer1(点击数:400,命中率:400),
  5. Harvester3(点击率:300,点击率:300).

收割机正在做他们的事情,警卫正在做他的事情,"Healer1"跟随"Harvester1".

我以为我拼错了hits和hitsMax而没有注意到它但是在控制台中我得到了:

> Game.creeps.Harvester1.hits
< 300
> Game.creeps.Harvester1.hitsMax
< 300
Run Code Online (Sandbox Code Playgroud)

我唯一想到的是'chr'参数包含的东西不是creep对象.

我试过了:

  1. consol.log(chr)但游戏中没有出现任何控制台.
  2. "Game.creeps.Healer1.memory.a = CHR; Game.creeps.Healer1.a = CHR;" 并在控制台键入'Game.creeps.Healer1.memory.a'/'Game.creeps.Healer1.a'但未定义.
  3. 在Chrome的js控制台中:var a ='Healer1'; a.hits <a.hitsMax;.第二个得到'假'.

这是游戏错误还是我错过了什么?

小智 5

詹姆斯是对的.你可以找到你受伤的士兵

var wounded = creep.room.find( Game.MY_CREEPS, {
    filter: function(object) {
        return ( object.hits < object.hitsMax );
    } } );
Run Code Online (Sandbox Code Playgroud)

现在你可以检查你是否有任何东西,然后走过列表就好了

if( wounded.length ) {
    // Care for any wounded soldiers
}
Run Code Online (Sandbox Code Playgroud)

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