Discussion:
Invalid robot or team - Adding Robots to RobotEngine
Tom Plum
2018-03-23 11:27:32 UTC
Permalink
Hi,

I'm trying to add my own Robots to a battle via a RobotEngine.

BattlefieldSpecification battlefield = new BattlefieldSpecification(BATTLEFIELD_W, BATTLEFIELD_H);
RobotSpecification[] selectedRobots = engine.getLocalRepository("sample.TestRobot, sample.TestRobot");

BattleSpecification battleSpec = new BattleSpecification(NO_OF_ROUNDS, battlefield, selectedRobots);


Using sample robots work fine. But with my own, a BattleErrorEvent is
thrown showing "Can't load 'sample.TestRobot' because it is an invalid
robot or team.".

I've even tried copying the source code from a sample bot into my own class
to no avail.

Opening ones of the compiled .class files of a sample robot tells me it was
compiled with JDK 6. I'm currently on 9.0.1, could this be the issue? What
is the latest version that will support this?

Kind Regards,
Tom
--
You received this message because you are subscribed to the Google Groups "robocode" group.
To unsubscribe from this group and stop receiving emails from it, send an email to robocode+***@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
fnl
2018-03-25 18:51:24 UTC
Permalink
Hi Tom,

I have had a look and tried out your code with my own robot located in
C:\robocode\robots.
I ran into a minor issue with your code.

You point to the installation directory of Robocode with this statement:

RobocodeEngine engine = new RobocodeEngine(new java.io.File("*MY_ROOT*"));


You have written the My_ROOT surrounded with quote characters?!
Could this be the problem with your GameConfigurer?

If not. Perhaps you could send me a zip of your project including
everything to fnl(at)users.sourceforge.net. Then I will have a look. :-)
I am very familiar with IntellyJ (and have it installed) if that the IDE
you are using.

Best regards,
- Flemming
Post by Tom Plum
Hi,
I'm trying to add my own Robots to a battle via a RobotEngine.
This is the class, basically just the template from the docs;
package controller;
import robocode.control.*;
public class GameConfigurer {
private static final int BATTLEFIELD_W = 1000;
private static final int BATTLEFIELD_H = 1000;
private static final int NO_OF_ROUNDS = 5;
public static void startBattle() {
//Robocode Messages & Errors
RobocodeEngine.setLogMessagesEnabled(true);
RobocodeEngine.setLogErrorsEnabled(true);
// Create the RobocodeEngine
RobocodeEngine engine = new RobocodeEngine(new java.io.File("*MY_ROOT*"));
System.out.println("Running Robocode Version: " + engine.getVersion());
//Add BattleObserver To Engine
engine.addBattleListener(new BattleObserver());
//Show Robocode Battle View (GUI Window)
engine.setVisible(true);
System.out.println("Working Dir: " + RobocodeEngine.getCurrentWorkingDir());
System.out.println("Robots Dir: " + RobocodeEngine.getRobotsDir());
//Setup Battle Specification
BattlefieldSpecification battlefield = new BattlefieldSpecification(BATTLEFIELD_W, BATTLEFIELD_H);
RobotSpecification[] selectedRobots = engine.getLocalRepository("sample.Crazy, sample.TwitterRobot");
BattleSpecification battleSpec = new BattleSpecification(NO_OF_ROUNDS, battlefield, selectedRobots);
//Start Battle
engine.runBattle(battleSpec, true); //Wait Until Battle Finished
//Clean Up Our RobocodeEngine
engine.close();
//Ensure JVM Is Shut-Down Properly
System.exit(0);
}
}
Using sample robots work fine. But with my own, a BattleErrorEvent is
thrown showing "Can't load 'sample.TestRobot' because it is an invalid
robot or team.".
I've even tried copying the source code from a sample bot into my own
class to no avail.
Opening one of the compiled .class files of a sample robot tells me it was
compiled with JDK 6. I'm currently on 9.0.1, could this be the issue? What
is the latest version that will support this?
I've compiled another test robot class in JDK6, and copied the .class,
.java and created a .properties file. All this is in the sample folder so
the RobocodeEngine can see it. Still no luck!
It cannot find robots in any directory other than sample. If the robot is
in sample, it has to *actually* be a sample robot for to be deemed valid.
Kind Regards,
Tom
--
You received this message because you are subscribed to the Google Groups "robocode" group.
To unsubscribe from this group and stop receiving emails from it, send an email to robocode+***@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
Loading...