Problème pour bouger une boule en continu
Bonjour,
Ma boule se déplace de plus en plus vite à chaque changement de direction.
La position (en x ou y) varie pourtant toujours de 10 en 10
J'ai aussi essayé avec .move. Cela ne résoud pas le problème.
J'ai regardé quelques scripts sur google mais n'ai rien vu d'intéressant et cela fait un bout de temps que je cherche.
Le message ne garde pas l'indentation, dsl
Des idées ?
A coté, des suggestions pour améliorer le code ?
Merci
Code:
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
| from tkinter import *
class Application(Tk):
def __init__(self):
# Graphique
Tk.__init__(self)
self.cadre = Canvas( self,bg='light yellow',height=500,width=500)
self.cadre.focus_set()
self.cadre.bind("<Up>", self.go_up)
self.cadre.bind("<Down>", self.go_down)
self.cadre.bind("<Left>", self.go_left)
self.cadre.bind("<Right>", self.go_right)
# Init
self.dy = 10
self.dx = 10
self.x = 250
self.y = 250
self.r = 20
self.oval1 = self.cadre.create_oval(self.x, self.y, self.x+self.r, self.y+self.r, fill='red')
self.cadre.grid(row = 1)
def move(self):
if self.up == 1:
self.y -= self.dy
elif self.down == 1:
self.y += self.dy
elif self.left == 1:
self.x -= self.dx
elif self.right == 1:
self.x += self.dx
print(self.x)
self.cadre.coords(self.oval1, self.x, self.y, self.x+self.r, self.y+self.r)
self.after(100, self.move)
def go_up(self, event):
print("up")
self.up = 1
self.down = 0
self.left = 0
self.right = 0
self.move()
def go_down(self, event):
print("down")
self.up = 0
self.down = 1
self.left = 0
self.right = 0
self.move()
def go_left(self, event):
print("left")
self.up = 0
self.down = 0
self.left = 1
self.right = 0
self.move()
def go_right(self, event):
print("right")
self.up = 0
self.down = 0
self.left = 0
self.right = 1
self.move()
#------ Programme principal ---------------------------------------------------
launch = Application()
launch.mainloop() |