De bal beweegt, maar je kunt het spel nog niet spelen. Daarom gaan we een plank toevoegen.

Schermafdruk van spelletje met basisstap 4 t/m 9.
3.1Stap 4: Teken de plank¶
Tips
- De breedte van de plank in het spritesheet is 243 pixels, de hoogte is 64 pixels. Dat is de afmeting die het nieuwe plaatje moet hebben.
- De plank staat in het spritesheet op x is 1158 en y is 396. Dat is de linkerbovenhoek van het stuk dat je uit het spritesheet moet kopieren.
- Definieer de constanten
PADDLE_WIDTH
enPADDLE_HEIGHT
en geef ze de waarde 144 en 32. Dit is de afmeting waarnaar je het plaatje van de paddle moet verkleinen. - Maak de variabelen
paddle_x
enpaddle_y
om bij te houden waar de paddle staat. Geef ze een startwaarde, bijvoorbeeldSCREEN_WIDTH / 2
enSCREEN_HEIGHT – 100
. Gebruikpaddle_x
enpaddle_y
om de plank op de goede plaats op het scherm te zetten.
3.2Stap 5: Beweeg de plank¶
Tips
- Als de D-toets is ingedrukt, beweeg je de plank naar rechts door bij
paddle_x
tien op te tellen. De plank wordt daardoor verderop in de code op een nieuwe plek getekend. - Als de A-toets is ingedrukt, beweegt de plank naar links.
- Gebruik maar één keer de regel
keys = pygame.key.get_pressed()
om de stand van de toetsen te lezen
3.3Stap 6: Stop de plank aan de randen van het scherm¶
Tips
plank_x
in de pseudo-code ispaddle_x
in je code,breedte_van_scherm
in de pseudo-code isSCREEN_WIDTH
uit je code enplank_breedte
uit de pseudo-code isPADDLE_WIDTH
in je code.
3.4Stap 7: Stuiter de bal tegen de plank¶
Tips
- Gebruik de pseudo-code. Gebruik nu geen ingebouwde functie van pygame om een botsing te detecteren.
- Je kunt een lange conditie achter if over meerdere regels spreiden om het leesbaarder te maken. Zet de conditie dan tussen ( en ), bijvoorbeeld
if (x > 100 and
x < 200 and
y > 50 and
y < 150) :
- rechter_kant_bal uit de pseudo-code is
ball_x + BALL_WIDTH
in je code. - linker_kant_plank uit de pseudo-code is
paddle_x
in je code. - De y-snelheid van de bal moet negatief (kleiner dan nul) zijn om te zorgen dat de bal omhoog beweegt. Want bovenaan het scherm is y gelijk aan nul en hoe verder naar onderen je komt hoe groter de y wordt.
- Je kunt de y-snelheid negatief maken door een eventuele min eraf te halen en dan keer -1 te doen. De functie
abs(getal)
geeft als resultaat een getal zonder min. Dusabs(-2)
is 2 enabs(2)
is ook 2. Dusabs(ball_speed_y) * -1
geeft de negatieve waarde van de y-snelheid. - Wat doet het algoritme als de bal tegen de zijkant van de plank kaatst? Wat zou je in het echt verwachten?
- Hou het algoritme voor nu simpel, je kunt het bij de uitbreidingen nog aanpassen.
3.5Stap 8: Stop het spel als je af bent¶
Tips
- Bovenaan het scherm is y gelijk aan 0. Hoe verder je naar beneden op het scherm komt, hoe groter het getal y wordt. De y-coördinaat van de bovenkant van de bal bewaar je in de variabele
ball_y
. De hoogte van de bal bewaar je inBALL_HEIGHT
. Hoe bereken je de y-coördinaat van de onderkant van de bal? - Wat gebeurt er met de code die de bal tegen de onderkant van het scherm laat stuiteren? Wordt die code nog uitgevoerd?
3.6Stap 9: Toon een bericht als je af bent¶
Tips
- Je kunt tijdens het spelen een ander bericht op het scherm zetten, bijvoorbeeld:
game_status_msg = "Speel met [A] en [D]"
- Je kunt het bericht netjes in het midden van de regel uitlijnen met een berekening met
SCREEN_WIDTH
engame_status_img.get_width()
.