Informatik 1 Programmierwettbewerb

NEU Endergebnisse
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



Ergebnisse der Bonusrunde:


In der Bonusrunde trat jedes Team drei mal gegen den TestPlayer an. Bei 6 oder mehr erreichten Punkten erhalten die Teammitglieder jeweils 5 Bonuspunkte in der Klausur, ansonsten 3 für die erfolgreiche Teilnahme am Wettbewerb.



Bonusspiel 1

Bonusspiel 2

Bonusspiel 3



Team ID Tore Gg.Tore Punkte Tore Gg.Tore Punkte Tore Gg.Tore Punkte Gesamt Bonuspunkte
Abgefahrn 01 6 0 3 5 0 3 4 1 3 9 5
FC Kaffeekanne 02 5 0 3 3 1 3 0 1 0 6 5
Breadless Art 03 3 0 3 5 0 3 2 0 3 9 5
T-Team 04 0 2 0 0 1 0 1 1 1 1 3
Grim Reapers 05 4 1 3 4 0 3 7 0 3 9 5
3-Zeiler 06 3 1 3 1 1 1 3 0 3 7 5
Mein Team 07 0 1 0 0 0 1 1 0 3 4 3
Steaua 08 0 1 0 1 2 0 2 0 3 3 3
vRobots 09 2 1 3 2 0 3 1 0 3 9 5
MST Kickers 10 8 0 3 7 0 3 7 0 3 9 5
Die Abgeschloffenen 11 7 0 3 2 2 1 2 1 3 7 5
Digital Player 13 5 0 3 4 0 3 4 0 3 9 5



News





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ö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 Spiel analysieren


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.


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