Sie sind auf Seite 1von 2

Einführung in die Programmierung

Prof. Dr. Franziska Matthäus


Prof. Dr. Matthias Kaschube
Dr. Karsten Tolle

Ausgabe: 16.11.2023
Übungsblatt ÜE-04 Abgabe: 25.11.2023
13:00 Uhr

Ein kleines Kartenspiel (I)


Hinweis:
• Es dürfen keine Lösungen aus dem Skript, dem Internet oder anderen Quellen abgeschrieben werden.
Diese Quellen dürfen nur mit Quellenangaben verwendet werden und es muss ein hinreichend großer
Eigenanteil in den Lösungen deutlich zu erkennen sein.
• Digitale Abgaben, die nicht im Format .pdf oder .txt für Texte oder .py für Code erfolgen, werden nicht
bewertet. Bei Abgaben mehrerer Dateien müssen diese als .zip zusammengefasst werden.
• Achten Sie darauf die Variable __author__ in allen Quellcode Dateien (.py) korrekt zu setzen (am
Anfang des Quellcodes):
__author__ = "<Matr-Nr>, <Nachname>"
Beispiel: __author__ = "1234567, Tolle"
... Leerstellen vor und nach dem "=" und Leerstelle nach dem Komma beachten, sowie keine spitzen
Klammern verwenden.
• Außerdem muss Ihr Name in jeder abgegebenen .pdf und .txt Datei zu finden sein. Abgaben der
Dokumentation, die per Hand geschrieben und eingescannt werden, sind nur in zuvor abgesprochenen
Ausnahmefällen erlaubt.
• NEU: Datei- und Ordnernamen sollen keine Umlaute, diakritische oder Sonderzeichen, mit Ausnahme
des Unterstrichs in der Namensmitte, enthalten!

∑ 10 Punkte

Zusatz: Achten Sie auch auf Vorgaben Ihrer Tutorin/Tutors. Hierfür auch in das Gruppenforum im Moodle-Kurs
von EPR schauen!

Aufgabe – Erstellung eines Kartenspiels


In dieser und der nächsten Woche soll ein Kartenspiel implementiert werden. In dieser Woche geht es zunächst
einmal darum, ein Kartendeck sowie einige hilfreiche Funktionen zu erzeugen. Gespielt wird dann in der
kommenden Woche!
Es gibt die folgenden Teilaufgaben, wobei die Funktionen, die in a-e) 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.

a) Karten erstellen 2 Punkte


Die Karten haben einen Wert und eine ‚Farbe‘. Für dieses Spiel sind es die Werte 1 bis 8 mit den 4 Farben Pik,
Kreuz, Herz, Karo, sodass das Kartendeck aus 8*4=32 Karten besteht. Erstellen Sie für das Spiel eine Funktion:
create_card_list(number_of_cards:int) -> [(int, str)]

die eine Zahl entgegennimmt und eine Liste von Karten (Tupel) zurückgibt (hier dargestellt ist die Signatur der
Funktion mit den vorgesehenen Datentypen für die Übergabe und die Rückgabe).

EPR WiSe 2023/2024 1


b) Karten mischen 2 Punkte
Als nächstes soll eine Funktion erstellt werden, die ein solches Kartendeck (pseudo-)zufällig mischt:
shuffle_card_list(cards:[(int, str)]) -> [(int, str)]

c) Kartenvergleich 2 Punkte
Schreiben Sie eine Funktion, die 2 Spielkarten hinsichtlich ihres Wertes vergleicht. Die Funktion soll als Eingabe
zwei Argumente erhalten: 1. Karte, 2. Karte. Als Rückgabe soll die Funktion 0 zurückgegeben, falls der Wert der
ersten Karte kleiner als der Wert der zweiten Karte ist, 1, falls beide gleich sind und 2, falls er größer ist:
compare_two_cards(card_one:(int, str), card_two:(int, str)) -> int

d) Kartenvergleich mit Trumpf 2 Punkte


Die Funktion in c) soll nun so erweitert werden, dass sie berücksichtigen kann, dass eine der Farben Trumpf ist.
Eine Trumpfkarte soll von dieser Funktion stets höherwertig eingestuft werden als Karten einer anderen Farbe,
ungeachtet ihres Wertes. Beim Vergleich zweier Trumpf-Karten soll wie in c) verfahren werden:
compare_two_cards_trump(card_one:(int, str), card_two:(int, str),
trump:str) -> int

e) Karten verteilen 2 Punkte


Schreiben Sie eine Funktion, die die Karten unter den Spielern verteilt. Dabei soll der Funktion die Liste von
Karten, Anzahl der Spieler und Anzahl der Karten, die jeder Spieler bekommt, übergeben werden. Als Rückgabe
der Funktion soll eine Liste mit Listen der Karten für die jeweiligen Spieler zurückgegeben werden:
hand_out_cards(list_cards: [(int, str)], players: int, number_of_cards:
int) -> [[(int, str)]]

EPR WiSe 2023/2024 2

Das könnte Ihnen auch gefallen