| HomeTortue graphiqueGPanelRobotique WebTigerPython |
| Python - Online |
![]()
TU APPRENDRAS ICI... |
comment utiliser les événements de la souris pour déclencher des actions. Ces événements jouent un rôle très important dans les jeux interactifs. Dans des fonctions appelées fonctions de rappel (callbacks), tu définis ce qui doit se passer lorsqu'un bouton de la souris est enfoncé ou relâché, ou lorsque la souris est déplacée. Ces fonctions ne sont pas appelées directement par ton programme, mais automatiquement par le système lorsqu'un événement de la souris se produit. |
EXAMPLES |
| Example 1: Créer un nouveau poisson en cliquant avec la souris |
Programme: # Gg8.py from gamegrid import * # ---------------- class Fish ---------------- class Fish(Actor): def __init__(self): Actor.__init__(self, "sprites/nemo.gif"); def act(self): self.move() if not self.isMoveValid(): self.turn(180) self.setHorzMirror(not self.isHorzMirror()) # ---------------- main ---------------------- def pressCallback(e): location = toLocation(e.getX(), e.getY()) addActor(Fish(), location) makeGameGrid(10, 10, 60, Color.red, "sprites/reef.gif", False, mousePressed = pressCallback) show() doRun() Example 2: Déplacer des boules en maintenant le bouton de la souris enfoncé
Comme la variable actor est utilisée dans les deux fonctions, elle doit être déclarée comme variable global. Les deux fonctions de rappel sont enregistrées lors de la création de la fenêtre de jeu. Programme: # Gg8a.py from gamegrid import * def pressCallback(e): global actor location = toLocationInGrid(e.getX(), e.getY()) actor = getOneActorAt(location) def dragCallback(e): if actor == None: return location = toLocationInGrid(e.getX(), e.getY()) actor.setLocation(location) makeGameGrid(8, 5, 80, Color.blue, False, mousePressed = pressCallback, mouseDragged = dragCallback) setTitle("Sort Balls") for i in range(8): ball = Actor("sprites/token_1.png") addActor(ball, getRandomEmptyLocation()) show() doRun() Example 3: Déplacer des objets de manière continue
Programme: #Gg8b.py from gamegrid import * def pressCallback(e): global actor, startLoc startLoc = toLocationInGrid(e.getX(), e.getY()) actor = getOneActorAt(startLoc) def dragCallback(e): if actor == None: return startPoint = toPoint(startLoc) actor.setLocationOffset(e.getX()-startPoint.x,e.getY()-startPoint.y) def releaseCallback(e): if actor == None: return destLoc = toLocationInGrid(e.getX(), e.getY()) actor.setLocationOffset(0, 0) actor.setLocation(destLoc) makeGameGrid(7, 7, 70, Color.red, False, mousePressed = pressCallback, mouseDragged = dragCallback, mouseReleased = releaseCallback) setTitle("Sort Balls") for i in range(7): ball = Actor("sprites/marble.png") addActor(ball, getRandomEmptyLocation()) actor = None startLoc = None show() doRun() |
À RETENIR... |
| Dans les fonctions de rappel, tu définis ce qui doit se passer lorsque l'utilisateur appuie sur un bouton de la souris, déplace la souris en maintenant le bouton enfoncé ou relâche le bouton. Ces fonctions sont enregistrées lors de la création de la fenêtre de jeu. Elles ne sont pas appelées directement par le programme, mais automatiquement par le système. |
À FAIRE PAR TOI-MÊME |
|
![]()