1

所以我一直在 Robocode 中研究这个机器人,我希望它根据命令 getEnergy() 的结果来改变它的颜色

但是,我似乎无法让它工作。我创建的java代码如下:

    getEnergy();
    if(getEnergy()>=90)
    {
        setBodyColor(new Color(0, 255, 0));
    }if(getEnergy()<90 && getEnergy()>=40){
        setBodyColor(new Color(0, 0, 255)); 
    }if(getEnergy()<40){
        setBodyColor(new Color(255, 0, 0)); 
    }

我也试过这个:

    getEnergy();
    if(getEnergy()>=90)
    {
        setBodyColor(new Color(0, 255, 0));
    }else if(getEnergy()>=40){
        setBodyColor(new Color(0, 0, 255)); 
    }else if(getEnergy()<40){
        setBodyColor(new Color(255, 0, 0)); 
    }

我究竟做错了什么?

4

1 回答 1

2

这些代码片段看起来很合理。(虽然第一行getEnergy();什么也没做。)关于为什么你可能看不到颜色变化,我想到了两件事。

  • 这段代码实际上是在每个滴答声中执行的吗?例如,仅在run()方法的顶部使用 this 是不够的,因为它仅在每轮开始时调用。它需要在run()调用execute()每个刻度的循环中,或者在经常执行的东西中,例如onScannedRobot(). 您可以添加System.out.println(getTime())到这些块并观看输出控制台以帮助进行故障排除。
  • IIRC,Robocode 设置中有一个选项可以允许或禁止机器人在比赛期间改变颜色。默认情况下它可能被禁用。
于 2013-06-25T19:59:25.330 回答