diff --git a/.gitignore b/.gitignore index 6714baa..d4de9d1 100644 --- a/.gitignore +++ b/.gitignore @@ -4,5 +4,6 @@ __pycache__ /EPR/ue01/7987847_epr-blatt01.zip /EPR/ue02/7987847_epr-blatt02.zip /EPR/ue03/7987847_epr-blatt03.zip +/EPR/ue04/7987847_epr-blatt04.zip /GPR/ue03/gpr_blatt03_7987847_werner.zip \ No newline at end of file diff --git a/EPR/ue04/7987847_epr_blatt-04.zip b/EPR/ue04/7987847_epr_blatt-04.zip new file mode 100644 index 0000000..1d604b1 Binary files /dev/null and b/EPR/ue04/7987847_epr_blatt-04.zip differ diff --git a/EPR/ue04/README.md.txt b/EPR/ue04/README.md.txt new file mode 100644 index 0000000..03b5cea --- /dev/null +++ b/EPR/ue04/README.md.txt @@ -0,0 +1,36 @@ +author: 7987847, Werner + + +Zur Nutzung muss eine kompatible Python version installiert sein. +Akzeptiert werden alle Python 3.x Versionen. + +Das Programm kann mit dem Befehl `python3 main.py` im Ordner gestartet werden. + + +Oben ist der code zu sehen der hier nun beschrieben wird: + +Zuerst wird der Spieler nach der Anzahl der Spieler gefragt. +Danach wird er nach der Anzahl der Karten gefragt. +Zuletzt wird er nach dem Trumpf gefragt. + +Danach wird eine Liste mit allen Karten erstellt. +Diese Liste wird dann gemischt. +Danach werden die Karten an die Spieler verteilt. + +Zuletzt werden die Karten ausgegeben und mit dem Trumpf verglichen. + +Hinweis: Die Eingaben erlauben nur positive Zahlen und keine Buchstaben (bis auf den Trumpf). + Bei einer falschen Eingabe kommt es zu einem Fehler. +Hinweis: Bei der Eingabe des Trumpfs ist die Groß- und Kleinschreibung wichtig. + Es wird der erste Buchstabe groß geschrieben und der Rest klein. + +Testfälle +--- +Im Programmcode sind zu jeder der beiden Mittel jeweils 3 Testfälle angegeben. + +PEP8 +--- +Der Programmcode ist soweit wie möglich nach PEP8 abgestimmt. +Von der Aufgabe vorgegebene Funktions- und Variablennamen wurden beibehalten. +Diese sind nicht PEP8 konform (snake_case naming). + diff --git a/EPR/ue04/main.py b/EPR/ue04/main.py new file mode 100644 index 0000000..eb3c317 --- /dev/null +++ b/EPR/ue04/main.py @@ -0,0 +1,192 @@ +'''EPR Übungsblatt 04''' +__author__="7987847, Werner" + +import random + +# a) +def create_card_list(number_of_cards:int) -> [(int, str)]: + '''Erzeugt eine Liste mit Karten mit den vier Farben + und Zahlen von 1 bis number_of_cards + number_of_cards: Anzahl der Karten + ''' + card_list = [] + for i in range(1, int((number_of_cards+1)/4)+1): + card_list.append((i, "Kreuz")) + card_list.append((i, "Pik")) + card_list.append((i, "Herz")) + card_list.append((i, "Karo")) + return card_list + + +# b) +def shuffle_card_list(cards:[(int, str)]) -> [(int, str)]: + '''Mischt eine Liste mit Karten + cards: Liste mit Karten + ''' + random.shuffle(cards) + return cards + + +# c) +def compare_two_cards(card_one:(int, str), card_two:(int, str)) -> int: + '''Vergleicht zwei Karten + card_one: Erste Karte + card_two: Zweite Karte + ''' + if card_one[0] < card_two[0]: + return 0 + if card_one[0] == card_two[0]: + return 1 + return 2 + + +# d) +def compare_two_cards_trump(card_one:(int, str), card_two:(int, str), +trump:str) -> int: + '''Vergleiche Zwei Karten mit dem Trumpf + ''' + if card_one[1] == trump and card_two[1] != trump: + return 0 + if card_one[1] != trump and card_two[1] == trump: + return 1 + return compare_two_cards(card_one, card_two) + + +# e) +def hand_out_cards(list_cards: [(int, str)], players: int, number_of_cards: +int) -> [[(int, str)]]: + '''Teilt die Karten an die Spieler aus + list_cards: Liste mit Karten + players: Anzahl der Spieler + number_of_cards: Anzahl der Karten pro Spieler + ''' + list_players = [] + for _ in range(players): + list_players.append([]) + + for _ in range(number_of_cards): + for j in range(players): + list_players[j].append(list_cards.pop(0)) + + return list_players + + +def main(): + '''Hauptprogramm''' + # Testfälle + + # a) + # create_card_list(0) + # Rückgabe: [] + + # create_card_list(32) + # Rückgabe: [(1, 'Kreuz'), (1, 'Pik'), (1, 'Herz'), (1, 'Karo'), + # (2, 'Kreuz'), (2, 'Pik'), (2, 'Herz'), (2, 'Karo'), (3, 'Kreuz'), + # (3, 'Pik'), (3, 'Herz'), (3, 'Karo'), (4, 'Kreuz'), (4, 'Pik'), + # (4, 'Herz'), (4, 'Karo'), (5, 'Kreuz'), (5, 'Pik'), (5, 'Herz'), + # (5, 'Karo'), (6, 'Kreuz'), (6, 'Pik'), (6, 'Herz'), (6, 'Karo'), + # (7, 'Kreuz'), (7, 'Pik'), (7, 'Herz'), (7, 'Karo'), (8, 'Kreuz'), + # (8, 'Pik'), (8, 'Herz'), (8, 'Karo')] + + # create_card_list(-10) + # Rückgabe: [] + + # b) + # shuffle_card_list([]) + # Rückgabe: [] + + # shuffle_card_list([(1, 'Kreuz'), (1, 'Pik'), (1, 'Herz'), (1, 'Karo'), + # (2, 'Kreuz'), (2, 'Pik'), (2, 'Herz'), (2, 'Karo'), (3, 'Kreuz'), + # (3, 'Pik'), (3, 'Herz'), (3, 'Karo'), (4, 'Kreuz'), (4, 'Pik'), + # (4, 'Herz'), (4, 'Karo'), (5, 'Kreuz'), (5, 'Pik'), (5, 'Herz'), + # (5, 'Karo'), (6, 'Kreuz'), (6, 'Pik'), (6, 'Herz'), (6, 'Karo'), + # (7, 'Kreuz'), (7, 'Pik'), (7, 'Herz'), (7, 'Karo'), (8, 'Kreuz'), + # (8, 'Pik'), (8, 'Herz'), (8, 'Karo')]) + # Rückgabe: [(6, 'Pik'), (1, 'Kreuz'), (4, 'Karo'), (5, 'Kreuz'), + # (8, 'Karo'), (6, 'Herz'), (3, 'Herz'), (1, 'Herz'), (4, 'Pik'), + # (8, 'Pik'), (2, 'Kreuz'), (5, 'Pik'), (3, 'Karo'), (2, 'Herz'), + # (7, 'Pik'), (2, 'Pik'), (7, 'Herz'), (1, 'Pik'), (8, 'Herz'), + # (7, 'Karo'), (6, 'Karo'), (5, 'Herz'), (4, 'Herz'), (3, 'Pik'), + # (2, 'Karo'), (5, 'Karo'), (6, 'Kreuz'), (1, 'Karo'), (8, 'Kreuz'), + # (3, 'Kreuz'), (7, 'Kreuz'), (4, 'Kreuz')] + # (Kann auch anders aussehen) + + # shuffle_card_list([(1, 'Kreuz'), (1, 'Pik'), (1, 'Herz'), (1, 'Karo')] + # Rückgabe: [(1, 'Pik'), (1, 'Kreuz'), (1, 'Karo'), (1, 'Herz')] + # (Kann auch anders aussehen) + + # c) + # compare_two_cards((1, 'Kreuz'), (1, 'Pik')) + # Rückgabe: 1 + + # compare_two_cards((1, 'Kreuz'), (2, 'Pik')) + # Rückgabe: 0 + # compare_two_cards(('Pik), (1)) + # Rückgabe: TypeError: 'int' object is not subscriptable + + # d) + # compare_two_cards_trump((1, 'Kreuz'), (1, 'Pik'), 'Kreuz') + # Rückgabe: 1 + + # compare_two_cards_trump((1, 'Kreuz'), (1, 'Pik'), 'Pik') + # Rückgabe: 0 + + # compare_two_cards_trump((1, 'Kreuz'), (1, 'Pik'), 'Herz') + # Rückgabe: 0 + + # e) + # hand_out_cards([(1, 'Kreuz'), (1, 'Pik'), (1, 'Herz'), (1, 'Karo'), + # (2, 'Kreuz'), (2, 'Pik'), (2, 'Herz'), (2, 'Karo'), (3, 'Kreuz'), + # (3, 'Pik'), (3, 'Herz'), (3, 'Karo'), (4, 'Kreuz'), (4, 'Pik'), + # (4, 'Herz'), (4, 'Karo'), (5, 'Kreuz'), (5, 'Pik'), (5, 'Herz'), + # (5, 'Karo'), (6, 'Kreuz'), (6, 'Pik'), (6, 'Herz'), (6, 'Karo'), + # (7, 'Kreuz'), (7, 'Pik'), (7, 'Herz'), (7, 'Karo'), (8, 'Kreuz'), + # (8, 'Pik'), (8, 'Herz'), (8, 'Karo')], 0, 0) + + # Rückgabe: [] + + # hand_out_cards([(1, 'Kreuz'), (1, 'Pik'), (1, 'Herz'), (1, 'Karo'), + # (2, 'Kreuz'), (2, 'Pik'), (2, 'Herz'), (2, 'Karo'), (3, 'Kreuz'), + # (3, 'Pik'), (3, 'Herz'), (3, 'Karo'), (4, 'Kreuz'), (4, 'Pik'), + # (4, 'Herz'), (4, 'Karo'), (5, 'Kreuz'), (5, 'Pik'), (5, 'Herz'), + # (5, 'Karo'), (6, 'Kreuz'), (6, 'Pik'), (6, 'Herz'), (6, 'Karo'), + # (7, 'Kreuz'), (7, 'Pik'), (7, 'Herz'), (7, 'Karo'), (8, 'Kreuz'), + # (8, 'Pik'), (8, 'Herz'), (8, 'Karo')], 4, 0) + + # Rückgabe: [[], [], [], []] + + # hand_out_cards([], 4, 4) + + # Rückgabe: IndexError: pop from empty list + + print("Es wird ein Kartenspiel erstellt.") + print("Geben Sie die Anzahl der Spieler ein.") + players = int(input("Anzahl der Spieler: ")) + print("Geben Sie die Anzahl der Karten ein.") + number_of_cards = int(input("Anzahl der Karten: ")) + print("Geben Sie den Trumpf ein.") + trump = input("Trumpf: ") + + card_list = create_card_list(number_of_cards) + card_list = shuffle_card_list(card_list) + player_list = hand_out_cards(card_list, players, number_of_cards) + + print("Die Karten werden ausgegeben.") + + for i in range(players): + print("Spieler " + str(i + 1) + ":") + for j in range(number_of_cards): + print(player_list[i][j], end=" ") + print() + + print("Es werden die Karten mit dem Trumpf verglichen.") + + for i in range(players): + print("Spieler " + str(i + 1) + ":") + for j in range(number_of_cards): + if player_list[i][j][1] == trump: + print(player_list[i][j], end=" ") + print() + +if __name__ == '__main__': + main()