1

我在 Robocode 中扩展了一个开源的 AdvancedRobot。该机器人使用 setFire 进行射击,但从不调用 execute(未出现在代码中)。我想知道怎么可能仍然可以拍摄(确实如此)。SetFire 的文档说:此调用立即返回,并且在您调用 execute() 或采取执行的操作之前不会执行。 我不知道“采取行动执行”是什么意思。更好的是,“行动”是什么意思?

我的主要目标是在每次发射子弹时做一些事情,所以我已经覆盖了 fire 和 fireBullet 方法,但这不适用于“set”方法(因为可以多次调用它,oververiding the previous order每次只在您“调用 execute() 或采取执行的操作”时才进行拍摄)。所以,也许有办法。

无论如何,如果有人可以帮助解决这些问题,我会很高兴。

非常感谢。

4

1 回答 1

0

这个问题肯定是旧的,但供将来参考:

执行的动作基本上是“机器人可以做的不以set”开头的东西,比如fireor ahead,等等。调用其中任何一个也将执行。

如果你想在每次发射子弹时做一些特别的事情,你可以使用以下方法:

if (setFireBullet(someBulletPower) != null) {
    // you only land here when a REAL bullet is fired,
    // that is, when the gun heat was down.
}

当然,这仅在您正在扩展的开源机器人正在执行时才有效(它似乎正在这样做,尽管我无法确定它是否在不知道代码的情况下每轮都这样做)。

于 2018-01-07T19:04:33.810 回答