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()
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.
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.
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.
Découverte Python Doc Tkinter Les chaînes de caractères