if self.x1<280 and self.y1<280 and self.x1>20 and self.y1>20 :
if 20<self.x1<280 and 20<self.y1<280:
# -*- coding: utf-8 -*- import Tkinter as tk from math import cos, sin, pi class Move: def __init__(self, width=300, height=300, precisionAngle=12, moveBy=5, rayonJoueur=10, directionLen=20, xDepart=100, yDepart=100): fen = tk.Tk() #La valeur avec laquelle on incrémentera l'angle self.incrAng = (2*pi) / precisionAngle #le "pas" de déplacement self.moveBy = moveBy #longueur du trait self.directionLen = directionLen #la valeur de l'angle en cours self.ang = 0 #le x et y maximum du joueur pour ne pas sotir du canevas self.maxX = width - self.directionLen self.maxY = height - self.directionLen self.can = tk.Canvas(fen, width=width, height=height, bg='dark grey') self.can.pack() self.joueur = self.can.create_oval(xDepart-rayonJoueur, yDepart-rayonJoueur, xDepart+rayonJoueur, yDepart+rayonJoueur, fill='yellow', tags="joueur") self.direction = self.can.create_line(xDepart, yDepart, xDepart+self.directionLen, yDepart, fill='red', tags="joueur") self.can.bind_all("<KeyPress>", self.onKeyPress) fen.mainloop() def onKeyPress(self, event): key = event.keysym if key == "Right": self.moveDirection(1) elif key == "Left": self.moveDirection(-1) elif key == "Up": self.moveJoueur(1) elif key == "Down": self.moveJoueur(-1) def moveDirection(self, sens): """Appelé lorsque que l'utilisateur appuie sur gauche ou droite""" #calcul le nouvel angle self.ang = self.ang + self.incrAng * sens #récupère les coordonnées du début du trait de direction x, y = self.getCoord() #calcul les coordonnées de la fin du trait de direction x1 = x + cos(self.ang) * self.directionLen y1 = y + sin(self.ang) * self.directionLen #affiche le nouveau trait de direction self.can.coords(self.direction, x, y, x1, y1) def moveJoueur(self, sens): """Appelé lorsque que l'utilisateur appuie sur haut ou bas""" #calcul le vecteur de déplacement xMove = cos(self.ang) * self.moveBy yMove = sin(self.ang) * self.moveBy #si je joueur ne sort pas du canvas, déplace le joueur if self.verifZone(xMove*sens, yMove*sens): self.can.move("joueur", xMove*sens, yMove*sens) def verifZone(self, xMove, yMove): """vérifie si le joueur sort de la zone""" #récupère les coordonnées du joueur x, y = self.getCoord() #coordonnée du joueur après déplacement newX, newY = x + xMove, y + yMove #si le joueur ne sort pas du canevas après déplacement if self.directionLen<newX<self.maxX and self.directionLen<newY<self.maxY: return True else: return False def getCoord(self): """retourne les coordonnées du centre du joueur""" return self.can.coords(self.direction)[:2] Move(300, 200, 24, 3)
self.can.move("joueur", xMove*sens, yMove*sens)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question