Wat leer je?
- Wat een kloon is en waarom je er geen 30 sprites voor hoeft te tekenen
- Het verschil tussen het origineel en zijn klonen
- Het hoedblok wanneer ik als kloon start — elke kloon draait zijn eigen script
- Waarom je elke kloon moet verwijderen en wat er gebeurt als je dat vergeet
- Met signalen laten praten tussen sprites die elkaar niet kennen
- Een spel in golven laten groeien met een variabele
Wat heb je nodig?
- Een nieuw, leeg Scratch-project
- De achtergrond Stars (of Space) uit de achtergrondenbibliotheek
- De sprite Rocketship — dat wordt je Ruimteschip
- De sprite Ball of Button3 — dat wordt je Kogel
- De sprite Beetle of Ghost — dat wordt je Vijand
- Twee korte geluidjes, bijvoorbeeld Laser1 en Pop
Klonen zijn nieuw voor je? Kijk eerst even in het Blokkenboek bij de categorie Besturing.
Stap voor stap
Je werkt met drie sprites en één achtergrond. Boven elk script staat daarom altijd bij welke sprite het hoort — klik die sprite éérst aan, anders bouw je bij de verkeerde figuur. Vink een stap af als hij klaar is; je browser onthoudt dat.
Zet je achtergrond en je drie sprites klaar
UiterlijkGooi de kat weg. Klik rechtsonder op de achtergrond-knop en kies Stars. Voeg daarna drie sprites toe en geef ze meteen een duidelijke naam (klik op het naamvakje boven de sprite-lijst): Ruimteschip, Kogel en Vijand. Goede namen zijn hier geen luxe — je gaat straks in dropdownlijstjes kiezen "raakt Vijand?", en dan wil je niet zitten twijfelen tussen "Beetle2" en "Ball".
- Ik zie een sterrenhemel en drie sprites met nette namen
Zet het schip op zijn startplek
BewegingKlik de sprite Ruimteschip aan. Geef hem een startgrootte en zet hem onderaan in het midden. Zo begint elke ronde exact hetzelfde, ook als je schip de vorige keer in een hoekje eindigde.
Sprite: Ruimteschip
- Mijn schip staat onderaan in het midden
Bestuur het schip met links en rechts
BesturingSleep een herhaal voortdurend onder je startblokken en zet daar twee "als ... dan"-blokken in. De zeshoekjes vul je met "toets ... ingedrukt?" uit Waarneming. Zo kijkt Scratch tientallen keren per seconde opnieuw of jij een pijltje indrukt.
Sprite: Ruimteschip
- Mijn schip schuift naar links en naar rechts
Hou het schip binnen het scherm
OperatorenZonder rem verdwijnt je schip half buiten beeld. Zet onderaan in dezelfde herhaal voortdurend nog twee als-blokken. In het zeshoekje gebruik je de operator > of <, met daarin het ronde blokje x-positie uit Beweging.
Sprite: Ruimteschip — onderaan in de lus
- Mijn schip botst tegen de zijkanten en blijft in beeld
Testmoment — vliegt je schip goed?
controleKlik op de groene vlag en hou de pijltjes ingedrukt. Het schip hoort vloeiend heen en weer te schuiven en netjes te stoppen aan de randen. Loopt er iets mis?
- Er gebeurt niets? Klik eerst één keer op het speelveld, anders luistert je browser nog niet naar Scratch.
- Het schip beweegt één stapje en stopt dan? Je "herhaal voortdurend" ontbreekt, of de als-blokken staan eronder in plaats van erin. Sleep het hoedblok een stukje: alles moet meekomen.
- Het schip gaat de verkeerde kant op? Dan staan 8 en -8 verwisseld.
- Het schip trilt aan de rand? Dat mag. Zorg wel dat de y in je grensblokken exact -140 is, anders springt het schip een beetje omhoog of omlaag als je de rand raakt.
- Het schip draait op zijn kop? Klik op het sprite-informatiepaneel en zet de draaistijl op "draai niet".
- Mijn schip vliegt soepel en blijft binnen beeld
Verberg de kogel — het origineel doet niet mee
UiterlijkKlik de sprite Kogel aan. Maak hem klein en zet er meteen verberg onder. Dat voelt raar — je maakt een kogel die je nooit ziet — maar dat is precies de bedoeling.
Sprite: Kogel
- Mijn kogel-sprite is onzichtbaar bij de start
Spatie maakt een kloon
BesturingZet onder je startblokken een herhaal voortdurend met daarin één als-blok: als de spatiebalk ingedrukt is, maak dan een kloon van jezelf. Het blok "maak kloon van mijzelf" vind je helemaal onderaan in Besturing. En vergeet de wacht 0.25 seconden niet — die staat er niet voor niets.
Sprite: Kogel
- Mijn kogel maakt klonen als ik op spatie druk (nog niet zichtbaar)
Wanneer ik als kloon start — het tweede leven van je sprite
BesturingSleep een nieuw, apart hoedblok naar een lege plek in hetzelfde codegebied: "wanneer ik als kloon start". Dit script hoort bij niemand in het bijzonder — het draait telkens opnieuw, één keer per kloon. Laat elke kloon eerst naar het schip springen en zichzelf tonen.
Sprite: Kogel — een tweede, los script
- Er verschijnt een kogel bij mijn schip als ik op spatie druk
Laat de kloon omhoog vliegen
BesturingOnder "toon" komt een herhaal tot-lus. Als voorwaarde gebruik je de operator of met daarin twee keer "raakt ...?": één keer rand, één keer Vijand. In de mond zet je "verander y met 12".
Sprite: Kogel
- Mijn kogels vliegen omhoog tot de bovenrand
Ruim de kloon op — het belangrijkste blok van deze les
BesturingZet helemaal onderaan, ná de "herhaal tot"-lus, het blok verwijder deze kloon. Het is een eindblok: het heeft geen nokje onderaan, want er kan niets meer volgen. Deze kloon houdt hier gewoon op te bestaan.
Sprite: Kogel
- Mijn kogels verdwijnen netjes aan de bovenkant
Testmoment — schiet je schip?
controleKlik op de vlag, vlieg heen en weer en hou de spatiebalk twintig seconden ingedrukt. Er hoort een gestage stroom kogels omhoog te gaan, en bovenaan moet elke kogel netjes verdwijnen. Klopt er iets niet?
- Er verschijnt geen enkele kogel? Kijk of je twee losse scripts hebt bij de Kogel: één met de groene vlag en één met "wanneer ik als kloon start". Hangt dat tweede hoedblok per ongeluk vast onder het eerste script, dan draait het nooit.
- Er blijft één kogel op het schip plakken? Je bent het blok "verberg" bij de start vergeten — je ziet het origineel.
- Kogels blijven bovenaan hangen? "verwijder deze kloon" ontbreekt, of het staat per ongeluk binnen de herhaal-tot-lus.
- Na een tijdje kan je niet meer schieten? Klassiek symptoom van vergeten opruimen: de kloonlimiet van 300 is bereikt. Klik op de rode stopknop; alle klonen verdwijnen dan in één keer.
- Er komen kogels uit het midden van het scherm? "ga naar Ruimteschip" staat na de herhaal-lus in plaats van ervoor, of het dropdownlijstje staat nog op "willekeurige positie".
- Ik kan blijven schieten zonder dat het spel vastloopt
Maak de variabelen score, levens en golf
VariabelenKlik op Variabelen en maak er drie, telkens voor alle sprites: score, levens en golf. Zet ze alle drie klaar bij de startblokken van je Ruimteschip — dat is de enige sprite die geen klonen maakt, dus daar gebeurt zo'n startinstelling precies één keer.
Sprite: Ruimteschip — bovenaan, vóór de lus
- Score, levens en golf staan op het speelveld
Zend het signaal "raak" als je iets treft
GebeurtenissenTerug naar de Kogel. Zet tussen de herhaal-tot-lus en "verwijder deze kloon" een als-blok dat vraagt of je een vijand raakt. Zo ja: roep het door met zend signaal. Klik in het dropdownlijstje op "nieuw bericht" en noem het raak.
Sprite: Kogel
- Mijn kogel zendt het signaal "raak"
De vijand spawnt klonen
BesturingKlik de sprite Vijand aan. Precies dezelfde truc als bij de kogel: verbergen bij de start, en dan in een lus telkens een kloon maken. Alleen wacht je nu een willekeurige tijd, zodat de vijanden niet als een metronoom binnenkomen.
Sprite: Vijand
- Mijn vijand-sprite maakt om de paar seconden een kloon
Elke vijand-kloon start bovenaan op een andere plek
BewegingSleep een tweede, los hoedblok "wanneer ik als kloon start" in het codegebied van de Vijand. Laat elke kloon bovenaan verschijnen op een willekeurige x, en zichzelf tonen.
Sprite: Vijand — een tweede, los script
- Er verschijnen vijanden bovenaan op wisselende plekken
Laat de vijand zakken tot hij geraakt wordt of de bodem haalt
BesturingOnder "toon" komt een herhaal tot-lus met opnieuw een of: stoppen mag als de kloon een kogel raakt of als hij onder y = -150 zakt. In de mond zet je "verander y met -3". Sluit af met verwijder deze kloon — ook hier weer.
Sprite: Vijand
- Vijanden zakken naar beneden en verdwijnen onderaan
Testmoment — komt de invasie op gang?
controleKlik op de vlag en kijk een halve minuut toe zonder te schieten. Er horen om de paar seconden vijanden bovenaan te verschijnen die rustig naar beneden zakken en onderaan verdwijnen. Schiet daarna eens raak. Loopt er iets mis?
- Er verschijnt geen enkele vijand? Staat "verberg" bij de start? Dan zie je het origineel niet — dat klopt. Maar staan er ook geen klonen? Kijk of het wacht-blok en het kloon-blok écht binnen de "herhaal voortdurend" zitten.
- De vijanden verschijnen allemaal op dezelfde x? Het blokje "willekeurig getal" zit waarschijnlijk in het verkeerde vakje, of je hebt er een vast getal ingetypt.
- De vijanden verdwijnen meteen na het verschijnen? Je gebruikt "raakt rand?" in plaats van de y-positie-vergelijking, of je begint op y = 180 in plaats van 170.
- De vijand verdwijnt niet als je hem raakt? Controleer of in het dropdownlijstje van "raakt ...?" echt Kogel staat, en niet een oude spritenaam.
- Alles wordt na een minuut traag? Dan mist er ergens "verwijder deze kloon". Kijk zowel bij de Kogel als bij de Vijand.
- Vijanden komen binnen, zakken en verdwijnen als ik ze raak
Punten tellen met "wanneer ik signaal raak ontvang"
GebeurtenissenKlik de sprite Ruimteschip aan en zet daar een derde, los script neer: het hoedblok "wanneer ik signaal raak ontvang" met daaronder "verander score met 10".
Sprite: Ruimteschip — een los script
- Elke treffer geeft precies 10 punten
Een vijand die de bodem haalt kost een leven
VariabelenTerug naar de Vijand. Zet tussen de herhaal-tot-lus en "verwijder deze kloon" een als ... dan ... anders. Raakt hij een kogel? Dan een plopje. Anders is hij doorgezakt tot onderaan, en dat kost jou een leven.
Sprite: Vijand
- Een vijand die ontsnapt kost me precies 1 leven
Testmoment — kloppen je score en je levens?
controleSpeel een halve minuut en hou de twee tellers linksboven scherp in de gaten. Schiet drie vijanden neer (dat hoort exact 30 punten te zijn) en laat er drie ontsnappen. Klopt het niet?
- Score springt met 20, 30 of 70 tegelijk? Je "wanneer ik signaal raak ontvang" staat bij de Vijand of bij de Kogel in plaats van bij het Ruimteschip. Sleep het script naar het schip: pak het hoedblok vast en laat het los op de sprite-tegel van het Ruimteschip.
- Score verandert nooit? Heet je bericht overal exact hetzelfde? "raak" en "Raak" zijn twee verschillende signalen in het dropdownlijstje.
- Levens gaan meteen naar 0? De als/anders staat in de herhaal-tot-lus in plaats van eronder — dan telt hij bij élke stap naar beneden een leven af.
- Levens gaan omlaag terwijl je raak schiet? Je kogel raakt de vijand net niet meer op het moment dat de vijand controleert. Maak je kogel of je vijand iets groter, of zet de kogelsnelheid van 12 naar 10.
- Score blijft op 0 hangen ondanks treffers? Kijk of "maak score 0" niet per ongeluk in de "herhaal voortdurend" van je schip terechtgekomen is.
- Drie treffers = 30 punten, drie ontsnappers = 3 levens minder
Golven — het spel wordt zwaarder
VariabelenZet bij de Vijand een derde, los script: elke 20 seconden gaat de variabele golf één omhoog. Vervang daarna in je zak-lus het vaste getal -3 door de operator min uit Operatoren: -2 min golf. In golf 1 zak je dus met -3, in golf 2 met -4, in golf 5 met -7.
Sprite: Vijand — een derde, los script
Sprite: Vijand — in de zak-lus van de kloon
- Na 20 seconden zakken de vijanden merkbaar sneller
Game over bij 0 levens
BesturingEen spel dat nooit eindigt, is geen spel. Zet bij het Ruimteschip nog een los script neer met het blok wacht tot uit Besturing. Daarin komt de operator = met het ronde blokje levens en het getal 0.
Sprite: Ruimteschip — een los script
- Bij 0 levens stopt het spel met een boodschap
Feedback voor de speler: een flits bij elke treffer
UiterlijkEen goed spel reageert. Breid je "wanneer ik signaal raak ontvang" bij het Ruimteschip uit met een korte kleurflits. Zet daarna het effect meteen weer op 0, anders blijft je schip permanent van kleur veranderen.
Sprite: Ruimteschip
- Mijn schip flitst even op bij elke treffer
Eindtest — speel je shooter helemaal uit
controleSpeel tot je alle drie je levens kwijt bent, en start dan meteen een tweede ronde. Alles moet weer schoon van voren af aan beginnen. Loop deze eindcontrole af:
- Begint ronde twee echt met score 0, 3 levens én golf 1? Zo niet: er ontbreekt een "maak ..."-blok bij de startinstellingen van je schip.
- Blijft het spel doorlopen ná "Game over"? Dan zit "stop alles" er niet, of het staat buiten je script.
- Speel drie minuten aan één stuk door. Wordt het spel traag of haperig? Dan blijft er ergens een kloon hangen. Kijk of allebei je "wanneer ik als kloon start"-scripts eindigen op verwijder deze kloon.
- Is golf 4 nog te doen? Zo niet: verhoog de kogelsnelheid, of zet de golf-wachttijd van 20 op 30 seconden. Een spel moet moeilijk zijn, niet oneerlijk.
- Klik op het volledige-scherm-knopje en laat een klasgenoot spelen zonder uitleg. Begrijpt hij binnen tien seconden wat hij moet doen? Dat is de echte test.
- Mijn opdracht 9 is af — de shooter is uitspeelbaar en herspeelbaar
Het volledige script
Zo ziet je afgewerkte project eruit: zeven losse scripts, verdeeld over drie sprites. Vergelijk ze zorgvuldig met wat er op jouw scherm staat — vooral of een hoedblok echt bovenaan een los script staat.
Sprite: Ruimteschip — script 1: starten en besturen
Sprite: Ruimteschip — script 2: punten tellen · script 3: game over
Sprite: Kogel — script 1: schieten · script 2: het leven van één kogel
Sprite: Vijand — script 1: klonen spawnen · script 2: het leven van één vijand · script 3: de golfteller
Uitdagingen
Klaar en nog tijd over? Deze drie uitdagingen hebben géén uitgewerkte oplossing — zoek zelf uit hoe je ze oplost. Alle blokken die je nodig hebt, ken je nu.
Een schild dat je kan oppikken
makkelijkVoeg een vierde sprite toe die af en toe naar beneden zweeft. Raak jij hem met je schip, dan krijg je er een leven bij. Tip: het script lijkt sterk op dat van de Vijand — verbergen, klonen maken met een lange wachttijd, zakken, en bij "raakt Ruimteschip?" een leven erbij in plaats van eraf. Vergeet je "verwijder deze kloon" niet.
Vijanden die terugschieten
middelMaak een vijfde sprite "Vijandkogel" die klonen maakt op de plek van een vijand en naar beneden vliegt. Raakt zo'n kogel jouw schip, dan verlies je een leven. Tip: het lastigste is waar zo'n kogel moet ontstaan. Denk na over hoe een vijand-kloon zelf een kogel kan afvuren, en welk blok in Scratch een kloon van een andere sprite kan maken.
Een eindbaas met een levensbalk
pittigLaat vanaf golf 5 één grote eindbaas verschijnen die pas na tien treffers verdwijnt. Tip: je hebt een aparte variabele bazenlevens nodig, en de baas mag géén "verwijder deze kloon" doen zolang die variabele boven 0 staat. Extra pittig: teken een levensbalk door een dunne sprite breder en smaller te maken met "maak grootte ... %", gestuurd door bazenlevens.