robocode:tracking
Dies ist eine alte Version des Dokuments!
Tracking
Für viele Techniken ist es wichtig, Informationen über die Roboter zu haben. Dazu werden die Informationen, welche beim Scannen der Roboter mittels <javadoc robocode>robocode.Robot#onScannedRobot(robocode.ScannedRobotEvent)|onScannedRobot()</javadoc> anfallen, in geeigneter Weise zwischengespeichert.
Die Klasse EnemyRobot
speichert die Information (Position) eines Roboters:
public class EnemyRobot { private Robot ownRobot; private String name; private double x; private double y; public EnemyRobot(Robot ownRobot, String name) { this.ownRobot = ownRobot; this.name = name; } public void update(ScannedRobotEvent e) { double headingToRobot = ownRobot.getHeading() + e.getBearing(); x = ownRobot.getX() + e.getDistance() * Math.sin(Math.toRadians(headingToRobot)); y = ownRobot.getY() + e.getDistance() * Math.cos(Math.toRadians(headingToRobot)); } public String getName() { return name; } public double getX() { return x; } public double getY() { return y; } }
Die Klasse EnemyRobots
speichert alle bekannten Roboter.
import java.util.HashMap; import java.util.Map; import robocode.*; public class EnemyRobots { private Map<String, EnemyRobot> enemies; private Robot ownRobot; public EnemyRobots(Robot ownRobot) { enemies = new HashMap<String, EnemyRobot>(); this.ownRobot = ownRobot; } public void update(ScannedRobotEvent e) { if (!enemies.containsKey(e.getName())) { // Gegner noch nicht bekannt enemies.put(e.getName(), new EnemyRobot(ownRobot, e.getName())); } enemies.get(e.getName()).update(e); } }
robocode/tracking.1427718383.txt.gz · Zuletzt geändert: 2020/10/13 14:25 (Externe Bearbeitung)