Dr. Matthias Grabert Abteilung Angewandte
Informationsverarbeitung 8. Juni 2004
Claudia Fischer Blatt 5
C++ mit Data Mining Anwendungen (SS 2004)
Abgabetermin: 17. Juni 2004
Bestimmt kennen Sie alle das Kartenspiel Uno. Sie sollen ein
Programm schreiben, mit dem man Uno gegen drei Computergegner
spielen kann. Gehen Sie dabei wie folgt vor:
In einem Unospiel gibt es folgende Karten:
- 19 blaue Karten, einmal mit dem Wert 0, je zweimal mit
den Werten 1 bis 9
- 19 gelbe Karten, einmal mit dem Wert 0, je zweimal mit
den Werten 1 bis 9
- 19 rote Karten, einmal mit dem Wert 0, je zweimal mit
den Werten 1 bis 9
- 19 grüne Karten, einmal mit dem Wert 0, je zweimal mit
den Werten 1 bis 9
- enige Sonderkarten, die wir hier (vorerst) ausser acht
lassen
Schreiben Sie eine Klasse für Spielkarten. Es sollten neben dem
Konstruktor noch zwei Methoden existieren: Eine Ausgabefunktion
und eine Methode, die überprüft, ob es erlaubt ist, eine Karte
auf eine andere abzulegen. Dies ist der Fall, wenn die zwei Karten
entweder den gleichen Wert oder die gleiche Farbe haben. Außerdem
werden Methoden benötigt, die den Wert bzw. die Farbe der Karte zurück
liefern.
Um Uno zu spielen, benötigt man zwei Kartenstapel: einen Ablagestapel und
einen Stapel von dem gezogen wird. Implementieren Sie deswegen nun eine Klasse
für Kartenstapel. Da der Ablagestapel am Anfang des Spiels leer ist, wohingegen
sich im anderen Stapel alle Karten befinden sollten, benötigen Sie zwei
Konstruktoren. Außerdem sollen Sie einen Methode schreiben, die eine Karte 'zufällig'
aus einem Stapel zieht und eine Methode, die eine Karte auf einen Stapel ablegt.
Schreiben Sie dann noch eine Funktion, die überprüft, ob ein Stapel leer ist.
Nun kommen wir zum eigentlichen Spiel. Hier noch einmal die Regeln:
- Zu Beginn des Spiels erhält jeder Mitspieler sieben Karten vom Stapel.
- Eine Karte wird offen auf den Ablagestapel gelegt.
- Reihum darf jeder eine Karte ablegen,
wenn diese entweder den gleichen Wert oder dieselbe Farbe hat wie die
oberste Karte auf dem Ablagestapel.
- Kann (oder will) man keine Karte ablegen, so muss man eine Karte ziehen und passen.
- Gewonnen hat, wer als erster keine Karten mehr auf der Hand hat.
Sie sollen also nun ein Programm implementieren, mit dem man dieses vereinfachte Uno gegen drei
Computergegener spielen kann. Ein Computerspieler legt dabei immer die erste Karte aus seiner Hand,
die er spielen darf. Beachten Sie bitte auch, dass der Ablagestapel unter den anderen Kartenstapel
'gemischelt' werden soll, falls keine Karten mehr zum Ziehen vorhanden sind.
Damit das Spiel noch etwas reizvoller wird, wollen wir nun auch noch einige der Sonderkarten in unser
Programm aufnehmen. In jedem Unospiel existieren für jede Farbe zwei der folgenden Sonderkarten:
- Richtungswechsel: Die Spielrichtung ändert sich.
- Aussetzen: Derjenige, der als nächste am Zug wäre, muss aussetzen.
- +2: Derjenige, der als nächste am Zug wäre, muss zwei Karten ziehen und aussetzen.
Viel Erfolg!
Claudia Fischer
2004-06-08