Wat leer je?
- Een achtergrond zelf tekenen met muren in één vaste kleur
- Botsingen herkennen met raakt kleur ...? en de kleur exact pipetteren
- Vloeiend besturen met toets ... ingedrukt? in een lus
- De timer gebruiken om te meten hoe snel je bent
- Sprites laten praten met zend signaal en wanneer ik signaal ... ontvang
- Een eigen blok maken in Mijn Blokken en het overal hergebruiken
Wat heb je nodig?
- Een nieuw, leeg Scratch-project
- Een kleine sprite als speler — bijvoorbeeld Ball of Beetle
- Een tweede sprite als finish — bijvoorbeeld Star of Button3
- Twee zelfgetekende achtergronden (die maak je in stap 1 en stap 12)
- Geduld met je muis: dit is de eerste opdracht waarin je écht tekent
De teken-editor niet meer vers in je hoofd? Kijk even bij De werkplek.
Stap voor stap
Je werkt in dit project met twee sprites én met het speelveld (dat is de achtergrond — die heeft ook zijn eigen codegebied). Boven elk script staat daarom altijd wie het krijgt. Klik dat eerst aan, anders bouw je op de verkeerde plek. Vink een stap af als hij klaar is; je browser onthoudt dat.
Teken je doolhof — muren in één vaste kleur
UiterlijkKlik rechtsonder op het speelveld (het witte vierkantje onder je sprites) en dan bovenaan op het tabblad Achtergronden. Je krijgt de teken-editor. Kies onderaan Omzetten naar bitmap — dat maakt het straks veel makkelijker om netjes te vullen. Teken nu met de rechthoek-tool een doolhof: dikke balken die gangen vormen, met een opening linksonder (daar start je) en een opening rechtsboven (daar komt de finish).
Het allerbelangrijkste: al je muren moeten exact dezelfde kleur hebben. Kies één kleur in het paletje, teken al je rechthoeken, en gebruik de vulemmer om een muur die er per ongeluk anders uitziet weer bij te kleuren. Onthoud welke kleur je koos — bijvoorbeeld dit donkerblauw:
- Mijn doolhof staat op het speelveld en alle muren hebben één kleur
Zet je speler klaar — en maak hem klein
UiterlijkVerwijder de kat en voeg een kleine, ronde sprite toe: Ball werkt perfect. Zet die meteen op 30 % met "maak grootte 30 %". Klik daarna één keer op de sprite in het speelveld en sleep hem in een gang — past hij er ruim door, dan is 30 % goed. Past hij er nauwelijks door, zet dan 20 %.
Sprite: Speler
- Mijn sprite heet Speler en past ruim door de gangen
Leg de startplek vast
BewegingSleep je speler met de muis naar de opening linksonder in je doolhof. Kijk nu onder het speelveld: daar staan de x en y die bij die plek horen. Neem die twee getallen over in een "ga naar x: ... y: ..."-blok onder je hoedblok. In de voorbeelden hieronder gebruiken we x: -200 en y: -150; vul gerust jouw eigen getallen in.
Sprite: Speler
- Mijn speler start altijd op precies dezelfde plek
Besturing met de vier pijltjestoetsen
BesturingSleep een "herhaal voortdurend" onder je startblokken. Zet daar vier "als ... dan"-blokken in. In elk zeshoekje komt "toets ... ingedrukt?" uit Waarneming, met telkens een ander pijltje in het lijstje. In de mond zet je "verander x met ..." of "verander y met ..." uit Beweging.
Sprite: Speler
- Mijn speler loopt met de vier pijltjes alle kanten op
Testmoment — stuurt je speler soepel?
controleKlik op de groene vlag en rijd je speler door de gangen. Hij mag nu nog dwars door de muren — dat komt in stap 6. Werkt de besturing niet? Loop deze lijst af:
- Klik eerst één keer op het speelveld voor je de pijltjes gebruikt, anders luistert je browser nog niet naar Scratch.
- Zitten de vier als-blokken écht in de mond van "herhaal voortdurend"? Sleep het hoedblok een stukje: alles hoort mee te komen.
- Beweegt je speler maar één stapje en dan niet meer? Dan zweeft "herhaal voortdurend" los, of staan de als-blokken eronder in plaats van erin.
- Gaat hij de verkeerde kant op? Verwissel de 4 en de -4. Onthoud: x groter = naar rechts, y groter = naar boven.
- Te traag of te snel? Speel met het getal: 3 is rustig, 6 is pittig. Groter dan 8 wordt onspeelbaar, want dan spring je straks door je muren heen.
- Mijn speler laat zich vlot besturen in alle vier de richtingen
Muren die je écht tegenhouden
WaarnemingSleep uit Waarneming het blok "raakt kleur ... ?" in het zeshoekje van een nieuw "als ... dan", en zet dat als laatste blok in je grote lus — onder de vier toetscontroles. In de mond zet je hetzelfde "ga naar x: ... y: ..." als bij je start.
Nu het belangrijkste trucje van deze hele opdracht: de kleur pipetteren. Klik in het blok op het gekleurde vakje. Er klapt een paneeltje open met drie schuifjes en — helemaal onderaan — een pipet-knopje. Klik daarop: je muispijl wordt een vergrootglas. Klik daarmee midden op een muur in je speelveld. Het vakje neemt precies die kleur over.
Sprite: Speler — onderaan in de grote lus
- Raak ik een muur, dan sta ik meteen terug aan de start
Testmoment — houden de muren echt tegen?
controleKlik op de vlag en rijd expres tegen elke muur van je doolhof. Bij élke muur hoor je terug te springen naar de start. Doet hij dat niet? Dit zijn de vier klassiekers:
- Er gebeurt helemaal niets. Je kleur klopt niet. Klik het kleurvakje open, pak de pipet en klik opnieuw — nu écht midden op een muur, niet op de rand ervan (daar zitten halfdoorzichtige tussenkleurtjes).
- Bij de ene muur wel, bij de andere niet. Je muren hebben niet allemaal dezelfde kleur. Ga terug naar het tabblad Achtergronden en klik met de vulemmer in je muurkleur op elke muur die niet meedoet.
- Je speler wordt onmiddellijk teruggezet, altijd. Je startpositie ligt zelf in of tegen een muur. Sleep je speler naar een echt vrije plek, lees de nieuwe x en y af en pas ze aan — op beide plaatsen waar ze staan.
- Je speler schiet door dunne muren heen. Je stapgrootte is te groot of je muur te dun. Zet de 4 op 3, of teken die muur dikker.
- Elke muur in mijn doolhof houdt me tegen
Zet de finish neer
UiterlijkVoeg een tweede sprite toe — Star is een klassieker — en hernoem hem naar Finish. Sleep hem naar de opening rechtsboven in je doolhof, lees x en y af en geef hem zijn eigen kleine startscript. Zo staat de finish élke ronde op dezelfde plaats, ook als je hem tijdens het bouwen per ongeluk verschuift.
Sprite: Finish
- Mijn finish-sprite staat aan het eind van het doolhof
Merk op dat je de finish haalt
WaarnemingTerug naar de sprite Speler. Zet helemaal onderaan in je grote lus nog een "als ... dan", met in het zeshoekje "raakt Finish ?" uit Waarneming. Voor nu laat je hem gewoon juichen en stopt het script. In stap 13 vervangen we die binnenkant door de level-logica — eerst zorgen we dat het herkennen zelf werkt.
Sprite: Speler — onderaan in de grote lus
- Mijn speler juicht als hij de finish raakt
Zet de timer op nul bij de start
WaarnemingScratch heeft een ingebouwde klok die altijd doorloopt: de timer. Je hoeft er geen variabele voor te maken. Sleep uit Waarneming het blok "zet timer op nul" naar boven in je startblokken, vlak onder "ga naar x: ... y: ...". Zet in de blokkenlijst ook het vinkje aan naast het ronde blokje timer — dan verschijnt de klok linksboven op je speelveld.
Sprite: Speler — bij de startinstellingen
- De timer staat op mijn speelveld en begint bij nul
Testmoment — speel level 1 helemaal uit
controleKlik op de vlag en probeer je doolhof uit te spelen van start tot finish. Doe het drie keer en kijk naar je tijd. Loop daarna deze lijst af:
- Is je doolhof haalbaar? Zit er echt een gang van start tot finish, of heb je jezelf ingemetseld? Ga desnoods terug naar Achtergronden en gum een muurtje weg.
- Is het te makkelijk? Voeg een paar doodlopende zijgangen toe. Een doolhof zonder verkeerde keuzes is gewoon een gang.
- Springt je speler bij het terugzetten meteen weer in de muur? Kies een startplek die iets verder van de muren ligt.
- Loopt de timer? Zo niet: staat het vinkje bij timer aan in de blokkenlijst?
- Laat een klasgenoot spelen zonder uitleg. Snapt hij binnen vijf seconden wat de bedoeling is? Zo niet, maak de finish groter of geef hem een fellere kleur.
- Level 1 is uitspeelbaar, uitdagend en de tijd loopt mee
Teken een tweede doolhof
UiterlijkKlik op het speelveld, tabblad Achtergronden. Klik met de rechtermuisknop op je achtergrond in de lijst links en kies dupliceren. Je hebt nu twee achtergronden. Hernoem ze bovenaan naar level 1 en level 2. Verbouw daarna de kopie: gum gangen weg, teken nieuwe muren, maak het moeilijker. Twee regels blijven heilig: dezelfde muurkleur, en de start linksonder moet vrij blijven.
- Ik heb twee achtergronden: level 1 en level 2
Zend het signaal "level 2"
GebeurtenissenJe speler moet weten in welk level hij zit. Maak daarom in Variabelen een variabele level (voor alle sprites) en zet ze bij de start op 1. Vervang daarna de binnenkant van je "als raakt Finish? dan" door de logica hieronder: zit je in level 1, dan ga je naar level 2; zit je al in level 2, dan heb je gewonnen. Het blok "zend signaal ..." vind je in Gebeurtenissen — klik in het lijstje op Nieuw signaal en maak er twee: level 2 en gewonnen.
Sprite: Speler — bij de startinstellingen
Sprite: Speler — onderaan in de grote lus
- Bij de finish springt level op 2 en gaat het signaal de deur uit
Vang het signaal op: achtergrond en finish verhuizen
GebeurtenissenEen bericht zenden is nutteloos als niemand luistert. Klik eerst op het speelveld en geef het twee losse scripts: één dat bij de start altijd terugzet naar level 1, en één dat op het signaal reageert. Geef daarna ook de sprite Finish een ontvanger, zodat hij in level 2 op een andere plek staat.
Speelveld (Achtergronden)
Sprite: Finish
- Bij de finish wisselt de achtergrond en verhuist de finish mee
Testmoment — komt de overgang naar level 2 goed?
controleKlik op de vlag en speel level 1 uit. Het beeld hoort in één klap te wisselen: nieuw doolhof, speler terug bij de start, teller level op 2. Klopt er iets niet?
- De achtergrond wisselt niet. Staat je ontvanger-script wel bij het speelveld en niet per ongeluk bij een sprite? Klik het speelveld aan en kijk of je script er staat.
- Het signaal in het dropdownlijstje heet iets anders. "level2" en "level 2" zijn voor Scratch twee verschillende berichten. Kies in beide blokken hetzelfde uit het lijstje — typ het niet over.
- Level springt meteen van 1 naar 2 naar "gewonnen". Dan blijft je speler op de finish staan. Controleer of "ga naar x: ... y: ..." écht in de dan-tak staat, ná het zenden.
- De speler zit vast in een muur van level 2. Je nieuwe doolhof heeft een muur op de startplek. Gum daar een gaatje.
- De finish staat in level 2 middenin een muur. Sleep hem naar een vrije plek, lees x en y af en pas het ontvanger-script aan.
- De overgang naar level 2 verloopt vlekkeloos
Maak je eigen blok: "reset speler"
Mijn BlokkenKijk eens naar je script: "ga naar x: -200 y: -150" staat er nu drie keer in. Verander je ooit je startplek, dan moet je drie blokken aanpassen — en vergeet je er eentje, dan zoek je een uur naar de fout. Dat lossen we op met een eigen blok.
Klik onderaan de blokkenlijst op de roze categorie Mijn Blokken en dan op Maak een blok. Typ als naam reset speler en klik op OK. Er verschijnt een roze hoedblok in je codegebied: definieer reset speler. Alles wat je daaronder hangt, is voortaan de inhoud van jouw blok.
Sprite: Speler — de definitie
In de blokkenlijst staat nu een roze blok reset speler. Sleep dat op de drie plekken waar je speler moet herstellen: bovenaan bij de start, in je muur-botsing, en in de dan-tak van je level-wissel. Gooi de blokken die je vervangt weg.
Sprite: Speler — zo gebruik je het
- Mijn eigen blok "reset speler" staat op drie plaatsen in gebruik
Het eindscherm met je tijd
OperatorenNu maak je het af. Geef je speler een derde hoedblok: "wanneer ik signaal gewonnen ontvang". Daaronder laat je hem je tijd voorlezen. Daarvoor plak je stukjes tekst aan elkaar met voeg ... en ... samen uit Operatoren — en omdat de timer iets als 37.284 seconden teruggeeft, wikkel je hem in afgerond.
Sprite: Speler
- Bij het winnen zie ik hoeveel seconden ik nodig had
Eindtest — speel je doolhof twee keer helemaal uit
controleSpeel beide levels uit tot je het eindscherm ziet. Klik daarna meteen opnieuw op de vlag en speel een tweede ronde. Alles moet dan weer volledig van voren af aan beginnen. Controleer:
- Begint ronde twee echt met achtergrond level 1, level = 1, de speler linksonder én de timer op nul? Ontbreekt er iets, dan mist er een blok bij je startinstellingen — of bij die van het speelveld.
- Staat de finish in ronde twee weer op zijn oude plek rechtsboven? Zo niet: het startscript van de Finish-sprite ontbreekt.
- Kan je na "Beide levels gehaald" nog rondrijden? Dan staat "stop alles" niet als laatste blok, of staat er "stop dit script".
- Klopt de tijd ongeveer met je gsm-chronometer? Zo niet: "zet timer op nul" staat waarschijnlijk in de lus in plaats van erboven.
- Klik op het volledige-scherm-knopje boven het speelveld en laat een klasgenoot spelen. Snapt hij zonder uitleg wat hij moet doen? Dat is de echte test.
- Mijn opdracht 7 is af — twee levels, uitspeelbaar en herspeelbaar
Het volledige script
Zo ziet je afgewerkte project eruit. Let goed op: het zijn zes scripts, verdeeld over twee sprites en het speelveld. Vergelijk ze met wat er op jouw scherm staat.
Sprite: Speler — het hoofdscript
Sprite: Speler — je eigen blok
Sprite: Speler — het eindscherm
Sprite: Finish — twee scripts
Speelveld (Achtergronden) — twee scripts
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 sleutel voor de deur
makkelijkVoeg een derde sprite toe: een sleutel ergens in een doodlopende zijgang. De finish telt pas als je die eerst hebt opgepikt. Tip: je hebt een variabele sleutel nodig die op 0 begint en op 1 springt zodra je hem raakt — en een "en"-blok in je finish-controle. Laat de sleutel zichzelf verbergen als hij opgepikt is, en vergeet niet hem bij de start weer te tonen.
Level 3, 4 en 5
middelBreid je spel uit naar vijf levels. Doe het slim: in plaats van vijf keer "als level = ... dan" gebruik je één keer "verander level met 1" en daarna "wissel achtergrond naar volgende achtergrond". Tip: dat laatste blok staat in het dropdownlijstje van "wissel achtergrond naar". Je hoeft dan nog maar op één plaats te controleren of je bij het laatste level bent aangekomen.
Een bewaker die patrouilleert
pittigZet een vijand in het doolhof die eindeloos heen en weer glijdt tussen twee punten. Raak je hem, dan sta je terug bij de start én verlies je een leven. Tip: gebruik "herhaal voortdurend" met twee keer "schuif in 2 seconden naar x: ... y: ...". Extra pittig: laat je speler bij een botsing eerst rood knipperen met "verander kleur effect met 25" voor je hem reset — en merk dan hoe fijn het is dat je eigen blok "reset speler" die effecten alweer opruimt.