![]() |
Problem with BlackJack - Printable Version +- Python Forum (https://python-forum.io) +-- Forum: Python Coding (https://python-forum.io/forum-7.html) +--- Forum: General Coding Help (https://python-forum.io/forum-8.html) +--- Thread: Problem with BlackJack (/thread-38309.html) |
Problem with BlackJack - JengaBenga - Sep-27-2022 Hey guys, I'm new here so I'm not sure, what informations you need, but here you go: As a project I want to program Black Jack as a game. The game works, but there's a problem with the question where it asks if you want to pull a card (It's in german, because im swiss sorry). The exact problem is, that the program should automatically stop, if the value of the player's cards or the value of the dealer's cards is more than 21 - but it doesn't. from math import * from random import * Budget = 1000 while True: Einsatz = int(input("Wie viel bist du bereit zu setzen?\n")) if Einsatz > Budget: print("Du hast nicht genug Geld") Einsatz = 0 else: Budget -= Einsatz break print("Sie haben", Einsatz, "CHF gesetzt!") J = 10 D = 10 K = 10 A = 11 AlleDecks = [2, 3, 4, 5, 6, 7, 8, 9, 10, J, D, K, A] * 24 def randomizer(): global Auswahl Auswahl = randint(0, 311) # Hier wird eine Zahl von 0-311 random ausgesucht SpielerKarten = [] # Karten des Spielers zu Beginn des Spiels DealerKarten = [] # Karten des Dealers zu Beginn des Spiels def Spielanfang(): for i in range(2): randomizer() Umwandlung = AlleDecks[Auswahl] SpielerKarten.append(Umwandlung) print("Karten des Spielers", SpielerKarten) print("Summe der Karten des Spielers:", sum(SpielerKarten)) def DealerAnfang(): randomizer() Umwandlung = AlleDecks[Auswahl] DealerKarten.append(Umwandlung) print("Die Anfangskarte des Dealers:", DealerKarten) print("Summe der Karten des Dealers:", sum(DealerKarten)) def askIfSpielerZug(): while True: Frage = str(input("Willst du ziehen?")).upper() if Frage == "JA": print("Summe der Karten des Dealers:", (sum(DealerKarten))) SpielerZug() DealerZug() return True elif Frage == "NEIN": print("Schlusssumme des Spielers:", sum(SpielerKarten)) DealerZug() print("Die Dealerkarten des Dealers:", DealerKarten) print("Die Schlusssumme des Dealers:", sum(DealerKarten)) return False else: print("Bitte antworte mit Ja oder Nein!") def DealerZug(): while sum(DealerKarten) < 17: randomizer() Umwandlung = AlleDecks[Auswahl] DealerKarten.append(Umwandlung) print("Summe der Karten des Dealers:", sum(DealerKarten)) Tc = 0 # Turncounter def SpielerZug(): global Tc # Turncounter Tc = Tc + 1 # Turncounter randomizer() Umwandlung = AlleDecks[Auswahl] SpielerKarten.append(Umwandlung) DifferenzSpieler = 21 - sum(SpielerKarten) print("Spielerkarten nach", Tc, ". Zug:", SpielerKarten) print("Summe der Spielerkarten nach", Tc, ". Zug:", sum(SpielerKarten)) print("Differenz zu 21 fuer den Spieler nach dem", Tc, ". Zug:", DifferenzSpieler) if askIfSpielerZug(): SpielerZug() else: return def Ablauf(): global Einsatz global Budget if sum(SpielerKarten) > 21 and sum(DealerKarten) <= 21: print("Schlusssumme des Spielers:", sum(SpielerKarten)) DealerZug() print("Die Dealerkarten des Dealers:", DealerKarten) print("Die Schlusssumme des Dealers:", sum(DealerKarten)) print("Der Dealer hat gewonnen") Einsatz = 0 return Budget elif sum(SpielerKarten) > 21 and (sum(DealerKarten) > 21): print("Unentschieden") Einsatz = 0 return Budget elif sum(SpielerKarten) <= 21 and sum(DealerKarten) > 21: print("Der Spieler hat gewonnen!") if Einsatz <= 1000: Gewinn = Einsatz * 2 print("Sie haben", Gewinn, "CHF gewonnen!") Budget += Gewinn Einsatz = 0 elif Einsatz > 1000: Gewinn = Einsatz * 3 print("Sie haben", Gewinn, "CHF gewonnen!") Budget += Gewinn Einsatz = 0 return Budget elif sum(SpielerKarten) <= 21 and sum(DealerKarten) <= 21: if sum(DealerKarten) < sum(SpielerKarten): print("Der Spieler hat gewonnen!") if Einsatz <= 1000: Gewinn = Einsatz * 2 print("Sie haben", Gewinn, "CHF gewonnen!") Budget += Gewinn Einsatz = 0 elif Einsatz > 1000: Gewinn = Einsatz * 3 print("Sie haben", Gewinn, "CHF gewonnen!") Budget += Gewinn Einsatz = 0 return Budget elif sum(DealerKarten) > sum(SpielerKarten): print("Der Dealer hat gewonnen!") Einsatz = 0 return Budget elif sum(SpielerKarten) == sum(DealerKarten): print("Unentschieden!") Budget += Einsatz Einsatz = 0 return Budget Spielanfang() DealerAnfang() if askIfSpielerZug(): SpielerZug() DifferenzSpieler = 21 - sum(SpielerKarten) DifferenzDealer = 21 - sum(DealerKarten) print("Differenz zu 21 für den Spieler:", DifferenzSpieler) print("Differenz zu 21 für den Dealer:", DifferenzDealer) Budget = Ablauf() print("Dein Budget ist jetzt:", Budget, "CHF")So my questions are: --> Why does it not work? --> How can I fix it? As a next step I thought of importing Pictures of Black Jack cards (in pygame) and to show the pictures, when this card is pulled during the program. --> Have you an idea how I should do it? --> Have you some advices? Thanks for your help! |