Snake copy
0 Wat gaan we leren
We gaan nog een projectje maken met Thonny (uit de vorige les) en bij dit project gaan we gebruik maken van de standaard Python library:
pgzero
Weet je nog hoe je een package installeert in Thonny?
Yep, Tools - Manage Packages en dan pgzero zoeken en installeren.
1 Snake â Les 1: Teken de slangkop
In deze les gaan we beginnen met het maken van een eigen versie van Snake in Python met Pygame Zero.
We gaan eerst de kop van de slang tekenen op het scherm. Je ziet dan een vierkantje dat straks kan gaan bewegen.
Wat gaan we doen?
We maken een slangkop als vierkant met een bepaalde positie en grootte, en tekenen die in de draw()
-functie.
đĻ Benodigdheden
- Een werkende Python-omgeving met Pygame Zero (zoals Thonny)
- Geen plaatjes nodig â we tekenen de slang met blokken
đ° Startercode
# importeer library
import pgzrun
# Spelgrootte
WIDTH = 600
HEIGHT = 400
# Startpositie van de slangkop
snake_x = 100
snake_y = 100
tile_size = 20
def draw():
screen.clear()
screen.draw.filled_rect(Rect((snake_x, snake_y), (tile_size, tile_size)), "green")
#start programma
pgzrun.go()
âšī¸ Uitleg
WIDTH
enHEIGHT
: grootte van het spelvenstersnake_x
ensnake_y
: positie van de slangkoptile_size
: grootte van het blokjescreen.draw.filled_rect(...)
: tekent een gevuld vierkantje op het scherm
đ ī¸ Opdracht
- Pas de waarde van
snake_x
ensnake_y
aan â wat gebeurt er? - Maak het vierkant groter of kleiner door
tile_size
te wijzigen - Verander de kleur van het vierkant in bijvoorbeeld
"blue"
of"orange"
đĄ Extra uitdaging
Teken een tweede blokje naast de slangkop alsof er al een stukje staart is. Gebruik nog een screen.draw.filled_rect()
.
đ¤ Inleveren
- Maak een screenshot van je 'slangkop' op het scherm waarbij je de 'slangkop'op een andere positie hebt gezet.
2 Snake â Les 2: Beweeg de slang
In deze les gaan we de slangkop laten bewegen met de pijltjestoetsen.
We gebruiken daarvoor de update()
-functie van Pygame Zero en de toetsenbordinput.
Wat gaan we doen?
We maken een richting-variabele en passen de positie van de slang aan op basis van de pijltjes die je indrukt.
đ° Code
Dit is een deel van de code, je moet jouw bestaande code aanpassen aan de hand van deze nieuwe code.
# Startpositie van de slangkop
snake_x = 200
snake_y = 200
tile_size = 10
step = 1
def draw():
screen.clear()
screen.draw.filled_rect(Rect((snake_x, snake_y), (tile_size, tile_size)), "green")
def update():
global snake_x, snake_y
if keyboard.left:
snake_x -= step
if keyboard.right:
snake_x += step
if keyboard.up:
snake_y -= step
if keyboard.down:
snake_y += step
âšī¸ Uitleg
update()
wordt automatisch meerdere keren per seconde uitgevoerdkeyboard.left
controleert of de linkerpijl is ingedrukt- Telkens als je een toets indrukt, verandert de positie van de slang
step
bepaalt hoe ver de slang per stap beweegt
đ ī¸ Opdracht
- Beweeg de slang door het scherm met de pijltjes
- Pas
step
aan naar een andere waarde â wat merk je? - Laat de slang sneller of langzamer bewegen door minder of meer pixels per keer te verplaatsen
đĄ Extra uitdaging
Laat de slang automatisch blijven bewegen in de laatst gekozen richting:
- Gebruik een variabele
richting
die je bijwerkt meton_key_down()
- Laat de slang dan elke update in die richting verder bewegen
đ¤ Inleveren
- Leg uit wat de variable step doet.
- Welke waarde heb je gekozen, waarom?
(je kunt dit inleveren in het tekst veld of in een .txt. bestandje)