Die Roboter im Team kämpfen lassen
Um die Roboter im Team miteinander kämpfen zu lassen, solltet ihr stehts bei allen wichtigen Funktionen die das Angreifen eines Gegners oder das Fahrverhalten betreffen eine Abfrage einbauen, damit verhindert wird, dass sich die Teammitglieder gegeneinander den Gar ausmachen.
if(!robot.isTeammate(e.getName())) {
//Angriff auf den Gegner...
} else {
//Ausweichen oder sonstiges, da Teammitglied...
}
euren Roboter jetzt Teamfähig zu machen, müsst ihr lediglich auf Robot >> Create a Robot Team klicken und den Anweisungen folgen:
Codeschnipsel:
Das Robocode Wiki ist eine feine Sache. Hier werden unter anderem Tutorials zu Robocode, Eclipse und Strategien angeboten. Aber vor allem gibt es hier Open Source Roboter und Codeschnipsel+Erklärungen zum Radar, Bewegung und Angriff.
Weiterführende Links:
- Auf der Seite von Robocode Repository gibt es massenweise Bots von Entwicklern, die ihren Quellcode zur Verfügung stellen.
- RoboRumble – Hier werden Wettkämpfe ausgetragen
- Robocode Dokumentation – Beschreibung der Schnittstellen
- Robocode Wiki - Alle wichtigen Infos, Open Source Bots & Codebeispiele gibt es hier
- Robocode Download
Zusätzliches:
Da ich ein begeisteter Monkey Island Fan bin, kam ich auf die Idee jede Aktion die der Roboter ausführt, als Nachricht zu kommentieren. Ganz in dem Stil vom Beleidungsfechten aus Monkey Island. Falls ihr Interesse habt, hier ist der Code:
Funktionsweise:
Es liest die zur Aktion passende Datei ein und wählt sich eine zufällige Zeile aus die es dann posted.
So bindet ihr es z.B. bei onRobotDeath ein:
public void onRobotDeath(RobotDeathEvent e) {
speechengine.Ausgabe("robots/broboter/onRobotDeath.bro", "Gegner Besiegt");
}
Und hier der Code:
package broboter; //Name eures Roboters
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.LinkedList;
import java.util.List;
import java.util.Random;
//Ausgabe eines Zufallkommentars
public class SpeechEngine
{
public void Ausgabe(String speechfile, String grund) {
try {
RandomReader rr = new RandomReader(speechfile);
System.out.println("Sprachausgabe ("+grund+"): "+ rr.getRandom()+"!");
} catch (IOException e) {
e.printStackTrace();
}
}
}
//Auslesen der einer Textdatei
class RandomReader {
private List<String> lines;
public RandomReader(String filename) throws IOException {
File f = new File(filename);
readFile(f);
}
private void readFile(File f) throws IOException {
FileReader fr = new FileReader(f);
lines = new LinkedList<String>();
BufferedReader br = new BufferedReader(fr);
String line = "";
while ((line = br.readLine()) != null) {
lines.add(line);
}
}
//Auswählen einer zufälligen Zeile
public String getRandom() {
Random generator = new Random();
int randomValue = generator.nextInt(lines.size() - 1);
return lines.get(randomValue);
}
}
Ähnliche Artikel:
Kommentare:
Christian Neu © 2009 - 2010
|



26. October 2009 um 13:57 Uhr
29. April 2010 um 11:29 Uhr
Hey Christian,
danke für das Tutorial! Es hat mir für Software Engineering echt weiter geholfen!