Partage
  • Partager sur Facebook
  • Partager sur Twitter

Probleme chronometre Python

    13 mai 2019 à 9:45:01

    Bonjour j'ai un petit problème avec le chronomètre sur Python.

    Je vous explique.

    J'ai créé un chronomètre sur python qui s'affiche quand on commence le code ,mais ne s'affiche plus une fois que le jeu se lance. J'aurai besoin d'aides s'il vous plait

    Tenez pour le code :

    from tkinter import *
    from random import randrange
    from timeit import default_timer
    
    
    def move():
        global x
        global y,pX,pY
        global Serpent
        global manger
        can.delete('all')
        i=len(Serpent)-1
        j=0
        manger=False
        while i > 0:
            Serpent[i][0]=Serpent[i-1][0]
            Serpent[i][1]=Serpent[i-1][1]
            can.create_oval(Serpent[i][0], Serpent[i][1], Serpent[i][0] +10, Serpent[i][1]+10,outline='white', fill='black')
            i=i-1
    
        can.create_oval(pX, pY, pX+10, pY+10, outline='black', fill='red')
    
        if direction  == 'left':
            Serpent[0][0]  = Serpent[0][0] - dx
            if Serpent[0][0] < 0:
                Serpent[0][0] = 493
        elif direction  == 'right':
            Serpent[0][0]  = Serpent[0][0] + dx
            if Serpent[0][0] > 493:
                Serpent[0][0] = 0
        elif direction  == 'up':
            Serpent[0][1]  = Serpent[0][1] - dy
            if Serpent[0][1] < 0:
                Serpent[0][1] = 493
        elif direction  == 'down':
            Serpent[0][1]  = Serpent[0][1] + dy
            if Serpent[0][1] > 493:
                Serpent[0][1] = 0
        can.create_oval(Serpent[0][0], Serpent[0][1], Serpent[0][0]+10, Serpent[0][1]+10,outline='green', fill='green')
        test()
        test()
    
        if flag != 0:
            fen.after(60, move)
    
    fen = Tk()
    can = Canvas(fen, width=550, height=500, bg='white')
    can.pack(side=TOP, padx=5, pady=5)
    
    def updateTime():
    
        now = default_timer() - start
        minutes, seconds = divmod(now, 60)
        hours, minutes = divmod(minutes, 60)
        str_time = "%d:%02d:%02d" % (hours, minutes, seconds)
        can.itemconfigure(text_clock, text=str_time)
        fen.after(1000, updateTime)
    
    start = default_timer()
    text_clock = can.create_text(40, 20)
    
    updateTime()
    
    def newGame():
        global pX,pY
        global flag
        if flag == 0:
            flag = 1
        move()
    
    def left(event):
        global direction
        direction = 'left'
    
    def right(event):
        global direction
        direction = 'right'
    
    def up(event):
        global direction
        direction = 'up'
    
    def down(event):
        global direction
        direction = 'down'
    
    def test():
        global pomme
        global x,y,pX,pY
        global Serpent
        if Serpent[1][0]>pX-7 and  Serpent[1][0]<pX+7:
            if Serpent[1][1]>pY-7 and Serpent[1][1]<pY+7:
    
                #On remet une pomme au hasard
                pX = randrange(5, 495)
                pY = randrange(5, 495)
                can.coords(pomme,pX, pY, pX+10, pY+10)
                #On ajoute un nouveau point au serpent
                Serpent.append([0,0])
                #print(Serpent)
    
    x = 245
    y = 24
    dx, dy = 10, 10
    flag = 0
    direction = 'haut'
    Serpent=[[x,y],[x+2.5,y+2.5],[x+5,y+5],[0,0]]
    
    pX = randrange(5, 495)
    pY = randrange(5, 495)
    
    oval = can.create_oval(Serpent[0][0], Serpent[0][1], Serpent[0][0]+10, Serpent[0][1]+10, outline='green', fill='green')
    
    pomme = can.create_oval(pX, pY, pX+10, pY+10, outline='black', fill='red')
    
    b1 = Button(fen, text='Lancer', command=newGame, bg='black' , fg='white')
    b1.pack(side=LEFT, padx=5, pady=5)
    
    b2 = Button(fen, text='Quitter', command=fen.destroy, bg='black' , fg='white')
    b2.pack(side=RIGHT, padx=5, pady =5)
    
    tex1 = Label(fen, text="Cliquez sur 'Lancer' pour commencer le jeu." , fg='green')
    tex1.pack(padx=0, pady=11)
    
    fen.bind('<Right>', right)
    fen.bind('<Left>', left)
    fen.bind('<Up>' , up)
    fen.bind('<Down>', down)
    
    fen.mainloop()
    • Partager sur Facebook
    • Partager sur Twitter
      13 mai 2019 à 11:15:28

      Probablement à cause de ton delete all dans ta boucle de jeu. Place plutôt le chrono dans un label à l'extérieur du canevas. Par ailleurs, je trouve compliquée ta façon de coder le snake. Tu n'as pas besoin de parcourir tous les anneaux du serpent, et de tout décaler comme tu fais (ta boucle while, qui devrait d'ailleurs être une boucle for), tu as juste besoin de modifier deux anneaux et d'en créer un seul (regarde bien ton snake et vtu verras que d'une étape à l'autre presque rien ne change), or toi récrées tous les anneaux du serpent chaque fois que tu passe dans ta boucle de jeu. Il me semble qu'un exercice corrigé dans le swinnen l'explique.
      • Partager sur Facebook
      • Partager sur Twitter
        15 juillet 2019 à 13:22:11

        Merci beaucoup, je suis désolé de la réponse tardive, je n'avais pas checké le site depuis plusieurs semaine, mais c'etais bien la bonne solution , merci encore.
        • Partager sur Facebook
        • Partager sur Twitter

        Probleme chronometre Python

        × 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