Aufgabe
|
In dieser Aufgabe geht es darum, ein Scrabble-Spiel zu beschreiben.
Scrabble ist ein Brettspiel. Auf das Spielfeld können waagerecht und senkrecht Wörter
gelegt werden. Jede zusammenhängende Folge von Wörtern,
egal ob waagerecht oder senkrecht, muss ein Wort aus einem
vorgegebenen Wörterbuch sein.
|
| |
Brett |
Ein Brett kann folgende Gestalt haben:
|
|
|
Layout |
Dieses ist das Layout des Original-Bretts. In dem Modell in dieser
Aufgabe soll
es aber möglich sein, mit unterschiedlichen Brettgrößen, auch mit
beliebigen Brettformen, also nicht nur mit quadratischen oder
rechteckigen Brettern zu spielen. Jedes Feld auf dem Brett wird durch
eine Koordinate eindeutig bestimmt.
|
Statische Eigenschaften |
Ein Brett hat statische Eigenschaften, die Größe und Form, außerdem
wird zur Bewertung von gelegten Wörtern jedes Feld mit einem Wert
markiert. Wie im Original sollen hier fünf Markierungen
möglich sein, der normale Buchstabenwert,
ein doppelter oder ein dreifacher Buchstabenwert oder ein doppelter
oder dreifacher Wortwert. Diese Markierungen werden zur Berechnung der
Punktzahl eines Zuges benötigt.
Diese Werte sollen in diesem Modell den Positionen frei zugeordnet
werden können, also nicht
genau der Belegung aus dem Original entsprechen.
|
Spielzustand |
Der Zustand eines Brettes ist gerade die aktuelle Belegung des
Brettes,
er ändert sich bei jedem Zug mit dem Legen von
neuen Buchstaben.
|
|
Weiter gehört zu einem Spiel eine Menge von Spielsteinen, ein Alphabet.
Dieses Alphabet soll eine Teilmenge der zur Verfügung stehenden
Zeichen (Char) sein.
Jedes Zeichen aus dem Alphabet bekommt einen (Buchstaben-)wert,
mit dem zum Beispiel das Legen von Wörtern mit selten vorkommenden
Buchstaben belohnt werden kann.
Das Alphabet und die Bewertung der Buchstaben soll ebenfalls
konfigurierbar sein. Aus den Steinen müssen Wörter gebildet werden,
diese müssen zulässig sein, also in einem Wörterbuch stehen.
|
|
Zu einem Spiel gehört ein Brett, ein Sack mit zu verteilenden Steinen und beliebig
viele Spieler. Diese besitzen alle einen eindeutigen Namen. Ein
Spieler hat immer eine gewisse Menge von Steinen (Buchstaben)
zur Verfügung. Diese werden nach jedem Zug aus dem Sack aufgefüllt.
Außerdem ist jedem Spieler eine Punktzahl zugeordnet,
die aus den bisher gelegten Wörtern errechnet wird.
|
Modell |
Entwickeln Sie ein Datenmodell für dieses Spiel in Haskell-Notation.
Gehen Sie dabei schrittweise vor und beschreiben Sie bitte als erstes
die statischen Eigenschaften:
|
Statischer Teil |
Alphabet, Layout, Wörterbuch
|
Dynamischer Teil |
Brettzustand, Spieler, Steine
|