also ich habe folgendes Programm zum asiatischen Glücksspiel "SicBo" geschrieben.. Allerdings habe ich das Problem, dass das Programm nicht mehr funktioniert, sobald mehr als ein Spieler daran teilnimmt (anzahl > 1).
Außerdem lässt das Programm den Spieler noch einmal eine Runde "spielen", obwohl dieser einen Kontostand von 0 besitzt, anstatt das Programm direkt zu beenden.
Könntet ihr mir -wenn möglich- in diesen beiden Punkten weiterhelfen?
P.S: Bin absoluter Anfänger auf dem Python-Gebiet, wie ihr vll auch am Quelltext erkenenn werdet.
Code: Alles auswählen
#Unterprogramm(e)
#Unterprogramm zur Auszahlung bei den Wetten auf bestimmte Summen
def gewinn (konto,k2,einsatz2,zahl2,z2):
if zahl2 == var:
konto[k2] = konto[k2] + z2*einsatz2[k2]
g.append(z2*einsatz2[k2])
else:
konto[k2] = konto[k2] - einsatz2[k2]
einsatz2[k2] = einsatz2[k2] * int(-1)
g.append(einsatz2[k2])
if konto[k2] < 0:
konto[k2] = 0
# Einleitung in das Spiel (Spielregeln)
print("Hallo zum asiatischen Würfelspiel SicBo!")
print(" ")
print("Lesen Sie sich bitte vor Beginn des Spiels die Spielregeln durch:")
print(" ")
print("Das Ziel des Spiels ist es, die Kombination von Nummern, die auf den 3 Würfeln erscheinen werden, vorherzusagen.")
print("Dabei gibt es verschiedene WettmöglichKeiten: ")
print(" ")
print("Zahlenwette: Der Spieler gewinnt, wenn genau die Augensumme gewürfelt wird, auf die er gewettet hat. Die Auszahlung erfolgt dabei - je nach Zahl - bis zu einem Verhältnis von 60:1.")
print(" ")
print("Wette UNDER 10: Der Spieler gewinnt, wenn die Gesamtsumme auf den drei Würfeln zwischen 4 und 10 liegt. Die Auszahlung erfolgt im Verhältnis 1:1. ")
print(" ")
print("Wette OVER 11: Der Spieler gewinnt, wenn die Gesamtsumme auf den drei Würfeln zwischen 11 und 17 liegt. Die Auszahlung erfolgt im Verhältnis 1:1.")
print(" ")
print("Wette Triple: Der Spieler gewinnt, wenn ein Triple gewürfelt wird, also drei Würfel mit der gleichen Augenzahl(Summe 3,6,9,12,15,18). Die Auszahlung erfolgt im Verhältnis 30:1.")
print(" ")
# Beginn des Programms
import random
random.seed()
runde = 1
anzahl = int(input('Wie viele Spieler gibt es? '))
# Spieler initialisieren
k = 0
name = []
while k < anzahl:
print('Spieler',k + 1,':')
name.append(str(input('Bitte geben sie ihren Namen ein! ')))
print("Hallo",name[k],"!")
k = k + 1
print()
konto = int(input('Geben Sie bitte das Startguthaben ein: '))
# Konto initialisieren
g = 0
sk = []
while g <= anzahl:
sk.append(konto)
g = g + 1
# Beginn des eigentlichen Spiels
while runde > 0:
global var
var = random.randint(3,18) # die Zahl wird festgelegt
einsatz = []
g = []
k = 0
while k < anzahl:
if sk[k] <= 0: # Überprüfen ob ein Spieler den Kontostand 0 besitzt, wenn ja setzt dieser aus, ansonsten beginnt für ihn das Spiel
print(name[k],'hat kein Geld mehr auf seinem Konto. Er hat verloren und kann daher nicht mehr am Spiel teilnehmen.')
einsatz.append(0)
g.append(0)
runde = 0
k = 10000
else:
print(name[k],'ist an der Reihe.')
print("Ihr Kontoguthaben beträgt: ",sk[k])
einsatz.append(int(input('Wie viel möchten Sie setzen? '))) # Einsatz des Spielers wird gesetzt
while einsatz[k] < 1 or einsatz[k] > sk[k]:
print('Der Einsatz übersteigt Ihr Budget oder ist zu niedrig!')
einsatz[k] = int(input('Wie viel möchten Sie setzen? ')) # Schleife die ein Zuviel- oder Zuwenig-Setzen verhindert
wette = str(input("Möchten Sie auf eine bestimmte Summe setzen (j/n)? ")) # Einschränkung der Wette beginnt (bestimmte Summe) --> Wette: bestimmte Summe
if wette == 'j':
zahl = int(input("Bitte die gewünschte Summe eingeben (4-17): ")) # der Spieler muss auf eine Zahl zwischen 4 und 17 wetten
while zahl < 4 or zahl > 17:
print('Diese Summe existiert nicht beim SicBo!')
zahl = int(input("Bitte die zahl eingeben (4-17): ")) # Schleife die ein Falschsetzen verhindert
if zahl == 4 or zahl == 17:
z = 60
elif zahl == 5 or zahl == 16:
z = 30
elif zahl == 6 or zahl == 15:
z = 18
elif zahl == 7 or zahl == 14: #Festlegung der Auszahlungsquoten bei den bestimmten Summen
z = 12
elif zahl == 8 or zahl == 13:
z = 8
elif zahl == 9 or zahl == 12:
z = 7
elif zahl == 10 or zahl == 11:
z = 6
gewinn(sk,k,einsatz,zahl,z) #Aufruf Unterprogramm --> Auszahlung der Wette auf die bestimmte Summe
else:
art = input ('Möchten sie auf Under 11 (under), Over10 (over) oder auf ein unbestimmtes Triple (triple) setzen?') # weitere Einschränkung der Wette, falls der Spieler nicht auf eine bestimmte Summe wetten möchte
if art == 'under': # Wette "Under11"
if var < 11:
sk[k] = sk[k] + einsatz[k]
g.append(0 + einsatz[k])
else:
sk[k] = sk[k] - einsatz[k]
g.append(0 - einsatz[k])
else:
if art == 'over': # Wette "Over10"
if var > 10:
sk[k] = sk[k] + einsatz[k]
g.append(einsatz[k])
else:
sk[k] = sk[k] - einsatz[k]
g.append(0-einsatz[k])
else:
if art == 'triple': # Wette "Triple"
if var == 3 or var == 6 or var == 9 or var == 12 or var == 15 or var == 18:
sk[k] = sk[k] + 30*einsatz[k]
g.append(30*einsatz[k])
else:
sk[k] = sk[k] - einsatz[k]
g.append(0-einsatz[k])
k = k + 1
print()
print("Die Zahl ",var," ist gefallen!") # Ausgabe der gewürfelten Zahl
k = 0
while k < anzahl:
if g[k] > 0:
print(name[k],'hat',g[k],'Gewinn gemacht!') #Ausgabe des Gewinn des Spielers
print('neuer Kontostand ',name[k],': ',sk[k]) #Ausgabe des neuen Kontostands
else:
print(name[k],'hat',g[k]*int(-1),'Verlust gemacht!') #Ausgabe des Verlusts des Spielers
print('neuer Kontostand ',name[k],': ',sk[k]) #Ausgabe des neuen Kontostands
k = k + 1
if sk[k] == 0 :
print("Der Spieler ",k," hat das Spiel verloren!")
else:
runden = input("Möchten Sie noch eine Runde spielen (j/n)?") # Abfrage nach einer weiteren Runde
if runden == 'n':
runde = 0
print ('Auf Wiedersehen!')
print()
k = 0
print()