Verbesserungen

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
Brevista
User
Beiträge: 32
Registriert: Sonntag 2. Juli 2017, 00:48

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()
Zuletzt geändert von Anonymous am Dienstag 15. August 2017, 13:50, insgesamt 1-mal geändert.
Grund: Quelltext in Python-Codebox-Tags gesetzt.
Sirius3
User
Beiträge: 17711
Registriert: Sonntag 21. Oktober 2012, 17:20

@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.
Antworten