Робокод - как рассчитать выигранные раунды в конце битвы?
Я думал, что смогу подсчитать количество выигранных раундов, вычтя количество смертей из числа раундов, но мои счетчики не увеличиваются:
public void onRoundEnded(RoundEndedEvent event)
{
roundCount++;
}
public void onDeath(DeathEvent event)
{
deathCount++;
}
Не получать никаких ошибок компиляции или каких-либо других ошибок в журнале. Когда я выводю переменные в журнал в событии onBattleEnded, вывод (после 100 раундов):
roundCount=1
deathCount=0
Полный код ниже:
public class AB extends AdvancedRobot
{
private int deathCount;
private int roundCount;
public void run()
{
while(true)
{
ahead(100);
turnGunRight(360);
back(100);
turnGunRight(360);
}
}
public void onScannedRobot(ScannedRobotEvent e)
{
fire(1);
}
public void onHitByBullet(HitByBulletEvent e)
{
back(10);
}
public void onHitWall(HitWallEvent e)
{
back(20);
}
public void onRoundEnded(RoundEndedEvent event)
{
roundCount++;
}
public void onDeath(DeathEvent event)
{
deathCount++;
}
public void onBattleEnded(BattleEndedEvent event)
{
System.out.println("roundCount=" + roundCount);
System.out.println("deathCount=" + deathCount);
}
}
Используемая версия Robocode: 1.9.2.6.
1 ответ
Решение
Таким образом, новый экземпляр создается для каждого раунда. Создание статических полей делает их переменной класса, которая также используется каждым экземпляром. Вы можете найти больше информации здесь.