Робокод - как рассчитать выигранные раунды в конце битвы?

Я думал, что смогу подсчитать количество выигранных раундов, вычтя количество смертей из числа раундов, но мои счетчики не увеличиваются:

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 ответ

Решение

Таким образом, новый экземпляр создается для каждого раунда. Создание статических полей делает их переменной класса, которая также используется каждым экземпляром. Вы можете найти больше информации здесь.

Другие вопросы по тегам