ticktacktoe spiel

Fragen zu Tkinter.
Antworten
jado
User
Beiträge: 13
Registriert: Montag 5. Februar 2018, 15:29

hallo ich fange gerade an python zu lernen und wollte zum üben ein ticktacktoe-spiel programmieren aber komme irgentwie nicht weiter (bitte nicht aufregen, wenn es sehr schlecht ist :( )
ich würde mich sehr freuen,wenn mir wer erklären könnte was alles falsch ist. #
Danke :D

Code: Alles auswählen

from tkinter import*


class TickTakToe():
    
    def __init__(self):
        fenster=Tk()
            
            #dateien erstellen
           
        img=PhotoImage(file="leer.png")
        img2=PhotoImage(file="kreis.png")
        img3=PhotoImage(file="kreuz.png")
        spieler=1
        meldung= Label ( fenster , text="Gewinner: ")
        knopf1=Button(fenster,image=img)
        knopf2=Button(fenster,image=img)
        knopf3=Button(fenster,image=img)
        knopf4=Button(fenster,image=img)
        knopf5=Button(fenster,image=img)
        knopf6=Button(fenster,image=img)
        knopf7=Button(fenster,image=img)
        knopf8=Button(fenster,image=img)
        knopf9=Button(fenster,image=img)
        runden=0    
            
        k1=0
        k2=0
        k3=0
        k4=0
        k5=0
        k6=0
        k7=0
        k8=0
        k9=0

       
            
        def auswertung(knopfnummer):
            global spieler,runden
                
                
            if spieler==1:
                knopf1.configure(image=img2,command=a)
                spieler=0
                
            else :
                    #knoepfe[knopfnummer].configure(image=img3,command=a)
                spieler=1
                    
                
                    
                 #bestimmen ob wer gewonnen hat   
            if k1 & k2 & k3 or k4 & k5& k6 or k7 & k8 & k9 or k1 & k4 & k7 or k2 & k5 & k8 or k3 & k6 & k9 or k1 & k5 & k9 or k3 & k5 & k7==1:
                meldung.config(text="Gewinner: " ,bg="yellow")
            elif k1 & k2 & k3 or k4 & k5 & k6 or k7 & k8 & k9 or k1 & k4 & k7 or k2 & k5 & k8 or k3 & k6 & k9 or k1 & k5 & k9 or k3 & k5 & k7==2:
                meldung.config(text="Gewinner: " ,bg="yellow")
            runden+=1
            #unentschieden
            if runden==9:
                print ("unentschieden")
                 
                
            #variabel um knöpfe ungültig zu machen
        def a():
            print("warum")

        #buttons erstellen
        knopf1.configure,(command=auswertung(1))
        knopf2.configure(command=auswertung(2))
        knopf3.configure(command=auswertung(3))
        knopf4.configure(command=auswertung(4))
        knopf5.configure(command=auswertung(5))
        knopf6.configure(command=auswertung(6))
        knopf7.configure(command=auswertung(7))
        knopf8.configure(command=auswertung(8))
        knopf9.configure(command=auswertung(9))
                    
        knopf1.place(x=50,y=70)
        knopf2.place(x=90,y=70)
        knopf3.place(x=130,y=70)
        knopf4.place(x=50,y=110)
        knopf5.place(x=90,y=110)
        knopf6.place(x=130,y=110)
        knopf7.place(x=50,y=150)
        knopf8.place(x=90,y=150)
        knopf9.place(x=130,y=150)

 
        
       
        
      

    

Sirius3
User
Beiträge: 17710
Registriert: Sonntag 21. Oktober 2012, 17:20

@jado: es ist sehr schlecht, aber warum sollte ich mich deshalb aufregen? Bevor Du anfängst, 88 Zeilen Code, der nicht funktioniert zu schreiben, solltest Du klein anfangen, und das Programm Schritt für Schritt schreiben. Am besten vergißt Du GUIs für's erste und schreibst dein Tic-Tac-Toe als Konsolenspiel, wo Du z.B. die Koordinaten per x,y oder 1-9 über `input` einliest und das Feld per `print` ausgibst.

Nur ein paar Dinge, die Du schnell vergessen solltest: die if's in Zeile 54 und 56 funktionieren nicht, wie Du denksts. Vor GUIs solltest Du Objektorientierung richtig lernen. Lerne was Listen sind, k1, .. k9 zu verwenden ist nicht gut.
jado
User
Beiträge: 13
Registriert: Montag 5. Februar 2018, 15:29

Ok ich glaube ich lerne dann noch ein bisschen und probiere es später noch einmal
Antworten