Seite 1 von 1

Verbesserungen

Verfasst: Dienstag 15. August 2017, 13:44
von Brevista
Hallo ich wollte fragen ob jemand Verbesserungen and diesem Programm hat, funktionieren tut es

Code: Alles auswählen

def ausgabe():
    global geschrieben


    for i in range(0,9):
        if code[i] == 0:
            geschrieben[i] = "[ ]"
        elif code[i] == 1:
            geschrieben[i] = "[O]"
        elif code[i] == 2:
            geschrieben[i] = "[X]"
    print(geschrieben[0], geschrieben[1], geschrieben[2])
    print("")
    print(geschrieben[3], geschrieben[4], geschrieben[5])
    print("")
    print(geschrieben[6], geschrieben[7], geschrieben[8])
    print("")
sieg = False
def test():
    global sieg

    if code[0] == 1 and code[1] == 1 and code[2] == 1:
        print("Spieler" + str(1) + " hat gewonnen")
        sieg = True
    elif code[0] == 1 and code[4] == 1 and code[8] == 1:
        print("Spieler" + str(1) + " hat gewonnen")
        sieg = True
    elif code[0] == 1 and code[3] == 1 and code[6] == 1:
        print("Spieler" + str(1) + " hat gewonnen")
        sieg = True
    elif code[1] == 1 and code[4] == 1 and code[7] == 1:
        print("Spieler" + str(1) + " hat gewonnen")
        sieg = True
    elif code[2] == 1 and code[4] == 1 and code[6] == 1:
        print("Spieler" + str(1) + " hat gewonnen")
        sieg = True
    elif code[2] == 1 and code[5] == 1 and code[8] == 1:
        print("Spieler" + str(1) + " hat gewonnen")
        sieg = True
    elif code[3] == 1 and code[4] == 1 and code[5] == 1:
        print("Spieler" + str(1) + " hat gewonnen")
        sieg = True
    elif code[6] == 1 and code[7] == 1 and code[8] == 1:
        print("Spieler" + str(1) + " hat gewonnen")
        sieg = True
    elif code[0] == 2 and code[1] == 2 and code[2] == 2:
        print("Spieler" + str(2) + " hat gewonnen")
        sieg = True
    elif code[0] == 2 and code[4] == 2 and code[8] == 2:
        print("Spieler" + str(2) + " hat gewonnen")
        sieg = True
    elif code[0] == 2 and code[3] == 2 and code[6] == 2:
        print("Spieler" + str(2) + " hat gewonnen")
        sieg = True
    elif code[1] == 2 and code[4] == 2 and code[7] == 2:
        print("Spieler" + str(2) + " hat gewonnen")
        sieg = True
    elif code[2] == 2 and code[4] == 2 and code[6] == 2:
        print("Spieler" + str(2) + " hat gewonnen")
    elif code[2] == 2 and code[5] == 2 and code[8] == 2:
        print("Spieler" + str(2) + " hat gewonnen")
        sieg = True
    elif code[3] == 2 and code[4] == 2 and code[5] == 2:
        print("Spieler" + str(2) + " hat gewonnen")
        sieg = True
    elif code[6] == 2 and code[7] == 2 and code[8] == 2:
        print("Spieler" + str(2) + " hat gewonnen")
        sieg = True


    elif 0 not in code:
        print("")
        print("Unentschieden")
        sieg = True


def eingabe(spieler):
    while True:
        print("")
        stelle = input("1-9 >>")
        print("")
        try:
            if code[int(stelle)-1] == 0:
                code[int(stelle)-1] = spieler
                return
            else:
                print("bereits belegt")
                print("")
                ausgabe()
        except:
            print("zahl zwischen 1 -9")



def main():
    global sieg
    global code
    global geschrieben
    geschrieben = ["-","-","-","-","-","-","-","-","-"]
    code = [0,0,0,0,0,0,0,0,0]
    while True:
        ausgabe()
        test()
        if sieg is True:
            code = [0,0,0,0,0,0,0,0,0]
            ausgabe()
            sieg = False
        eingabe(spieler = 1)
        ausgabe()
        test()
        if sieg is True:
            code = [0,0,0,0,0,0,0,0,0]
            ausgabe()
            sieg = False
        eingabe(spieler = 2)






if __name__ == '__main__':
    main()

Re: Verbesserungen

Verfasst: Dienstag 15. August 2017, 14:01
von Sirius3
@Brevista: als erstes solltest Du richtige Funktionen benutzen, also welche, die alle Informationen, die sie brauchen über ihre Argumente bekommen und das was sie berechnen per "return" zurückgeben; gleichzeitig solltest Du damit alle globalen Variablen loswerden.

Wenn Du das erledigt hast, kann man an die Feinheiten gehen, z.B. die vielen Wiederholungen in `test` eliminieren; oder in `ausgabe` `geschrieben` und die if-elif-Kaskade loswerden.