Problem beim Spiel "SicBo"
Verfasst: Mittwoch 7. Oktober 2009, 16:30
Tag Leute,
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.
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()