Vorlesung: Praxis der Funktionalen Programmierung
| Index
Generische Module für Brettspiele
Spielmaterial
Generische Darstellung von Spielen
Für jedes Spiel definiert man einen Brett-Typ B
und erklärt ihn zu Instanzen von Brett (für den Schiedsrichter)
und Bild (für den Anzeiger)
Informationsaustausch
Es sollen Programme sowohl gegeneinander als auch gegen
einen Bediener spielen.
Der Schiedsrichter schickt Nachrichten zu den Spielern,
diese antworten (eine Nachricht -> eine Antwort, der Einfachheit halber).
Modell ist das Go-Modem-Protokoll.
Ein Spieler ist ein Zustandstransformer, der noch in IO gepackt ist.
Warum? Zustand braucht er vielleicht, um sich von einem zum nächsten Zug
Informationen zu merken (also nicht kompletten Spielbaum neu ausrechen etc).
IO braucht er, weil wir auch externe Programme als Spieler einbauen wollen,
die werden dann mit system von einem kleinen Haskell-Treiber
aufgerufen. Das geht nur mit IO.
Wettkampf-Organisation
Der Schiedsrichter, der die Spieler auf den Platz schickt
(
Quelltext - ASCII-Version)
- nach Spielernamen fragen, Farben verteilen, starten
- Zug entgegennehmen testen, ob erlaubt ist
(unerlaubt ergibt Spielende, Sieg für anderen)
- testen, ob durch letzten Zug gewonnen wurde
- Zug an anderen Spieler weiterreichen
- Spielverlauf und/oder nur Ergebnis anzeigen
Das Schiedsrichterprogramm ist völlig generisch:
es hängt erstens nicht von der Art des Spiels (Typ des Bretts) ab,
und zweitens nicht von den Spielern (Typ ihres Zustands).
http://www.informatik.uni-leipzig.de/~joe/
mailto:joe@informatik.uni-leipzig.de