2017-04-11 64 views
1

我想我可能是能够计算减去轮的死亡人数赢得价值回合,但我的计数器不会递增:Robocode - 如何计算在战斗结束时赢得的回合?

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

你期望它做什么?你能发表一个[Minimal,Complete和Verifiable的例子吗?](https://stackoverflow.com/help/mcve) – Koekje

+0

我预计在每轮回合结束后roundCount会递增,而deathCount每次递增机器人被杀害。当我进行100回合的战斗时,roundCount = 1和deathCount = 0。 – lepton

+0

有可能每个方法都没有被调用,这意味着问题在代码中的其他地方。你可以请你做一些快速调试,并确认他们正在被调用?只需将System.out.println(“round ended”);和System.out.println(“死”);在每个方法的顶部。 –

回答

2

因此每轮创建一个新实例。将字段设置为静态会使其成为一个类变量,并由每个实例共享。你可以找到更多的信息here