Écrire des programmes qui réagissent aux clics de souris ou aux mouvements de la souris. Ce concept de programmation est notamment utilisé dans les programmes ayant une interface graphique utilisateur.
EXEMPLES
Pour les événements de la souris, on utilise la technique de programmation suivante: On définit dans une fonction (la fameuse fonction de rappel, ou callback) ce qui doit se passer lors de l'appui sur un bouton de la souris. Cette fonction n’est jamais appelée explicitement dans ton propre code, mais est automatiquement appelée par le système lorsqu’un événement de souris se produit. Pour cela, il faut informer le système de son nom. On appelle cela enregistrer le callback.
Example 1: Dessiner des cercles avec les clics de souris La fonction callback onMousePressed(x, y)dessine un petit cercle à la position du clic. Cette fonction est enregistrée lors de l’appel de makeGPanel() via un paramètre nommémousePressed = onMousePressed registriert.
Le nom de la fonction callback peut être choisi librement. Le nom du paramètre nommé, par lequel la fonction callback est enregistrée dans makeGPanel(), doit toutefois être mousePressed ou mouseClicked.
Example 2: Capturer un mouvement de la souris Un callback enregistré avec le paramètre mouseMoved réagit aux mouvements de la souris. S’il est enregistré avec le paramètre mouseDragged, il réagit aux mouvements de la souris avec le bouton enfoncé.
Dans l’exemple, des dessins amusants en forme de tubes apparaissent lors d’un déplacement avec le bouton enfoncé.
Example 3: Dessiner avec le bouton enfoncé Avec les événements de souris, on peut créer un simple programme de dessin. On utilise la fonctiondraw(x, y) qui, à chaque appel de la fonction callback onMouseDragged(), trace une ligne vers la position actuelle de la souris (et place le curseur graphique sur x, y). Le callback onMousePressed()est nécessaire pour repositionner le curseur graphique à la position actuelle de la souris.
Les deux callbacks sont enregistrés en même temps lors de la création du GPanel avec des paramètres nommés.
Dans l’exemple, tu dessines d’abord une grille 8x8. Ensuite, avec des clics, tu peux remplir les cases de la grille avec la fonction fill(x, y, "white", "red") "white", "red") en colorant en rouge, où (x, y) est la position du clic, white est l’ancienne couleur et red la nouvelle couleur.
Programme:
# Gp9d.pyfrom gpanel import *
def drawGrid():
for k in range(8):
for i in range(8):
rectangle(i, k, i + 1, k + 1)
def onMousePressed(x, y):
fill(x, y, "white", "red")
makeGPanel(-1, 9, -1, 9, mousePressed = onMousePressed)
drawGrid()
Example 5: Utiliser le clic gauche et le clic droit
Avec le clic gauche, les carrés deviennent rouges; avec le clic droit, la marquage est effacé. isLeftMouseButton(): Renvoie True si le bouton gauche est enfoncé.
isLeftMouseButton(): Renvoie True si le bouton gauche est enfoncé.Renvoie True si le bouton droit est enfoncéGibt True zurück, wenn die rechte Maustaste gedrückt wurde
Programme:
# Gp9e.pyfrom gpanel import *
def drawGrid():
for k in range(8):
for i in range(8):
rectangle(i, k, i + 1, k + 1)
def onMousePressed(x, y):
if isLeftMouseButton():
fill(x, y, "white", "red")
if isRightMouseButton():
fill(x, y, "red", "white")
makeGPanel(-1, 9, -1, 9, mousePressed = onMousePressed)
drawGrid()
In einer Callbackfunktion definierst du, was geschehen soll, wenn eine Maustaste gedrückt oder eine Maus bewegt wurde. Diese Funktion wird nicht vom Programm, sondern direkt vom System aufgerufen, wenn ein solches Ereignis (Event) eingetreten ist. Die Callbackfunktion muss beim Erzeugen des GPanels registriert werden.
Das Drücken einer Maustaste kann man mit zwei verschiedenen Callbacks erfassen: einem Press-Event oder einem Click-Event. Der Click-Event wird erst ausgelöst, nachdem die Taste wieder losgelassen wird, der Press-Event bereits beim Drücken der Maustaste. Der Click-Event wird mit dem Parameter mouseClicked registriert.
Die Mausbewegung wird mit dem Parameter mouseMoved oder mit dem Parameter mouseDragged (Bewegung mit gedrückter Maustaste) registriert.
À FAIRE PAR TOI-MÊME
1)
An der Position des Mausklicks entsteht ein kleiner Punkt und eine Linie zum vorangehenden Punkt.
2)
Im Kapitel Funktionen hast du gelernt, wie man Sterne zeichnet. Bei jedem Mausklick soll an der Mausposition ein Stern entstehen.
3)
Programmiere ein einfaches Tic-Tac-Toe Game.
Zwei Spieler zeichnen abwechlungsweise rote und grüne Quadrate mit dem Ziel eine Reihe, Spalte oder Diagonale zu erreichen.