Seite 1 von 1

Ist das so zulässig

Verfasst: Mittwoch 29. Mai 2013, 19:21
von Tengel

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.

Re: Ist das so zulässig

Verfasst: Mittwoch 29. Mai 2013, 19:43
von 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