Bonjour,
je programme un tower defense pour le bac et je suis bloqué sur le fait de pouvoir sélectionner les tours et les déplacer là ou on veut les construire.
je n'arrive pas a faire en sorte que ma nouvelle image créée suive mon curseur.
Voici 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
class Tour:
 
    def __init__(self):
        self.damage = 0
        self.x = 900 + 75/2
        self.y = 75/2
        self.image = can.create_image(self.x, self.y, image=tour, anchor = CENTER)
        self.DETECTION_CLIC_SUR_OBJET = False # on initialise la variable
        can.bind( '<Button-1>', self.clic ) # associe clic sur can à fonction Clic de l'instance ( renvoie automatiquement en arguments : instance et evenement
        can.bind('<Motion>',self.drag)
        can.bind( '<Button-1>', self.drop )
 
    def clic(self,event): # on recupere l'instance et l'evenement, avec self et event en nom de variable ( rappel : tu peux mettre ce que tu veux en nom de variable )
        """ Gestion de l'événement Clic gauche """
 
        # position du pointeur de la souris
        X = event.x
        Y = event.y
        if self.DETECTION_CLIC_SUR_OBJET==False:
            if self.x-75/2 <= X <= self.x+75/2 and self.y-75/2 <= Y <= self.y+75/2:
                self.DETECTION_CLIC_SUR_OBJET = True
                self.tour_a_deplacer=can.create_image(X, Y, image=tour, anchor = CENTER)
            else:
                self.DETECTION_CLIC_SUR_OBJET = False
 
    def drag(self,event):
        """ Gestion de l'événement bouton gauche enfoncé """
        X = event.x
        Y = event.y
 
        if self.DETECTION_CLIC_SUR_OBJET == True:# limite de l'objet dans la zone graphique
            if X < 0: X = 0
            if X > largeur: X = largeur
            if Y < 0: Y = 0
            if Y > hauteur: Y = hauteur
            can.coords (self.tour_a_deplacer,X,Y)
 
    def drop(self, event):
        X = event.x
        Y = event.y
        if self.DETECTION_CLIC_SUR_OBJET ==  True:
            can.coords(self.tour_a_deplacer,X,Y)
            self.DETECTION_CLIC_SUR_OBJET=False