gpt4 book ai didi

javascript - 查找损坏的 Creeps(或如何调试)

转载 作者:行者123 更新时间:2023-11-29 17:01:35 25 4
gpt4 key购买 nike

我曾尝试对治疗师蠕变进行编程。简单任务:

  1. 找到受损的 creep。
  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);
}
};

这是我的 creep(按创建顺序):

  1. Harvester1(命中:300,hitsMax:300),
  2. Harvester2(命中:300,命中最大值:300),
  3. Guard1(命中:190,hitsMax:400),
  4. Healer1(命中:400,hitsMax:400),
  5. Harvester3(命中:300,hitsMax:300)。

收割者在做他们的事,守卫在做他的事,“Healer1”跟随“Harvester1”。

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

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

我唯一想到的是“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;.第二个得到“假”。

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

最佳答案

詹姆斯是对的。你可以找到你受伤的士兵使用

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]
}

关于javascript - 查找损坏的 Creeps(或如何调试),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27070712/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com