Bonjour à tous, je débute sur python et voici un essai de ce que j'ai fais, le problème c'est que je voudrais que la balle noire réagisse quand elle touche les barres du milieu pour passer d'un coté ou de l'autre de l'écran, comme quand elle touche l'une des limites du caneva

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
from tkinter import *
import tkinter as Tk
from math import sin, cos
 
def move():
 
    global x, y, flag, dx, dy, vx, ms
 
    if x > 1275 or x < 30 :
 
        dx = -dx
        vx = -vx
    x += dx
    x += vx
 
    if y > 580 or y < 30:
        dy = -dy
    y += dy
 
    can.coords(ball, x-10, y-10, x+10, y+10)
    if flag > 0:
        fen.after(ms, move)
 
 
def start():
    global flag, ms
 
    flag += 1
 
    if flag == 1:
        ms = 6
        move()
 
 
def Mouvement_curseur(event):
    X = event.x # détecte la position de la souris en x 
    Y = event.y # détecte la position de la souris en x 
 
    title = "Dispatch Ball, Positions du curseur de la souris X = %d  Y = %d" % (X, Y)
    fen.title(title)
 
 
# limite des carrées dans la zone de jeu
    if Y<60: # l'ordonnée de la barre ne peut aller à moins de 60 
        Y=60 # lorsque y de la souris atteint moins de 60 alors l'ordonnée de la barre stagne à 60
    if Y>540: # l'ordonnée de la barre ne peut aller à plus de 540
        Y=540 # lorsque y de la souris atteint plus de 640 alors l'ordonnée de la barre stagne à 540
 
 
 
 
# mise à jour de la position de l'objet
    can.coords(carre_noir_bas,640,Y+50,660,590)
    can.coords(carre_noir_haut,640,11,660,Y-50)
 
flag = 0
x, y = 500, 300
dx, dy = 2, 2
vx=cos(45)
 
# carré bas du milieu #
 
xnoir_bas_gauche = 640
ynoir_bas_gauche = 408
xnoir_bas_droite = 660
ynoir_bas_droite = 590
 
# carré haut du milieu #
 
xnoir_haut_gauche = 640
ynoir_haut_gauche = 11
xnoir_haut_droite = 660
ynoir_haut_droite = 272
 
#titre fenêtre
 
fen = Tk.Tk()
fen.title(" Dispatch Ball ")
 
Largeur = 1300
Hauteur = 600
can = Tk.Canvas(fen, bg= "white", width= Largeur, height= Hauteur)
can.grid(row= 3, column= 0)
 
ball = can.create_oval(x-10, y-10, x+10, y+10, outline= "black", fill= "black")
 
carre_noir_bas = can.create_rectangle(640, 408, 660, 590, outline= "maroon", width = 2, fill= 'gray')
carre_noir_haut = can.create_rectangle(640, 10, 660, 272, outline= "maroon", width = 2, fill= 'gray')
 
#Liaison entre événement et fonction
can.bind('<Motion>', Mouvement_curseur) # Motion correspond à la detection instantané de la position de la souris
 
# Création du bouton "Débuter la Partie":
bouton=Button(fen, text= "Débuter la Partie", command= start).grid(row= 0, column= 0)
 
 
fen.mainloop()
si le code n'est pas très clair dites le moi c'est vrai que je n'ai pas mis beaucoup d'information dessus

je pense que le problème viens du fait que j'ai définit les positions y des barres par des valeurs et que je l'ai définit aussi par : la position de la souris +/- 50

Merci d'avance