ETH Zürich
Department of Computer Science
    Verteilte Systeme   Reversi Vorlesung Übungen Forum FAQ Literatur



Reversi-Turnier


Implementierung eigener Spieler [Allgemeines zum Turnier]
    Um einen eigenen Reversi-Spieler zu implementieren, der mit dem Monitor zusammenarbeitet, müsst Ihr ein von uns zur Verfügung gestelltes Reversi-Paket herunterladen, installieren und anschliessend Eure bisherige Implementierung an das Monitor-Interface anpassen.

Aktuelle Hinweise:  
  • Das Finale findet heute, Montag den 26. Juni, von 16.00 bis ca. 19.30 Uhr in Raum RZ F21 statt. Eine Liste der eingegangenen und zum Finale qualifizierten Spieler gibt es hier.

  • [21. Juni 2000] Die Version 1.0.2a behebt einen Fehler, der auf einigen Maschinen dazu geführt hat, dass der Monitor erst gar nicht aufstartet. Die neue Verion braucht nur von denjenigen installiert zu werden, bei denen der Fehler auftritt. Sie benötigt etwas länger zum Starten als die älteren Versionen. Der Fehler tritt in Abhängigkeit von Rechnerkonfiguration und Systemauslastung auf, ist sonst aber "gutartig".
    Da bei mir selbst der Fehler noch nie aufgetreten ist, wäre ich über eine Rückmeldung dankbar, ob die neue Version den Fehler auch tatsächlich behebt.

  • [15. Juni 2000] Die neuste Version 1.0.2 behebt einen Fehler, der dazu geführt hat, dass fälschlicherweise ein timeout ausgelöst wurde, wenn eine ReversiPlayer-Implementierung passen muss (null als Rückgabewert der Methode nextMove()). Zudem wurde die graphische Anzeige etwas ansprechender gestaltet.

  • [15. Juni 2000] Es gibt jetzt eine FAQ, die Antwort auf die am häufigsten gestellten Fragen gibt.

  • [14. Juni 2000] Ab der aktuellen Version 1.0.1 ist die API-Dokumentation deutlich erweitert. Welche Verison der Software Ihr lokal installiert habt, steht in der Datei reversi/VERSION. Die Änderungen zu den vorherigen Versionen stehen in der Datei reversi/CHANGELOG.

Download:   Das Reversi-Paket enthält den Monitor und alle Klassen und Interfaces, die benötigt werden, um Euren eigenen Spieler Monitor-kompatibel zu machen. Wir stellen das Paket in der Version 1.0.1 in zwei Formaten bereit. Als komprimiertes tar-Archiv reversi.tgz und als zip-Datei reversi.zip.

Installation:   Die Datei nach dem Herunterladen mit Verzeichnisstruktur auspacken. Auf UNIX-Systemen entpackt man die tgz (kurz für .tar.gz) Datei z.B. mit dem Kommando gtar xvfz reversi.tgz, die zip-Datei mit unzip reversi.zip. Auf den verschiedenen Windows-Systemen kann zum Entpacken (sowohl der tgz-, als auch der zip-Dateien) z.B. Winzip benutzt werden.

Nach dem Auspacken existieren im aktuellen Verzeichnis drei neue Unterverzeichnisse: reversi, interactive_player und random_player. Das Verzeichnis reversi enthält den Monitor und alle zugehörigen Klassen und Interfaces. Das Verzeichnis interactive_player enthält einen graphisch-interaktiven Spieler, random_player einen Zufallsspieler.

Die Dateien sind bereits compiliert. Zum Testen der Installation könnt Ihr im aktuellen Verzeichnis java reversi.Monitor random_player random_player ausführen. Mit diesem Kommando startet der Monitor ein Spiel zwischen zwei Zufallsspielern.

Mitgelieferte Spieler & Monitor:   In dem Paket kommen neben dem Monitor zwei Implementierungen eines Spielers. Zum einen die Implementierung eines "Zufallsspielers", der einen zufälligen (aber korrekten) Zug liefert. Zum anderen haben wir einen interaktiven Spieler implementiert, der einen Zug über eine graphische Schnittstelle entgegennimmt und diesen dann an den Monitor zurückgibt. Ihr könnt die mitgelieferten Spieler gegen Eure eigene Implementierung oder gegen sich selbst spielen lassen.

Der Monitor lädt für jedes Spiel jeweils zwei Implementierungen eines Reversi-Spielers dynamisch und lässt diese dann gegeneinander spielen. Damit das funktionieren kann, ist es notwendig, dass die Reversi-Spieler das von uns bereitgestellte Interface ReversiPlayer implementieren. Während des Spieles verwaltet der Monitor das Spielbrett und übernimmt das Umdrehen der Spielsteine. Die Spieler-Implementierungen berechenen nur die Spielzüge.

Jedem der beiden Reversi-Spieler wird vom Monitor zu Beginn der Partie eine Farbe zugeordnet und die maximale Dauer für die Berechnung eines Zuges übergeben (Methode initialize() im Interface ReversiPlayer). Dann ruft der Monitor solange abwechselnd die Methode der Reversi-Spieler auf, die den nächsten Zug berechnet (Methode nextMove() ), bis das Spielfeld gefüllt ist oder beide Spieler passen müssen. Die Methode nextMove() bekommt das Spielfeld übergeben. Auch sie ist im bereitgestellten Interface ReversiPlayer definiert. Nach jedem Zug eines Spielers wird das Spielfeld vom Monitor aktualisiert.


Anpassung des
eigenen Spielers:
  Schritt für Schritt-Anleitung zum Anpassen seines eigenen Spielers an den Monitor:
  1. Zuerst muss sich jede Gruppe einen Namen ihrer Wahl für ihr Programm ausdenken. Der Name muss allerdings unter allen Studenten eindeutig sein, deshalb seid ein bisschen einfallsreich! Eine gute Idee ist es, den vollen Namen der Programmiererin oder des Programmierers zu nehmen, z.B. "felix_frei". Keine gute Idee hingegen sind Namen wie "reversiPlayer", "reversi", "myPlayer" und ähnliches. Beschränkt Euch auf kurze Namen ohne Sonder- und Leerzeichen.

  2. Erzeugt in dem Verzeichnis, in das Ihr das Paket ausgepackt habt, ein neues Unterverzeichnis mit dem Namen, den Ihr Euch in Schritt 1 ausgedacht habt.

  3. Kopiert die Vorlage player_template.java in dieses Verzeichnis und benennt es ebenfalls mit dem Namen, den Ihr Euch in Schritt 1 ausgedacht habt (also genauso, wie das Verzeichnis). Die Namen müssen wirklich identisch sein (auch Gross- und Kleinschreibung ist relevant!).

  4. In der Vorlage muss jedes Auftreten von "player_template" duch den in Schritt 1 gewählten Namen ersetzt werden. Das ist zum einen der Name der Klasse, die ReversiPlayer implementiert (Zeile 17), inklusive des Konstruktors, der den gleichen Namen trägt (Zeile 25). Zum anderen ist das der Name des (Java-)packages, in dem Ihr Euren Spieler implementieren müsst (Zeile 10).

  5. Integriert Eure eigene Reversi-Implementierung in die Vorlage. In der Vorlage findet Ihr Kommentare, die Euch das Anpassen Eurer eigenen Implementierung an das ReversiPlayer-Interface erleichtern. Als zusätzliche Hilfe könnt Ihr die API (Application Program Interface)-Beschreibung unseres Java-Paketes angucken. Die API-Beschreibung ist nach dem Auspacken unseres Paketes auch lokal im Verzeichnis doc/javadoc zugreifbar (Datei doc/javadoc/index.html).

Am besten die Klasse des Zufallsspielers anschauen und genauso nachmachen. :-)

Fragen und Probleme:   Wenn Ihr Probleme und Fragen habt, seht bitte zuerst in der FAQ nach. Nennt dort nicht genannte auftretende Probleme sofort im Forum, diskutiert dort auch eventuell auftretende Fragen. Schaut bitte öfters ins Forum, wir werden dort auf neue Versionen der bereitgestellten Software hinweisen.



Contact
kasten@inf.ethz.ch with questions or comments regarding this page.
Last modified: Mon Jun 26 02:29:58 MEST 2000