IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Tkinter Python Discussion :

blocage dans programme mastermind


Sujet :

Tkinter Python

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Novembre 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Novembre 2015
    Messages : 3
    Points : 1
    Points
    1
    Par défaut blocage dans programme mastermind
    Bonsoir,
    je dois réaliser un jeu mastermind et je suis bloqué : je n'arrive pas à lier les couleurs cliquer avec les 4 derniers rectangles ni à récuperer celles ci pour les mettre sur la premiere ligne avec le bouton send .
    voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
     
    import tkinter as tk
    from random import *
     
    def init_game():
        global code
        code=[]
     
        while len(code)<4:
            nb=randint(1,8)
     
            if nb not in code:
                code.append(nb)
     
     
     
     
     
    def check_play(code_entre):
        global black
        global white
        black=0
        white=0
        for el in code_entre :
            if el in code:
                if code.index(el) == code_entre.index(el):
                    black+=1
     
     
                else:
                    white+=1
     
     
     
     
    def start():        
        tentatives = 0
        init_game()
        print(code)
     
     
        while tentatives <12 :
            entree = input("jouez 4 couleurs parmi [1,8] séparéés d'un espace : ")
            possible=["1","2","3","4","5","6","7","8"," "]
            code_entre=[]
            for ele in entree:
                if ele not in possible or entree.count(ele) > 1 :
                    entree= input(" entrer des valeurs valides svp ")
                elif ele != " ":
                    ele=int(ele)
                    code_entre.append(ele)
            check_play(code_entre)
     
            if black == 4:
     
                print("gagné ! tu es très intelligent ! tu as utilisé ", tentatives, "essais")
                break
            print("=> black " ,black , "white ", white)
            tentatives+=1
            print("tu as utilisé ", tentatives ," essais sur 12")
     
     
    tkcolors=["white", "black", "red", "blue", "green", "yellow", "purple",
    "orange"]
     
    def choix(event,couleur):
          canvas.itemconfigure(carre,fill=couleur)
     
    def send():
        print("send")
     
    def reset_row():
        print("reset")
     
     
    app=tk.Tk()
    app.title("Mastermind")
     
     
     
    new_game=tk.Button(app,text="new game",command=init_game,width=10)
    new_game.grid(row=0,column=0,columnspan=8,sticky=tk.W)
     
    canvas=tk.Canvas(app,width=300,height=450,bg="white")
    canvas.grid(row=1 ,column=0,columnspan=8)
     
    send=tk.Button(app, text="send",command=send,width=10)
    send.grid(row=40 , column=0,columnspan=4 ,sticky=tk.E)
    reset = tk.Button(app,text="reset", command=reset_row,width=10)
    reset.grid(row=40,column=4 , columnspan=4,sticky=tk.E)
     
     
    for i, color in enumerate(tkcolors):
        b = tk.Button(app, text='', width=3, bg=color, activebackground=color)
        b.grid(row=20, column=i)
        def click_bt(event,couleur = color):
            return choix(event,couleur)
        b.bind("<Button-1>",click_bt)
     
    ##creation grille carré:   
    x0=10
    y0=10
    x1=40
    y1=40
    for a in range(11):
        for c in range(4):
            carre=canvas.create_rectangle(x0,y0,x1,y1,fill="grey")
            x0+=40
            x1+=40
        y0+=40
        y1+=40
        x0=10
        x1=40
     
    ## creation cercles:
    i=170
    j=10
    k=180
    l=20
    for a in range(10):
        for c in range(4):
            cercle = canvas.create_oval(i,j,k,l)
            i+=15
            k+=15
        j+=40
        l+=40
        k=180
        i=170
     
     
     
    ligne= canvas.create_line(0,405,300,405)
    init_game()
    app.mainloop()





    si quelqu'un pouvait éclairer ma lanterne je suis preneur !
    Fichiers attachés Fichiers attachés

  2. #2
    Membre éprouvé
    Homme Profil pro
    Aucune activité
    Inscrit en
    Novembre 2011
    Messages
    505
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Aucune activité

    Informations forums :
    Inscription : Novembre 2011
    Messages : 505
    Points : 926
    Points
    926
    Par défaut
    Citation Envoyé par mewen Voir le message
    Bonsoir,
    je dois réaliser un jeu mastermind et je suis bloqué : je n'arrive pas à lier les couleurs cliquer avec les 4 derniers rectangles ni à récuperer celles ci pour les mettre sur la premiere ligne avec le bouton send .
    Bonsoir,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        def click_bt(event,couleur = color):
            choix(event,couleur)
        b.bind("<Button-1>",click_bt)
    (avec le bouton "#" au-dessus de l'éditeur afin que le code soit lisible)
    Appelle la fonction "choix":
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    def choix(event,couleur):
          canvas.itemconfigure(carre,fill=couleur)
    qui utilise la variable globale "carre"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    x0=10
    y0=10
    x1=40
    y1=40
    for a in range(11):
        for c in range(4):
            carre=canvas.create_rectangle(x0,y0,x1,y1,fill="grey")
            x0+=40
            x1+=40
        y0+=40
        y1+=40
        x0=10
        x1=40
    Question:
    À la sortie de cette boucle quelle est la valeur de "carre" (à quel objet fait-il référence)?
    => au dernier "carre" créé.

    Oui?
    Pour pouvoir:
    Citation Envoyé par mewen Voir le message
    lier les couleurs cliquer avec les 4 derniers rectangles ni à récuperer celles ci pour les mettre sur la premiere ligne avec le bouton send .
    Il faut tout d'abord trouver un moyen de récupérer le "carre" concerné, oui? Donc celui situé en haut à gauche… Puis le second… jusqu'au quatrième (à droite).
    Tout en faisant cela, maintenir une mémoire des précédents "carre" de la même ligne (afin de pouvoir comparer les couleurs à la ligne à deviner). Oui?

    L'une des manière est de conserver les références des "carre" dans une liste, puis d'en modifier la couleur en commençant les quatre premiers de la liste (une variable?), Tant qu'à faire, ces quatre couleurs sont mémorisées (variable?) à partir de la fonction "choix". Ceci fait, cliquer sur le bouton "send" doit lancer une fonction, récupérant ces quatre couleurs, et les comparer à celles masquées (conservées dans "code").

    Jusqu'ici, il n'y a rien d'insurmontable, non?

    Clodion

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Novembre 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Novembre 2015
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Merci pour ces indications ! j'ai changer quelques éléments mais je ne parvienstoujours qu'à colorer un seul carré ....
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    import tkinter as tk
    from random import *
     
    def init_game():
        dessin_grille()
        global code
        code=[]
     
        while len(code)<4:
            nb=randint(1,8)
     
            if nb not in code:
                code.append(nb)
     
     
     
     
     
    def check_play(code_entre):
        global black
        global white
        black=0
        white=0
        for el in code_entre :
            if el in code:
                if code.index(el) == code_entre.index(el):
                    black+=1
     
     
                else:
                    white+=1
     
     
     
     
    def start():        
        tentatives = 0
        init_game()
        print(code)
     
     
        while tentatives <12 :
            entree = input("jouez 4 couleurs parmi [1,8] séparéés d'un espace : ")
            possible=["1","2","3","4","5","6","7","8"," "]
            code_entre=[]
            for ele in entree:
                if ele not in possible or entree.count(ele) > 1 :
                    entree= input(" entrer des valeurs valides svp ")
                elif ele != " ":
                    ele=int(ele)
                    code_entre.append(ele)
            check_play(code_entre)
     
            if black == 4:
     
                print("gagné ! tu es très intelligent ! tu as utilisé ", tentatives, "essais")
                break
            print("=> black " ,black , "white ", white)
            tentatives+=1
            print("tu as utilisé ", tentatives ," essais sur 12")
     
     
    tkcolors=["white", "black", "red", "blue", "green", "yellow", "purple",
    "orange"]
     
     
    def choix(event):
        l=0
        while l<4:  
            dessine_rect(l,10,event.widget["bg"])
     
     
     
     
    def new_game():
        global code
        init_game()
        for ele in range(10):
            for el in range(4):
                canvas.itemconfigure(str(ele)+"-"+str(el),fill="grey")
            liste = ["grey" for i in range(4)]
            print(code)
    def send():
        print("send")
     
    def reset_row():
        print("reset")
     
     
    app=tk.Tk()
    app.title("Mastermind")
     
     
     
    new_game=tk.Button(app,text="new game",command=init_game,width=10)
    new_game.grid(row=0,column=0,columnspan=8,sticky=tk.W)
     
    canvas=tk.Canvas(app,width=300,height=450,bg="white")
    canvas.grid(row=1 ,column=0,columnspan=8)
     
    send=tk.Button(app, text="send",command=send,width=10)
    send.grid(row=40 , column=0,columnspan=4 ,sticky=tk.E)
    reset = tk.Button(app,text="reset", command=reset_row,width=10)
    reset.grid(row=40,column=4 , columnspan=4,sticky=tk.E)
     
     
    for i , color in enumerate(tkcolors):
        b = tk.Button(app, text="",width=3,bg=color,activebackground=color)
        b.grid(row=20,column = i)
        b.bind("<Button-1>",choix)
     
    ##creation grille carré:
     
    def dessine_rect(i,j,col):
        espace,taille=10,30
        canvas.create_rectangle(i*(taille+espace)+espace,j*(taille+espace)+espace,i*(taille+espace)+espace+taille,j*(taille+espace)+espace+taille,fill=col)
     
    def dessin_grille():
        for j in range(10):
            for i in range(4):
                dessine_rect(i,j,"grey")
    dessin_grille()
     
    ## creation cercles:
    i=170
    j=10
    k=180
    l=20
    for a in range(10):
        for c in range(4):
            cercle = canvas.create_oval(i,j,k,l)
            i+=15
            k+=15
        j+=40
        l+=40
        k=180
        i=170
     
     
     
    ligne= canvas.create_line(0,405,300,405)
    init_game()
    app.mainloop()

  4. #4
    Membre éprouvé
    Homme Profil pro
    Aucune activité
    Inscrit en
    Novembre 2011
    Messages
    505
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Aucune activité

    Informations forums :
    Inscription : Novembre 2011
    Messages : 505
    Points : 926
    Points
    926
    Par défaut
    Citation Envoyé par mewen Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    import tkinter as tk
    from random import *
     
    def init_game():
        dessin_grille()
        global code
        code=[]
     
        while len(code)<4:
            nb=randint(1,8)
     
            if nb not in code:
                code.append(nb)
     
     
     
     
     
    def check_play(code_entre):
        global black
        global white
        black=0
        white=0
        for el in code_entre :
            if el in code:
                if code.index(el) == code_entre.index(el):
                    black+=1
     
     
                else:
                    white+=1
     
     
     
     
    def start():        
        tentatives = 0
        init_game()
        print(code)
     
     
        while tentatives <12 :
            entree = input("jouez 4 couleurs parmi [1,8] séparéés d'un espace : ")
            possible=["1","2","3","4","5","6","7","8"," "]
            code_entre=[]
            for ele in entree:
                if ele not in possible or entree.count(ele) > 1 :
                    entree= input(" entrer des valeurs valides svp ")
                elif ele != " ":
                    ele=int(ele)
                    code_entre.append(ele)
            check_play(code_entre)
     
            if black == 4:
     
                print("gagné ! tu es très intelligent ! tu as utilisé ", tentatives, "essais")
                break
            print("=> black " ,black , "white ", white)
            tentatives+=1
            print("tu as utilisé ", tentatives ," essais sur 12")
     
     
    tkcolors=["white", "black", "red", "blue", "green", "yellow", "purple",
    "orange"]
     
     
    def choix(event):
        l=0
        while l<4:  
            dessine_rect(l,10,event.widget["bg"])
     
     
     
     
    def new_game():
        global code
        init_game()
        for ele in range(10):
            for el in range(4):
                canvas.itemconfigure(str(ele)+"-"+str(el),fill="grey")
            liste = ["grey" for i in range(4)]
            print(code)
    def send():
        print("send")
     
    def reset_row():
        print("reset")
     
     
    app=tk.Tk()
    app.title("Mastermind")
     
     
     
    new_game=tk.Button(app,text="new game",command=init_game,width=10)
    new_game.grid(row=0,column=0,columnspan=8,sticky=tk.W)
     
    canvas=tk.Canvas(app,width=300,height=450,bg="white")
    canvas.grid(row=1 ,column=0,columnspan=8)
     
    send=tk.Button(app, text="send",command=send,width=10)
    send.grid(row=40 , column=0,columnspan=4 ,sticky=tk.E)
    reset = tk.Button(app,text="reset", command=reset_row,width=10)
    reset.grid(row=40,column=4 , columnspan=4,sticky=tk.E)
     
     
    for i , color in enumerate(tkcolors):
        b = tk.Button(app, text="",width=3,bg=color,activebackground=color)
        b.grid(row=20,column = i)
        b.bind("<Button-1>",choix)
     
    ##creation grille carré:
     
    def dessine_rect(i,j,col):
        espace,taille=10,30
        canvas.create_rectangle(i*(taille+espace)+espace,j*(taille+espace)+espace,i*(taille+espace)+espace+taille,j*(taille+espace)+espace+taille,fill=col)
     
    def dessin_grille():
        for j in range(10):
            for i in range(4):
                dessine_rect(i,j,"grey")
    dessin_grille()
     
    ## creation cercles:
    i=170
    j=10
    k=180
    l=20
    for a in range(10):
        for c in range(4):
            cercle = canvas.create_oval(i,j,k,l)
            i+=15
            k+=15
        j+=40
        l+=40
        k=180
        i=170
     
     
     
    ligne= canvas.create_line(0,405,300,405)
    init_game()
    app.mainloop()
    Bonjour,
    Je suis étonné qu'un carré soit coloré après sélection:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    def choix(event):
        l=0
        while l<4:  
            dessine_rect(l,10,event.widget["bg"])
    par définition, ici, le script entre dans une boucle infinie.
    PS: utiliser la lettre "l" en tant que variable, est une très mauvaise idée (confusion avec "1" avec certaines polices).

    D'autre part, dans cette même fonction, les quatre carrés sont colorés en même temps… C'est un début, mais il faut que chaque carré soit différencié. Et donc, mémoriser la suite des carrés et les colorés les uns après les autres.

    Pour le principe:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    ind_carre = 0
    def choix(event):
        global ind_carre
        dessine_rect(ind_carre,10,event.widget["bg"])
        ind_carre = (ind_carre + 1) % 4    # pour qu'il y ait seulement 4 carres colores
    Mais tout ceci devrait être contenu dans une structure (une liste???)…
    Ceci permettant, par la suite, de manipuler ces couleurs.
    PS: Il serait souhaitable de relire les indications précédentes.
    Clodion

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Novembre 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Novembre 2015
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Merci beaucoup ! j'ai réussi à faire afficher les quatres couleurs à les envoyer sur la grille à contrôler qu'il n'y ait pas plusieurs fois la meme couleur et à afficher sur l'interpreteur les black et white ;il ne me reste plus qu'à le faire dans les cercles (le faire colorer en noir ou blanc ) et à paufiner le reste !
    En tout cas merci beaucoup

Discussions similaires

  1. Problème de blocage dans mon programme
    Par Shennong dans le forum VB.NET
    Réponses: 3
    Dernier message: 05/12/2014, 11h00
  2. Blocage dans l'avancée d'un petit jeu de Mastermind
    Par Funky.Jazz dans le forum Débuter
    Réponses: 4
    Dernier message: 12/05/2013, 14h41
  3. Blocage dans la configuration oracle net
    Par nazimb dans le forum Oracle
    Réponses: 4
    Dernier message: 09/04/2006, 15h36
  4. Attacher un fichier à un mail dans programme C++.
    Par Hamdi Hedhili dans le forum MFC
    Réponses: 5
    Dernier message: 24/11/2005, 16h21
  5. [Thread] Blocage dans mon programme
    Par Xo Sonic oX dans le forum EDT/SwingWorker
    Réponses: 4
    Dernier message: 18/06/2005, 17h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo