5. Extra oefening: SpeedBrick#

Deze opdracht gaat over het reageren op toetsenbordaanslagen en werken met snelheid.

Mappenstructuur#

Voor deze oefening gebruik je de mappenstructuur en de sprite uit de vorige opdracht: Brick. Maak in Mu editor een nieuw bestand en sla het op in je brick map onder de naam speedbrick.py.

@startuml
   @startfiles
   /games/brick/images/green_brick.png
   /games/brick/brick.py
   /games/brick/speedbrick.py
   @endfiles
@enduml

Starter code#

Begin met de volgende code in flying_ball.py:

 1# Vensterinstellingen
 2WIDTH = 600
 3HEIGHT = 400
 4TITLE = 'SpeedBrick'
 5
 6# Actor
 7player = Actor('green_brick')
 8player.x = WIDTH / 2
 9player.y = HEIGHT / 2
10player.speedx = 5  # horizontale snelheid
11player.speedy = 0  # verticale snelheid
12
13# Event handler on_key_down()
14def on_key_down(key):
15   if key == keys.RIGHT:
16      player.speedx += 2
17   if key == keys.LEFT:
18      player.speedx -= 2
19
20# Functie draw()
21def draw():
22   screen.fill('darkorchid4')
23   player.draw()
24
25# Functie update()
26def update():
27   player.x += player.speedx
28   # Als de snelheid positief is en de legosteen rechts uit het venster verdwijnt:
29   if player.speedx > 0 and player.left > WIDTH:
30      player.right = 0

Wanneer je deze code uitvoert, zie je dat de legosteen naar rechts beweegt. Test wat er gebeurt wanneer je de rechterpijltjestoets indrukt. Test ook wat er gebeurt wanneer je de linkerpijltjestoets indrukt.

Opdracht#

Breid de code uit met de volgende functionaliteit:

  • Als de legosteen links uit het venster verdwijnt, moet hij rechts weer verschijnen.

  • Voeg een verticale beweging toe aan de legosteen. Indrukken van de pijltjestoetsen omhoog en omlaag moet de verticale snelheid veranderen, op dezelfde manier als bij de horizontale snelheid gebeurt.

  • Als de legosteen boven of onder het venster verdwijnt, moet hij respectievelijk onder of boven weer verschijnen.

Extra:

  • Verander de getallen zodanig dat de speler de legosteen ook helemaal stil kan zetten met de pijltjestoetsen.

  • Als de speler de spatiebalk indrukt, moet de legosteen meteen stil staan.