Partage
  • Partager sur Facebook
  • Partager sur Twitter

Aide Tkinter Tic Tac Toe

    18 octobre 2020 à 21:28:15

    Salut ! 

    Alors voilà je découvre les interfaces graphiques de Python (quelles merveilles :ange:) et je me suis donné pour objectif de faire un Tic Tac Toe. Seulement je ne sais pas comment faire pour changer de joueur, je m'explique : 

    -Quand le joueur appuie sur un bouton, un rond s'affiche et donc on passe au deuxième joueur

    - Quand le deuxième joueur appuie sur un bouton, une croix s'affiche et donc on repasse au premier joueur

    Voici mon code (profitez en pour me dire ce qui ne va pas merciii):

    from tkinter import*
    
    #création d'une fenêtre
    window = Tk()
    window.title("Morpion")
    window.geometry("500x500")
    window.minsize(500,500)
    window.maxsize(500,500)
    window.config(background = "white")
    
    #frame
    frame = Frame(window,bg="white")
    frame.pack(expand=YES)
    
    
    #commande bouton
    def command(row,column):
        width = 100
        height = 100
        joueur = 1
        if joueur == 1:
            # cercle
            cercle = Canvas(frame, width=width, height=height)
            cercle.create_oval(10, 5, 90, 90, width=10, outline="blue")
            joueur += 1
            cercle.grid(row=row,column = column)
        else:
            # croix
            croix = Canvas(frame, width=width, height=height)
            croix.create_line(15, 5, 86, 100, width=10, fill='red')
            croix.create_line(80, 5, 20, 100, width=10, fill='red')
            croix.grid(row=row, column=column)
            joueur = -1
    
    #titre
    titre = Label(frame,text="Morpion",font=("Arial",20),fg = "black",bg = "white")
    titre.grid(row=0,column=1)
    
    #boutons
    button_1 = Button(frame,padx = 60,pady=60,command = lambda:command(1,0))
    button_1.grid(row=1,column=0)
    button_2 = Button(frame,padx = 60,pady=60,command = lambda:command(1,1))
    button_2.grid(row=1,column=1)
    button_3 = Button(frame,padx = 60,pady=60,command = lambda:command(1,2))
    button_3.grid(row=1,column=2)
    button_4 = Button(frame,padx = 60,pady=60,command = lambda:command(2,0))
    button_4.grid(row=2,column=0)
    button_5 = Button(frame,padx = 60,pady=60,command = lambda:command(2,1))
    button_5.grid(row=2,column=1)
    button_6 = Button(frame,padx = 60,pady=60,command = lambda:command(2,2))
    button_6.grid(row=2,column=2)
    button_7 = Button(frame,padx = 60,pady=60,command = lambda:command(3,0))
    button_7.grid(row=3,column=0)
    button_8 = Button(frame,padx = 60,pady=60,command = lambda:command(3,1))
    button_8.grid(row=3,column=1)
    button_9 = Button(frame,padx = 60,pady=60,command = lambda:command(3,2))
    button_9.grid(row=3,column=2)
    
    
    
    #afficher la fenêtre
    window.mainloop()



    • Partager sur Facebook
    • Partager sur Twitter
      18 octobre 2020 à 22:23:53

      A chaque appui sur un Button, la fonction command est appelée et doit changer de joueur.

      La valeur de joueur doit survivre à la fonction pour que l'appel suivant soit fait pour le compte du bon joueur.

      Pour que çà marche, joueur ne peut être variable locale (qui sera détruite lorsque la fonction se termine).

      Pour le reste, pas la peine de créer un Canvas pour y placer une seule figure: vous pourriez utiliser un seul Canvas et y dessiner cases, cercles et croix. Pareil pour la création des Button: créer 3x3 Button, c'est 2 boucles imbriquées et non la recopie de 9 lignes presque identiques. Il faut utiliser son cerveau pour faire bosser la machine et non le mettre en pause pour la regarder bosser!

      • Partager sur Facebook
      • Partager sur Twitter
        18 octobre 2020 à 22:59:20

        Mais alors, comment la faire survivre ? En créant une variable global ? Ça fait que deux semaine que j’ai commencé, pardonnez mes questions qui peuvent être idiote...

        • Partager sur Facebook
        • Partager sur Twitter
          19 octobre 2020 à 9:07:01

          Non pas de global. Avec tkinter il faut faire des classes.
          • Partager sur Facebook
          • Partager sur Twitter
            19 octobre 2020 à 16:05:36

            Le paysan a écrit:

            Mais alors, comment la faire survivre ? En créant une variable global ? Ça fait que deux semaine que j’ai commencé, pardonnez mes questions qui peuvent être idiote...


            Les variables globales sont une solution facile à utiliser quand on débute. Plus tard, vous apprendrez à vous en passez.

            • Partager sur Facebook
            • Partager sur Twitter

            Aide Tkinter Tic Tac Toe

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown