Aufgabe 1:
- Erstelle eine Python-App, die zunächst eine Liste mit den 52 Pokerkarten erstellt (Karo, Herz, Pik, Kreuz, 2,3,4,5,6,7,8,9,10,Junge,Dame, König, Ass) erstellt. Dabei soll jede Karte wiederum als Liste abgespeichert werden, bestehend aus ihrer Farbe, ihrer Bezeichnung und ihrem Wert.
- Erkundige dich über die Wertigkeiten beim Blackjack selbstständig und vervollständige so das Deck.
- Nach der Definition soll nun das Deck gemischt werden (das Deck ist eine Liste). Danach soll die erste Karte des Decks dem Nutzer als Text ausgegeben werden.
- Der Nutzer entscheidet sich, ob er nun noch eine Karte möchte oder der Dealer am Zug ist.
- Das Ganze wiederholt sich, bis der Spieler den Dealer an die Reihe kommen lässt, oder die Summe der Werte der aufgedeckten Karten 21 übersteigt. Ist die Summe an einem Punkt genau 21 hat der Spieler sofort gewonnen. Übersteigt die Summe an einem Punkt 21, so hat der Spieler sofort verloren.
- In jedem anderen Fall wird nun (für den Dealer) so oft eine Karte vom Stapel gezogen, bis seine Karten ebenfalls einen Wert von 21 übersteigen. Wenn das passiert, gewinnt der Spieler. Hat der Dealer aber zwischendurch eine Wertsumme, die über der des Spielers liegt, verliert der Spieler.
- Alle soeben aufgedeckten Karten, sowie die insgesamt aktuell aufgedeckten Karten sollen für jeden Spielschritt ausgedruckt werden.
Hinweise:
- Deck erstellen:
Deck = [['Herz','Junge',10],['Pik','Dame',10],...
- Erstelle für die aufgedeckten Karten des Spielers und des Dealers jeweils eine Liste und befülle sie mit den Karten (Karten sind selbst auch listen mit 3 Elementen), die du aus dem Deck entnimmst.
- Die folgende Funktion mischt ein Liste:
from random import *
shuffle(Deck)
- Die folgende Funktion verkleinert eine Liste um das nte Element und gibt dieses Element zurück:
karte = Deck.pop(n)
- Die folgende Funktion fügt einer Liste ein Element hinzu:
Spielerkarten.append(karte)
- Die Wertsummen sollten zunächst in separaten Variablen gespeichert werden.
🛡🔑🛡
Aufgabe 2
- Erweitere das Spiel so, dass zum Berechnen der Spielerkartenwerte/ der Dealer Kartenwerte eine selbstgeschriebene Funktion mit dem Namen berechneKartenwertsumme(Liste) verwendet wird.
- Die Funktion soll eine Liste aus Karten als Eingabewert erwarten (Also eine Liste aus Listen) und die Summe der Kartenwerte der Liste als Integer zurückgeben.
Tipp:
- Die Kartenwerte stehen an Indexposition 2 in den Kartenlisten. Es muss also die übergebene Liste mithilfe einer for-Schleife durchgegangen werden und dann jeweils der dritte Wert auf die Summe (die vorher mit dem Wert 0 angelegt wurde) addiert werden. Danach wird die Summe zurückgegeben.
🛡🔑🛡
Aufgabe 3:
- Erweitere das Spiel so, dass statt die Karten als Unterlisten zu printen, eine Funktion printKarte(Liste) benutzt wird, die die Liste Stück für Stück als String zusammensetzt und dann auf der Konsole ausgibt.
- Auf diese weise können Colorcodes benutzt werden, um Text farbig darzustellen. Implementiere Colorcodes in die Kartentexte.
Tipp:
- Die Colorcodes können oben einmal definiert werden, anstatt sie jedes Mal neu in die String zu schreiben:
BLACK = '\033[30m'
RED = '\033[31m'
GREEN = '\033[32m'
YELLOW = '\033[33m' # orange on some systems
BLUE = '\033[34m'
MAGENTA = '\033[35m'
CYAN = '\033[36m'
LIGHT_GRAY = '\033[37m'
DARK_GRAY = '\033[90m'
BRIGHT_RED = '\033[91m'
BRIGHT_GREEN = '\033[92m'
BRIGHT_YELLOW = '\033[93m'
BRIGHT_BLUE = '\033[94m'
BRIGHT_MAGENTA = '\033[95m'
BRIGHT_CYAN = '\033[96m'
WHITE = '\033[97m'
RESET = '\033[0m' # called to return to standard terminal text color
- Die Benutzung erfolgt, indem man dann die vordefinierten Far-Variablen mit den eigenen Strings verknüpft:
print(BLACK + "black" + RESET)
print(RED + "red" + RESET)
print(GREEN + "green" + RESET)
print(YELLOW + "yellow" + RESET)
print(BLUE + "blue" + RESET)
print(MAGENTA + "magenta" + RESET)
print(CYAN + "cyan" + RESET)
print(LIGHT_GRAY + "light gray" + RESET)
print(DARK_GRAY + "dark gray" + RESET)
print(BRIGHT_RED + "bright red" + RESET)
print(BRIGHT_GREEN + "bright green" + RESET)
print(BRIGHT_YELLOW + "bright yellow" + RESET)
print(BRIGHT_BLUE + "bright blue" + RESET)
print(BRIGHT_MAGENTA + "bright magenta" + RESET)
print(BRIGHT_CYAN + "bright cyan" + RESET)
print(WHITE + "white" + RESET)