Informatik 1 Programmierwettbewerb

Endergebnisse und Bonuspunkte
Ergebnisse der Runde 1
Ergebnisse der Vorrunde

Roboball Paket (tar.gz)
Roboball Paket (zip)

Programmieranleitung
Überblick (Presentation)
Javadoc der Klasse Player
Javadoc der Klasse SoccerAction



Aktuell: Bonuspunkteregelung


Es gibt

Fehler korrigiert


Es wurde ein Fehler in der Funktion findRobotsOfClass() behoben. Installieren Sie das neue Programmpaket (siehe oben), falls Sie diese Funktion verwenden wollen.


Log-Dateien


Die Klasse LogPlayer stellt eine Methode writeLogFile( String message ) zur Verfügung, um Nachrichten in eine Textdatei zu schreiben. So können Sie leichter nach Fehlern in Ihren Programmen suchen.

Datei-Name: ⟨Klassenname⟩.log
Einträge: ⟨Iteration⟩ [⟨Klassenname⟩: ⟨XY-Position⟩] ⟨message⟩

Empfehlung: Erstellen Sie eine eigene Klasse für jeden Ihrer Spieler. So lassen sich die Spiele und Log-Dateien am Einfachsten analysieren. Falls mehrere Spieler derselben Logik folgen sollen, geben Sie ihnen eine gemeinsame Superklasse. Eine interaktive Steuerung der Spieler ist nicht möglich, da die Spiele erst vollständig ausgeführt und anschließend visualisiert werden.


Ablauf des Wettbewerbs


Ihre Aufgabe ist es, ein Team aus virtuellen Fußballspielern zu entwickeln. Ihr Team wird in drei Runden (1x vor Weihnachten, 2x im Februar) gegen die Konkurrenten antreten. Nach jeder Runde werden die Gesamttabelle und die einzelnen Spielergebnisse auf dieser Internetseite ver&oum;ffentlicht. Sie können die einzelnen Spiele herunterladen und mit einem Visualisierungsprogramm analysieren. Nach jeder Runde können Sie Ihr Team verbessern.
Bei Fragen oder Problemen wenden Sie sich bitte an Ihren Informatik 1 Tutor oder an die Adresse info1@informatik.uni-freiburg.de.
Vielen Dank an Mathias Retzlaf, Hendrik Dahlkamp, Holger Kujath, Till Krullmann und den i-n-k e.V., mit denen zusammen die Wettkampfidee und der Simulator entstanden sind.


Spielregeln


Spielzeit:

Ein Spiel dauert 90 Spielzüge (d.h. jeder Spieler macht 90 Züge). Dann wird abgepfiffen. Nach 45 Spielzügen ist Halbzeit. Die Position der Spieler
wir zu Beginn jeder Halbzeit und nach jedem Tor zufällig gewählt (jeder in seiner Hälfte).
Es gibt keine Nachspielzeit und keine Verlängerung.

Tore:

Ein Tor ist erzielt, wenn der Ball auf in einem der beiden Torbereiche liegt. Der Torbereich des eigenen Tores umfasst alle Felder mit y-Koordinate 0. Das gegnerische Tor alle Felder mit y-Koordinate 14. Für Spieler sind die Torbereiche ganz normaler Bestandteil des Spielfelds.

Fouls:  

Ein Spieler, der versucht einen gegnerischen oder eigenen Spieler auf ein Feld zu schieben, welches nicht frei ist, begeht ein Foul. Bei einem Foul tauschen die beiden beteiligten Spieler ihre Plätze. Nach 3 Fouls bekommt ein Spieler die rote Karte. Er wird dann automatisch vom Spielkontrollprogramm aus dem Spiel genommen.
Zu Begin jeder Halbzeit und nach jedem Tor dürfen vom Feld gestellte Spieler wieder mitspielen und alle Foul-Zähler werden auf 0 zurückgesetzt.

Aufstellung:

Die Spieler werden zu Beginn zufällig verteilt. Die Reihenfolge, in der die Spieler ziehen dürfen, ist ebenfalls zufällig; jeweils abwechselnd ein Spieler beider Teams. Diese Reihenfolge wird während des Spiels beibehalten, auch nach einem Tor (Es beginnt dann derjenige Spieler, der nach dem Torschützen dran gekommen wäre). Nach Toren und nach der Halbzeit werden die Spieler wiederum zufällig verteilt.



How-To: Einen eigenen Spieler erstellen





How-To: Ein Testspiel ausführen





How-To: Ein aufgezeichnetes Spiel analysieren





How-To: Viele Testspiele ausführen





How-To: Verwendung der Richtungskonstanten in Player.class