4.3 De muis gebruiken
- 4.1 Gebeurtenissen - hoe een
@play.when_...decorator werkt
Naast het toetsenbord kun je ook de muis gebruiken in je spel. Met play.mouse kun je de positie van de muis opvragen en een vorm de muis laten volgen.
Muispositie opvragen
play.mouse.xgeeft de x-positie van de muisplay.mouse.ygeeft de y-positie van de muis
Een vorm de muis laten volgen
De cirkel volgt nu je muis.
Reageren op een muisklik
Met @play.when_mouse_clicked kun je iets laten gebeuren zodra de speler op de muis klikt:
Als je op de muis klikt, wordt de cirkel rood.
Zolang de muis ingedrukt is
Met @play.while_mouse_pressed kun je iets laten gebeuren elk frame zolang de muisknop ingedrukt is:
Het verschil met @play.when_mouse_clicked? Die vuurt maar één keer bij het klikken. @play.while_mouse_pressed vuurt elk frame zolang je de muisknop inhoudt.
Opdracht 4.3.a: Muisvolger
Maak een programma waarbij:
- Een cirkel de muis volgt
- Een tekst bovenaan het scherm de muispositie toont
Klik hier voor de oplossing.
Opdracht 4.3.b: Batje besturen met de muis
Maak een programma waarbij:
- Een rechthoek (het batje) alleen verticaal beweegt met de muis (de x blijft vast)
- Een bal heen en weer beweegt en tegen het batje botst
Klik hier voor een tip.
Zet alleen de y van het batje gelijk aan play.mouse.y. De x van het batje blijft hetzelfde.
Klik hier voor de oplossing.
import play
batje = play.new_box(x=300, width=15, height=80)
bal = play.new_circle(radius=15, color='red')
bal.start_physics(obeys_gravity=False, x_speed=200)
@play.repeat_forever
def update():
batje.y = play.mouse.y
Opdracht 4.3.c: Kleur wisselen bij klik
In deze opdracht gebruik je het global keyword. Ken je dat nog niet? Kijk dan bij 4.5 Een score bijhouden.
Maak een programma waarbij een cirkel elke keer als je klikt van kleur wisselt: blauw → rood → blauw → rood...
Klik hier voor een tip.
Gebruik een variabele die onthoudt welke kleur het is. Met if en global kun je de kleur wisselen.
Klik hier voor de oplossing.
Opdracht 4.3.d: Groeiende cirkel
Maak een programma waarbij een cirkel groter wordt zolang je de muis ingedrukt houdt. Als je op 'r' drukt, wordt de cirkel weer klein.
Klik hier voor een tip.
Verhoog cirkel.radius met 1 bij elk frame dat de muis ingedrukt is.