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 :

Aide pour la création d'une Boucle Tkinter


Sujet :

Tkinter Python

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    pompier
    Inscrit en
    Avril 2017
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : pompier

    Informations forums :
    Inscription : Avril 2017
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Aide pour la création d'une Boucle Tkinter
    Bonjour,

    Je suis en terminale S et , avec mon groupe, nous souhaitons créer un jeu dans le même type que celui-ci mais a l'horizontale:

    Nom : 4.jpg
Affichages : 351
Taille : 13,5 Ko



    J'ai créé une fenêtre avec un Canevas ou j'ai pré-intégré des rectangles qui symbolisent des astéroïdes:

    Nom : Sans titre.png
Affichages : 350
Taille : 17,7 Ko

    J'ai aussi prédéfini des mouvement d'astéroïde qui sont symbolisés par mes fonctions un, deux , trois etc..

    le vaisseau est symbolisé par le pion. Tout marche mais je n'arrive pas a créer une boucle qui ,quand on ne touche pas l'astéroïde avec le pion et que l’astéroïde arrive au bout du canevas , repart sur un autre mouvement symbolisé par les fonctions un,deux,trois etc...
    Pour que vous compreniez j'ai simplifier mon code et je voudrai que la fonction un() se répète.
    Merci d'avance de l'aide que vous pourrez m'apporter !

    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
    135
    136
    137
    138
    139
     
    from tkinter import *
    import random
     
    def raz():
        canevas.delete(fen,rectangle)
        canevas.delete(fen,rectangle1)
        canevas.delete(fen,rectangle2)
        canevas.delete(fen,rectangle3)
        canevas.delete(fen,rectangle4)
        canevas.delete(fen,rectangle5)
        canevas.delete(fen,rectangle6)
        canevas.delete(fen,rectangle7)
        canevas.delete(fen,rectangle8)
        canevas.delete(fen,rectangle9)
        canevas.delete(fen,rectangle10)
        canevas.delete(fen,rectangle11)
        canevas.delete(fen,rectangle12)
        canevas.delete(fen,rectangle13)
        canevas.delete(fen,rectangle14)
        return;
     
    def definir():
        x,y=610,10
        x1,y1=610,92
        x2,y2=610,174
        x3,y3=610,256
        x4,y4=610,338
        x5,y5=692,10
        x6,y6=692,92
        x7,y7=692,174
        x8,y8=692,256
        x9,y9=692,338
        x10,y10=774,10
        x11,y11=774,92
        x12,y12=774,174
        x13,y13=774,256
        x14,y14=774,338
        rectangle= canevas.create_rectangle(x,y,x+72,y+72,fill='blue')
        rectangle1= canevas.create_rectangle(x1,y1,x1+72,y1+72,fill='orange')
        rectangle2= canevas.create_rectangle(x2,y2,x2+72,y2+72,fill='red')
        rectangle3= canevas.create_rectangle(x3,y3,x3+72,y3+72,fill='grey')
        rectangle4= canevas.create_rectangle(x4,y4,x4+72,y4+72,fill='purple')
        rectangle5= canevas.create_rectangle(x5,y5,x5+72,y5+72,fill='blue')
        rectangle6= canevas.create_rectangle(x6,y6,x6+72,y6+72,fill='orange')
        rectangle7= canevas.create_rectangle(x7,y7,x7+72,y7+72,fill='red')
        rectangle8= canevas.create_rectangle(x8,y8,x8+72,y8+72,fill='grey')
        rectangle9= canevas.create_rectangle(x9,y9,x9+72,y9+72,fill='purple')
        rectangle10= canevas.create_rectangle(x10,y10,x10+72,y10+72,fill='blue')
        rectangle11= canevas.create_rectangle(x11,y11,x11+72,y11+72,fill='orange')
        rectangle12= canevas.create_rectangle(x12,y12,x12+72,y12+72,fill='red')
        rectangle13= canevas.create_rectangle(x13,y13,x13+72,y13+72,fill='grey')
        rectangle14= canevas.create_rectangle(x14,y14,x14+72,y14+72,fill='purple')
        return;
     
     
    fen=Tk()
    """fen.geometry('600x430+400+200')"""
    """fen.overrideredirect(1)"""
    canevas=Canvas(fen,height=420, width=900)
    canevas.pack()
    #declaration des variable pour mes rectangles et créations 
    x,y=610,10
    x1,y1=610,92
    x2,y2=610,174
    x3,y3=610,256
    x4,y4=610,338
    x5,y5=692,10
    x6,y6=692,92
    x7,y7=692,174
    x8,y8=692,256
    x9,y9=692,338
    x10,y10=774,10
    x11,y11=774,92
    x12,y12=774,174
    x13,y13=774,256
    x14,y14=774,338
    rectangle= canevas.create_rectangle(x,y,x+72,y+72,fill='blue')
    rectangle1= canevas.create_rectangle(x1,y1,x1+72,y1+72,fill='orange')
    rectangle2= canevas.create_rectangle(x2,y2,x2+72,y2+72,fill='red')
    rectangle3= canevas.create_rectangle(x3,y3,x3+72,y3+72,fill='grey')
    rectangle4= canevas.create_rectangle(x4,y4,x4+72,y4+72,fill='purple')
    rectangle5= canevas.create_rectangle(x5,y5,x5+72,y5+72,fill='blue')
    rectangle6= canevas.create_rectangle(x6,y6,x6+72,y6+72,fill='orange')
    rectangle7= canevas.create_rectangle(x7,y7,x7+72,y7+72,fill='red')
    rectangle8= canevas.create_rectangle(x8,y8,x8+72,y8+72,fill='grey')
    rectangle9= canevas.create_rectangle(x9,y9,x9+72,y9+72,fill='purple')
    rectangle10= canevas.create_rectangle(x10,y10,x10+72,y10+72,fill='blue')
    rectangle11= canevas.create_rectangle(x11,y11,x11+72,y11+72,fill='orange')
    rectangle12= canevas.create_rectangle(x12,y12,x12+72,y12+72,fill='red')
    rectangle13= canevas.create_rectangle(x13,y13,x13+72,y13+72,fill='grey')
    rectangle14= canevas.create_rectangle(x14,y14,x14+72,y14+72,fill='purple')
     
    def jouer():
        def Clavier(event):
            """ Gestion de l'événement Appui sur une touche du clavier """
            global PosX,PosY
            touche = event.keysym
            # déplacement vers le haut
            if touche == 'Up':
                PosY -= 82
            # déplacement vers le bas
            if touche == 'Down':
                PosY += 82
            if PosY>374:
                PosY=374
            if PosY<46:
                PosY=46
        # on dessine le pion à sa nouvelle position
            canevas.coords(Pion,PosX -10, PosY -10, PosX +10, PosY +10)
        """position pion + creation"""
        PosX = 40
        PosY = 210
        Pion = canevas.create_oval(PosX-10,PosY-10,PosX+10,PosY+10,width=2,outline='black',fill='red')
        canevas.focus_set()
        canevas.bind('<Key>',Clavier)
        canevas.pack(padx =5, pady =5)
        def un():
            global x, y, x1, y1,PosX,PosY
            #Si la position -72 n'est pas atteint on continue
            if x1>-72:
                x=x-2
                x1=x1-2
                canevas.coords(rectangle,x,y, x+72,y+72)
                canevas.coords(rectangle1,x1,y1, x1+72,y1+72)
                fen.after(10, un)
            #Si la position est atteinte alors on fait une remise a zéro du canevas pour remettre les blocs comme au debut et c est ici le debut de la boucle
            if x1==-72:
                raz()
                definir()
                return;
     
            #Ici nous avons la posibilité que le pion touche le rectangle alors la fenetre se ferme
            if PosX==x-18 and PosY-36==y or PosX==x1-18 and PosY-36==y1:
                fen.destroy()
     
        un()
     
    jouer()

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 778
    Points
    36 778
    Par défaut
    Salut,

    Citation Envoyé par alexlpr Voir le message
    Pour que vous compreniez j'ai simplifier mon code et je voudrai que la fonction un() se répète.
    ligne 126: "un" se répète déjà grâce à l'instruction fen.after(10, un).

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    pompier
    Inscrit en
    Avril 2017
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : pompier

    Informations forums :
    Inscription : Avril 2017
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Merci de votre réponse mais cette solution ne marche pas :/ J'ai du mal m'exprimer pour faire simple je voudrai qu'après avoir éviter les blocs la fenêtre se remette à zéro (= def raz() ) et que le programme se relance du début. Voila mon code, Je voudrai que quand il arrive dans la partie ou je rajoute au score +10 le programme se relance au niveau du def jouer().
    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
     
    from tkinter import *
    import random
     
     
     
    fen=Toplevel()
     
    """fen.geometry('600x430+400+200')"""
    """fen.overrideredirect(1)"""
    canevas=Canvas(fen,height=420, width=900)
    canevas.pack() 
    score=0
    x,y=610,10
    x1,y1=610,92
    x2,y2=610,174
    x3,y3=610,256
    x4,y4=610,338
    x5,y5=692,10
    x6,y6=692,92
    x7,y7=692,174
    x8,y8=692,256
    x9,y9=692,338
    x10,y10=774,10
    x11,y11=774,92
    x12,y12=774,174
    x13,y13=774,256
    x14,y14=774,338
    PosX = 40
    PosY = 210
     
     
    def jouer():
        x,y=610,10
        x1,y1=610,92
        x2,y2=610,174
        x3,y3=610,256   
        x4,y4=610,338 
        x5,y5=692,10
        x6,y6=692,92
        x7,y7=692,174
        x8,y8=692,256
        x9,y9=692,338
        x10,y10=774,10
        x11,y11=774,92
        x12,y12=774,174
        x13,y13=774,256 
        x14,y14=774,338
        PosX = 40
        PosY = 210
        rectangle= canevas.create_rectangle(x,y,x+72,y+72,fill='blue')
        rectangle1= canevas.create_rectangle(x1,y1,x1+72,y1+72,fill='orange')
        rectangle2= canevas.create_rectangle(x2,y2,x2+72,y2+72,fill='red')
        rectangle3= canevas.create_rectangle(x3,y3,x3+72,y3+72,fill='grey')
        rectangle4= canevas.create_rectangle(x4,y4,x4+72,y4+72,fill='purple')
        rectangle5= canevas.create_rectangle(x5,y5,x5+72,y5+72,fill='blue')
        rectangle6= canevas.create_rectangle(x6,y6,x6+72,y6+72,fill='orange')
        rectangle7= canevas.create_rectangle(x7,y7,x7+72,y7+72,fill='red')
        rectangle8= canevas.create_rectangle(x8,y8,x8+72,y8+72,fill='grey')
        rectangle9= canevas.create_rectangle(x9,y9,x9+72,y9+72,fill='purple')
        rectangle10= canevas.create_rectangle(x10,y10,x10+72,y10+72,fill='blue')
        rectangle11= canevas.create_rectangle(x11,y11,x11+72,y11+72,fill='orange')
        rectangle12= canevas.create_rectangle(x12,y12,x12+72,y12+72,fill='red')
        rectangle13= canevas.create_rectangle(x13,y13,x13+72,y13+72,fill='grey')
        rectangle14= canevas.create_rectangle(x14,y14,x14+72,y14+72,fill='purple')
        def raz():
            canevas.delete(fen,rectangle)
            canevas.delete(fen,rectangle1) 
            canevas.delete(fen,rectangle2)
            canevas.delete(fen,rectangle3)
            canevas.delete(fen,rectangle4)
            canevas.delete(fen,rectangle5)
            canevas.delete(fen,rectangle6) 
            canevas.delete(fen,rectangle7)
            canevas.delete(fen,rectangle8)
            canevas.delete(fen,rectangle9)
            canevas.delete(fen,rectangle10)
            canevas.delete(fen,rectangle11) 
            canevas.delete(fen,rectangle12)
            canevas.delete(fen,rectangle13)
            canevas.delete(fen,rectangle14)
        def Clavier(event):
            """ Gestion de l'événement Appui sur une touche du clavier """
            global PosX,PosY
            touche = event.keysym
            if touche == 'Up':
                PosY -= 82
            if touche == 'Down':
                PosY += 82
            if PosY>374:
                PosY=374
            if PosY<46:
                PosY=46
            canevas.coords(Pion,PosX -10, PosY -10, PosX +10, PosY +10)
        """position pion + creation"""
        PosX = 40
        PosY = 210
        Pion = canevas.create_oval(PosX-10,PosY-10,PosX+10,PosY+10,width=2,outline='black',fill='red')
        canevas.focus_set()
        canevas.bind('<Key>',Clavier)
        canevas.pack(padx =5, pady =5)
        def un():
            global x, y, x1, y1,PosX,PosY,score
            if x1>-72: 
                x=x-2
                x1=x1-2
                canevas.coords(rectangle,x,y, x+72,y+72)
                canevas.coords(rectangle1,x1,y1, x1+72,y1+72)
                fen.after(10,un)
            else:
                raz()
                score += 10
                print(score)
     
     
            if PosX==x-18 and PosY-36==y or PosX==x1-18 and PosY-36==y1:
                fen.destroy()
        un()
    jouer()
    Encore Merci de votre réponse

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 778
    Points
    36 778
    Par défaut
    Salut,

    Je ne comprends pas ce que vous voulez et votre code est illisible.
    La seule chose que je peux vous proposer est une mécanique qui traduit ce que je comprends de ce que vous voulez faire:
    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
    import tkinter as tk
     
    def do_update(delay=200):
        global value
        value += 1
        label['text'] = value
        if value == 10:
            raz()
        else:
            root.after(delay, do_update)
     
    def jouer():
        do_update()
     
    def raz():
        global value
        value = 0
        jouer()
     
    root = tk.Tk()
    value = 0
    label = tk.Label(root, text = value)
    label.pack()
     
    jouer()
     
    tk.mainloop()
    Et si çà ne suffit pas, difficile de vous proposer autre chose que d'apprendre à programmer avec un bon tuto.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

Discussions similaires

  1. Aide pour la création d'une requête
    Par Marc_27 dans le forum IHM
    Réponses: 1
    Dernier message: 15/12/2008, 12h26
  2. Aide pour la création d'une vue
    Par bossun dans le forum Langage SQL
    Réponses: 3
    Dernier message: 17/07/2008, 09h19
  3. besoin d'aide pour la création d'une requête
    Par fabien59420 dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 11/06/2008, 15h29
  4. Réponses: 3
    Dernier message: 26/06/2007, 14h53
  5. Réponses: 2
    Dernier message: 10/03/2006, 13h55

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