Beruflich Dokumente
Kultur Dokumente
Ausgabe: 23.11.2023
Übungsblatt ÜE-05 Abgabe: 02.12.2023
13:00 Uhr
∑ 10 Punkte
Zusatz: Achten Sie auch auf Vorgaben Ihrer Tutorin/Tutors. Hierfür auch in das Gruppenforum im Moodle-Kurs
von EPR schauen!
Es gibt die folgenden Teilaufgaben, wobei die Funktionen, die in a-d) erzeugt werden, in ein eigenständiges
Modul ausgelagert werden sollen. Dieses Modul soll die Tests der Funktionen in einer main()-Funktion
enthalten, welche nur beim Start des Moduls (und nicht beim Import) ausgeführt werden.
Vorbereitung
Es gibt drei verschiedene Farben (Karo, Herz, und Kreuz). Die jeweils höchste Karte einer Farbe ist die 4, die
niedrigste eine 1. Zu Beginn des Spiels werden alle Karten vollständig an die Spieler verteilt.
Stiche
Jeder Spieler spielt reihum genau eine Karte aus der Hand aus. Diese Karten bilden den Stich. In einem Spiel
werden so viele Stiche gespielt, wie Spieler Handkarten besitzen. Der beginnende Spieler kann jede Karte aus
der Hand abspielen. Die Farbe der ersten ausgespielten Karte in einem Stich ist Trumpf und muss ‚bedient‘
werden. Das heißt, hat ein Spieler die Farbe der erstgelegten Karte auf der Hand, muss er diese spielen. Kann
ein Spieler die Trumpffarbe nicht spielen, darf dieser Spieler eine andere Farbe spielen. Am Anfang jedes Stichs
wird die Trumpffarbe neu bestimmt. Die Karte mit dem höchsten Wert der Trumpffarbe gewinnt und der
Spieler, der diese Karte ausgespielt hat, bekommt alle Karten des Stichs. Karten, die eine andere Farbe als die
Trumpffarbe haben, können einen Stich nie gewinnen. Nach jedem Stich werden die Stichkarten ausgewertet
und die Strafpunkte der Spieler aufaddiert. Jede Kreuz-Karte ergibt einen Strafpunkt.
Die Funktion nimmt keinen Wert entgegen, liest aber über die Kommandozeile die eingegebenen Namen der
Spieler ein. Testen Sie, dass die richtige Anzahl der Spieler (drei bis vier) angegeben wird.
Die Funktion soll die oben erstellte Liste der Spieler entgegennehmen und sowohl einen ‚score‘ Dictionary als
auch einen Dictionary mit den Handkarten jedes Spielers zurückgeben. Der Score-Dictionary soll den
Punktestand für jeden Spieler als Integer enthalten. Außerdem soll der Kartenstapel erstellt werden und
gemischt werden. Alle Karten sollen an die Spieler verteilt werden. Passen Sie dafür Ihre letzte Woche erstellte
Funktion an, sodass diese nun einen Dictionary mit den Spielernamen und einer jeweiligen Liste der zugeteilten
Karten zurückgibt.
c) Spielen 6 Punkte
Schreiben Sie nun eine Funktion, welche es erlaubt zu spielen. Dafür werden so viele Stiche gespielt, wie Spieler
Handkarten haben. Eine Stichrunde läuft wie folgt ab:
• Gespielt wird in zufälliger Reihenfolge, welche für jeden Stich neu bestimmt wird. Ein zufällig
ausgewählter Spieler darf das Spiel beginnen und die erste Karte ausspielen. Die Farbe der
ausgespielten Karte ist nun Trumpf und muss bedient werden.
• Danach dürfen alle anderen Spieler in zufälliger Reihenfolge eine Karte ausspielen. Testen Sie dabei,
dass jeder Spieler eine valide Karte abspielt. D.h. kann der Spieler die Trumpffarbe bedienen, muss
dies auch getan werden. Speichern Sie die gelegten Karten in einer Liste.
• Wenn alle Spieler an der Reihe waren, wird der Stich ausgewertet und dem Spieler zugeteilt, welcher
den höchsten Trumpf ausgespielt hat. Die Strafpunkte des Gewinners des Stichs werden ggf.
angepasst.
• Danach beginnt wieder ein zufällig ausgewählter Spieler den nächsten Stich, sofern noch nicht alle
Handkarten gespielt wurden.
Programmieren Sie dafür eine Benutzeroberfläche, welche es den Spielern erlaubt das Spiel zu spielen. Die
Funktionalitäten sollen in der Funktion play_game ausgeführt werden.
play_game(players: list, scores: {str: int}, all_hands: {str: list}) -> {str: int}
Zusatzanforderungen:
• Für die Aufgabenteile a) bis e) sollen die Funktionen und Testfälle erstellt werden. Erstellen Sie die
entsprechende Dokumentation, welche das Programm abdeckt.
• Für fehlende Angaben in der Aufgabestellungen dürfen Annahmen aufgestellt werden, die in der
Dokumentation beschrieben werden.