Re: Importing Custom Classes
Mike Oliver <[email protected]> Thu, 16 Jul 2015 22:55:31 -0700 (PDT)
| Newsgroups | gmane.comp.java.robocode |
|---|---|
| Message-ID | <[email protected]> |
Hi Everyone,
Back again for questions regarding custom classes. I've broken out my bot
into multiple files and am having troubles understanding where I've gone
wrong. When I run my bot I get:
robocode.exception.RobotException: You cannot call the getHeadingRadians()
method before your run() method is called, or you are using a Robot object
that the game doesn't know about.
at robocode._RobotBase.uninitializedException(_RobotBase.java:88)
at
robocode._AdvancedRadiansRobot.getHeadingRadians(_AdvancedRadiansRobot.java:40)
at robocode.AdvancedRobot.getHeadingRadians(AdvancedRobot.java:1439)
at mo.data.EnemyData.update(EnemyData.java:25)
at mo.PewPew.onScannedRobot(PewPew.java:18)
I'm trying to figure out how to declare my bot object properly so that
methods like getHeadingRadians will work.
Any input or suggestions is really appreciated.
Thanks
Mike
Pew.Pew.java
package mo;
import mo.data.*;
import robocode.*;
public class PewPew extends AdvancedRobot
{
private EnemyData enemy = new EnemyData();
public void run() {
while(true) turnRadarRightRadians(Double.POSITIVE_INFINITY);
}
public void onScannedRobot(ScannedRobotEvent e) {
enemy.update(e);
}
public void onRobotDeath(RobotDeathEvent e) {
enemy.update(e);
}
}
EnemyData.Java
package mo.data;
import mo.utils.*;
import robocode.*;
import java.util.HashMap;
import java.util.LinkedHashMap;
public class EnemyData {
public static AdvancedRobot myRobot = new AdvancedRobot();
public static LinkedHashMap<String, HashMap<String, Object>> enemy = new
LinkedHashMap<String, HashMap<String, Object>>(5, 2, false);
protected double velocity;
protected double bearing;
protected double absBearing;
//onScannedRobot
public void update(ScannedRobotEvent e) {
String name = e.getName();
if (!enemy.containsKey(name))
enemy.put(name, new HashMap<String, Object>());
enemy.get(name).put("velocity", e.getVelocity());
enemy.get(name).put("absBearing", myRobot.getHeadingRadians() +
e.getBearingRadians());
enemy.get(name).put("bearing", e.getBearingRadians());
Utils.printMap(enemy); //print out debug info
}
//onRobotDeath
public void update(RobotDeathEvent e) {
enemy.remove(e.getName());
}
}
Utils.java
package mo.utils;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.Map;
public class Utils {
//print out Map information
public static void printMap(LinkedHashMap<String, HashMap<String, Object>>
map) {
for (Map.Entry<String, HashMap<String, Object>> cursor : map.entrySet())
System.out.println(cursor.getKey() +"="+ cursor.getValue() +"\r");
System.out.println("\r");
}
}
--
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 [email protected].
For more options, visit https://groups.google.com/d/optout.