logo CoderDojo

Scratch - Snake

We gaan met Scratch het klassieke spel Snake bouwen.

Benodigdheden

Ga naar https://scratch.mit.edu/ en klik op ‘Aan de slag’.


Inleiding

In deze opdracht ga je het klassieke spelletje Snake, dus Slang, programmeren. Je bestuurt in dit spelletje een slang en je doel is door zo veel mogelijk te eten zo lang mogelijk te worden. Maar pas op, als je in je eigen staart bijt dan ben je af!

Dit zijn de stappen die je gaat programmeren:

  1. Maak de slang
  2. Zorg dat de slang kan bewegen
  3. Laat het eten van de slang verschijnen
  4. Maak de slang langer door het eten
  5. Laat het spel eindigen als de slang in de eigen staart bijt

Als je dan nog zin (en tijd) hebt dan zijn er nog allerlei uitbreidingen mogelijk.

De opdracht is afgeleid van deze instructies (Github bron).


Maak de slang

Als je gekozen hebt het project helemaal vanaf het begin te doen, ontwerp dan je eigen slang of download deze plaatjes om de twee uiterlijken van de slang mee te maken:

Slang lijf Slang hoofd Volg deze stappen om een sprite van de slang te maken:

  1. Klik op het icoon voor een nieuwe sprite (rechtsonder, plaatje van de kat) en kies voor Upload sprite.
  2. Upload het hoofd van de slang.
  3. Ga naar het tabblad Uiterlijken (linksboven, rechts naast het Code tabblad).
  4. Klik op het icoon voor een nieuw uiterlijk (linksonder, plaatje van de kat) en kies voor Upload uiterlijk.
  5. Upload het lijf van de slang.
  6. Klik nu op het hoofd van de slang.

Zorg dat de slang kan bewegen

Het is de bedoeling om de slang met de pijltjestoetsen te laten bewegen. Er zijn verschillende manieren om dit te doen, bijvoorbeeld zo:

wanneer [pijltje omhoog v] is ingedrukt richt naar (0) graden neem (5) stappen

Met richt naar 0 graden draai je het hoofd van de slang naar boven, met neem 5 stappen beweegt de slang 5 stappen in die richting. Maar… als je de toets loslaat, dan houdt de slang op met bewegen.

Opdracht Zorg dat de slang doorgaat met bewegen totdat je een andere kant op gaat.

Tip 1: hiervoor heb je het herhaal blok uit het menu Besturen nodig.
Tip 2: begin het programma met het wanneer op de vlag wordt geklikt blok uit het menu Gebeurtenissen.

Klik om de voorbeeldcode te laten zien om de slang omhoog te laten bewegen
wanneer groene vlag wordt aangeklikt herhaal als <toets [pijltje omhoog v] ingedrukt?> dan richt naar (0) graden end neem (10) stappen wacht (0.1) sec.

In de voorbeeldcode wordt het blok wacht 0.1 sec. gebruikt. Dit is niet nodig om de slang te laten bewegen, maar wordt verderop in het spel belangrijk. Door de wachttijd en/of het aantal stappen dat de slang zet te veranderen kun je de snelheid van de slang bepalen.

Extra: via de volgende aanpassing reageert de slang beter!
wanneer groene vlag wordt aangeklikt herhaal neem (10) stappen wacht (0.1) sec. end
wanneer groene vlag wordt aangeklikt herhaal als <toets [pijltje omhoog v] ingedrukt?> dan richt naar (0) graden end
Met deze aanpassing check je elke update of er een pijltje is ingedrukt. Voorheen gebeurde dit niet altijd, omdat we tussendoor ook 0.1 seconde wachtten.

Laat de appels verschijnen

Nu is het tijd om de slang eten te geven. Dit voorbeeld gaat uit van appels, je kunt natuurlijk ook iets heel anders verzinnen. Om het lekker onvoorspelbaar te maken waar de appel verschijnt, is het blok ga naar willekeurige positie uit het menu Beweging heel geschikt.

Opdracht Maak een nieuwe sprite voor de appel, en zorg dat er bij het begin van het spel een appel verschijnt.

Tip: zorg dat je de appel-sprite hebt gekozen, zodat de code die je maakt ook echt bepaalt wat de appel moet doen.

Klik om de voorbeeldcode te laten zien
wanneer groene vlag wordt aangeklikt ga naar (willekeurige positie)

De volgende stap is om een “nieuwe” appel op een andere plek te laten verschijnen wanneer de slang er een heeft opgegeten. Hiervoor maak je niet echt een nieuwe appel, maar je laat de appel-sprite gewoon op een andere plek verschijnen.

Opdracht Laat de appel op een andere plek verschijnen als de slang er een heeft opgegeten.

Tip: hiervoor kun je het blok raak ik … uit het menu Waarnemen gebruiken.

Klik om de voorbeeldcode te laten zien
wanneer groene vlag wordt aangeklikt ga naar (willekeurige positie) herhaal als <raak ik (slang hoofd v)?> dan ga naar (willekeurige positie) end

Maak de slang langer

Van al die appels groeit de slang natuurlijk wel! Het is nu tijd om de slang langer te maken als je een appel eet. Hiervoor is het eerst nodig dat je bijhoudt hoeveel appels de slang al heeft gegeten, dat kun je ook meteen als je score in het spel gebruiken!

Opdracht Hou het aantal gegeten appels bij.

Tip 1: hiervoor heb je een variabele nodig, deze maak je in het menu Variabelen.
Tip 2: zet aan het begin van het spel de waarde van de variabele op 0.

Klik om de voorbeeldcode voor de slang te laten zien
wanneer groene vlag wordt aangeklikt maak [score v] (0) enzovoort
Klik om de voorbeeldcode voor de appel te laten zien
wanneer groene vlag wordt aangeklikt ga naar (willekeurige positie) herhaal als <raak ik (slang hoofd v)?> dan ga naar (willekeurige positie) verander [score v] met (1) end

Nu komt het moeilijkste stukje van het spel: het lijf van de slang! Hiervoor ga je werken met klonen van de slang, deze functies vind je in het menu Besturen. Dit werkt zo:

Opdracht Kloon de kop van de slang (bij iedere stap), en laat de kloons na een tijdje weer verdwijnen. Tip: je kunt uitrekenen hoe lang je moet wachten door je score te vermenigvuldigen met hoe lang 1 stap van de slang duurt.

Klik om de voorbeeldcode voor de slang te laten zien
wanneer groene vlag wordt aangeklikt herhaal als <toets [pijltje omhoog v] ingedrukt?> dan richt naar (0) graden end neem (10) stappen wacht (0.1) sec. maak een kloon van (mijzelf v)
Klik om de voorbeeldcode van kloons van de slang te laten zien
wanneer ik als kloon start verander uiterlijk naar (slang_lijf v) wacht ((score) * (0.1)) sec. verwijder deze kloon

Verliezen als je in jezelf hapt

Je hebt nu een slang die steeds langer wordt als ie meer appels eet. Wat nog mist is dat het spel is afgelopen als je slang in zichzelf bijt. Dit gebeurt wanneer een deel van het lijf een ander deel van het lijf raakt.

Opdracht Zorg ervoor dat het spel stopt als de slang in zichzelf bijt.

Tip: hiervoor kun je weer het raak ik blok gebruiken.

Klik om de voorbeeldcode te laten zien
wanneer ik als kloon start als <raak ik kleur [#9afeb6]?> dan stop [alle v]

Uitbreidingen

Je kunt het spel natuurlijk nog veel mooier, spannender en moeilijker maken. Hier heb je alvast een lijstje met ideeën als je nog verder wil programmeren aan Snake:




Licentie

Deze instructies worden, net als alle andere instructies van CoderDojo Nijmegen, aangeboden onder een Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International Licentie.

Creative Commons License