Aufgaben

Bonusaufgabe: Reversi-Spielstände bewerten

Das Spiel Reversi (bzw. Othello) ist in der Datei reversi.py implementiert. Neben den üblichen Methoden der Klasse Game stellt die Klasse Reversi die folgenden Attribute und Methoden bereit:

  • all_tiles speichert die Felder des Spielbretts als Array von Zeichenketten der Länge eins zurück. Jede Zeichenkette enthält entweder ein Leerzeichen oder den Anfangsbuchstaben eines Spielernamens.
  • count_discs(player, tiles) liefert die Anzahl der Spielsteine des übergebenen Spielers zurück. Dabei werden nur die übergebenen Felder durchsucht, die das selbe Format haben müssen wie der Wert von all_tiles.

Definieren Sie eine Unterklasse ReversiPlayer von PruningPlayer, die die Methode eval_on_stop mit einer für Reversi spezialisierten Implementierung überschreibt. Falls Sie Reversi nicht kennen, folgen Sie dabei den folgenden Grundsätzen:

  • Sowohl das Verhältnis der Spielsteine als auch das Verhältnis der Zugmöglichkeiten beider Spieler spielen bei Reversi eine wichtige Rolle. Zu Beginn des Spiels sind Zugmöglichkeiten wichtiger, zum Ende des Spiels Spielsteine.
  • In den Ecken platzierte Steine können nicht umgedreht werden. Solchen Steinen sollte daher besondere Aufmerksamkeit gewidmet werden.

Können Sie eine Bewertungsfunktion angeben, die besser ist als die zufällige Standard-Implementierung, die Sie überschreiben?