Ist das so zulässig

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Tengel
User
Beiträge: 210
Registriert: Sonntag 17. März 2013, 12:29

Code: Alles auswählen

def Spielablauf(tisch, stapel, spieler, spieler2):
    if len(spieler) == 0:
        print(self.spieler," hat Gewonnen!!!")
    elif len(spieler2) == 0:
        print(self.spieler," hat Gewonnen!!!")

    else:
        print(tisch,"\n")
        print("Deine Hand")
        x=1
        for karte in spieler.hand:
            print(x, karte)
            x +=1
        print("0: Ziehe Karte")
            
        spieler.KarteSpielen(tisch, stapel)
       
        ueberpruefe_karte(tisch, stapel, spieler, spieler2)
        
        Spielablauf(tisch, stapel, spieler2, spieler1)


Es geht immer noch um ein Kartenspiel - diese Funktion ist für die einzelnen Spielzüge zuständig, ruft sich nach Durchlauf selbst auf und übergibt an den anderen Spieler.
BlackJack

@Tengel: Das wird früher oder später in einem ``RuntimeError: maximum recursion depth exceeded`` enden. Wenn Du ganz einfach etwas wiederholen möchtest, dann verwende eine Schleife und keine Rekursion.

Also in etwa so:

Code: Alles auswählen

def spielablauf(tisch, stapel, spieler1, spieler2):
    while True:
        if not spieler1:
            print(spieler1, ' hat Gewonnen!!!')
            break
        elif not spieler2:
            print(spieler2, ' hat Gewonnen!!!')
            break
        else:
            print(tisch, '\n')
            print('Deine Hand')
            for i, karte in enumerate(spieler1.hand, 1):
                print(i, karte)
            print('0: Ziehe Karte')
            spieler1.spiele_karte(tisch, stapel)
            ueberpruefe_karte(tisch, stapel, spieler1, spieler2)
            spieler1, spieler2 = spieler2, spieler1
Antworten