Робокод (Java): как я могу заставить своего робота менять цвет в зависимости от результата getEnergy()?

Итак, я работал над этим роботом в Robocode, и я хочу, чтобы он менял свой цвет в зависимости от результата команды getEnergy()

Тем не менее, я не могу заставить его работать. Ява код, который я создал, выглядит следующим образом:

    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)); 
    }

Что я делаю неправильно?

1 ответ

Эти фрагменты кода выглядят разумно. (Хотя первая строка getEnergy(); ничего не делает.) Две вещи приходят на ум, почему вы не видите изменения цвета.

  • Этот код на самом деле выполняется каждый тик? Например, просто иметь это в верхней части вашего run() Метод не будет достаточным, так как он вызывается только в начале каждого раунда. Это должно быть в цикле внутри run() это зовет execute() каждый тик или что-то, что выполняется часто, как onScannedRobot(), Вы могли бы добавить System.out.println(getTime()) к этим блокам и смотреть вывод консоли, чтобы помочь устранить неполадки.
  • IIRC, в настройках Robocode есть возможность разрешать или запрещать роботам менять свои цвета во время матча. Это может быть отключено по умолчанию.
Другие вопросы по тегам