3 · De eeuwige stuiterbal

Een bal die begint in het midden, een willekeurige kant op vliegt en nooit meer stopt: elke keer als hij de rand raakt, kaatst hij terug. Je hebt er maar zes blokken voor nodig. Toch leer je hier drie dingen die je in bijna elk spel opnieuw gebruikt: een lus die eeuwig doorloopt, toeval waardoor elke ronde anders is, en een sprite die zelf op zijn omgeving reageert.

★☆☆ makkelijk 8 stappen ongeveer 25 minuten

Wat leer je?

  • Een nieuwe sprite kiezen uit de Scratch-bibliotheek
  • Een script dat nooit stopt met "herhaal voortdurend"
  • Toeval gebruiken met willekeurig getal tussen ... en ...
  • Wat een richting is in Scratch, en wat "als op rand, keer om" precies doet
  • Waarom je sprite op zijn kop gaat, en hoe draaistijl dat oplost
  • Een sprite dupliceren en de kopie een eigen karakter geven

Wat heb je nodig?

  • Een nieuw, leeg Scratch-project
  • Een bal-sprite uit de bibliotheek (bijvoorbeeld "Ball" of "Soccer Ball")
  • Geen speciale achtergrond — een effen achtergrond kijkt wel rustiger

De lus "herhaal voortdurend" kwam ook al voor in opdracht 2.

Stap voor stap

Dit script is kort, dus neem de tijd om bij elke stap even te klikken en te kijken wat er gebeurt. Vink een stap af als hij klaar is; je browser onthoudt dat.

1

Kies een bal-sprite

werkplek

Ga rechtsonder naar het kattenknopje met het plusje en houd je muis erboven. Klik op het vergrootglas Kies een sprite en zoek boven aan de categorie Alles naar een bal — "Ball" en "Soccer Ball" zijn allebei prima. Klik erop en hij staat meteen op je speelveld. De kat mag blijven staan, maar netter is: klik op de kat en druk op het prullenbakje in de hoek van zijn kaartje.

Belangrijk: elke sprite heeft zijn eigen codegebied. Klik dus eerst je bal aan in de lijst onderaan, vóór je blokken gaat slepen. Bouw je per ongeluk op de kat, dan lijkt het alsof je script niets doet — terwijl het gewoon bij de verkeerde sprite hangt.
  • Mijn bal staat op het speelveld en is geselecteerd
2

Zet de bal klaar in het midden, met een willekeurige richting

Beweging

Begin met het groene-vlag-hoedblok uit Gebeurtenissen. Hang daaronder uit Beweging het blok "ga naar x: 0 y: 0" en daaronder "wijs in richting 90". Sleep nu uit de groene categorie Operatoren het ronde blok "willekeurig getal tussen 1 en 10" bovenop het getal 90, en typ er 1 en 360 in.

als wordt aangeklikt
ga naar x: 0 y: 0
wijs in richting willekeurig getal tussen 1 en 360
Wat is een richting? Scratch meet de richting als een getal op een kompas: 90 is naar rechts, 180 naar beneden, -90 (of 270) naar links en 0 recht omhoog. Met "willekeurig getal tussen 1 en 360" kies je dus elke start opnieuw een andere hoek — daardoor ziet elke ronde er anders uit. Dat ronde blokje is een reporter: het geeft een getal terug en leeft alleen ín het vakje van een ander blok.
  • Mijn bal springt naar het midden en kijkt elke keer een andere kant op
3

De eeuwige lus: bewegen en terugkaatsen

Besturing

Klik onderaan je script het oranje blok "herhaal voortdurend" uit Besturing. Sleep daarna in de mond van die lus twee blokken uit Beweging: "beweeg 10 stappen" en daaronder "als op rand, keer om". Let erop dat ze ingesprongen in de mond staan.

als wordt aangeklikt
ga naar x: 0 y: 0
wijs in richting willekeurig getal tussen 1 en 360
herhaal voortdurend
beweeg 10 stappen
als op rand, keer om
Waarom binnen de lus? "beweeg 10 stappen" verzet je bal precies één keer tien pixels — dat zie je nauwelijks. Door het in de lus te zetten gebeurt het ongeveer 30 keer per seconde opnieuw, en dat zien je ogen als vloeiende beweging. "als op rand, keer om" controleert elke ronde of de bal de kant van het speelveld raakt; zo ja, dan draait Scratch de richting om, net als een lichtstraal die op een spiegel stuitert.
  • Beide bewegingsblokken zitten ín de mond van de lus

Testmoment — laat hem stuiteren

controle

Klik op de groene vlag. Je bal schiet vanuit het midden weg en blijft kaatsen. Klik nog eens en nog eens: elke keer een andere baan. Klopt er iets niet? Loop deze lijst af:

  • Blijft de bal stilstaan? Dan staat "beweeg 10 stappen" waarschijnlijk onder de lus in plaats van erin. Kijk of het blok ingesprongen staat.
  • Doet de bal één klein sprongetje en stopt hij? Dan mist de lus helemaal — je hebt de blokken gewoon onder elkaar geklikt.
  • Blijft de bal in de rand plakken of trilt hij? Controleer of "als op rand, keer om" onder "beweeg" staat en niet erboven.
  • Gaat de bal altijd dezelfde kant op? Dan zit het ronde toevalsblokje niet echt in het vakje van "wijs in richting". Sleep het er opnieuw bovenop tot het vakje wit oplicht.
  • Gebeurt er niets? Kijk of je script wel bij de bal-sprite hangt en niet bij de kat.
  • Mijn bal kaatst eindeloos rond en start elke keer anders
5

Zet je bal rechtop met de draaistijl

Beweging

Kijk goed naar je bal terwijl hij vliegt: hij kantelt mee met zijn richting. Bij een ronde bal valt dat amper op, maar probeer dit script eens op de kat — die hangt binnen de kortste keren ondersteboven. Sleep uit Beweging het blok "maak draaistijl ..." vlak onder het hoedblok en kies in de lijst links-rechts.

als wordt aangeklikt
maak draaistijl links-rechts
ga naar x: 0 y: 0
Drie standen, drie gevoelens. Bij rondom (de standaardstand) draait je sprite echt mee met elke hoek. Bij links-rechts blijft hij altijd rechtop staan en wordt hij alleen gespiegeld als hij naar links gaat — dat is wat je wil voor figuurtjes die lopen. Bij niet draaien beweegt de sprite wel, maar staat het plaatje altijd exact hetzelfde. Let op: de draaistijl verandert alleen hoe je sprite eruitziet, niet welke kant hij op vliegt.
  • Mijn sprite kantelt niet meer mee
6

Regel de snelheid

Beweging

Het getal in "beweeg ... stappen" is je snelheid. Probeer achter elkaar 3, 10 en 25 en kijk telkens even. Bij 3 rolt je bal traag en zwaar, bij 25 schiet hij als een flipperkastbal heen en weer. Wil je dat elke ronde óók verrast, sleep dan opnieuw een "willekeurig getal tussen ... en ..." in het vakje.

beweeg willekeurig getal tussen 5 en 15 stappen
Opgelet — dit is een valkuil. Zet je het toevalsblok in de lus, dan wordt de snelheid dertig keer per seconde opnieuw geloot en je bal gaat zenuwachtig trillen. Wil je dat de bal één snelheid heeft die per ronde verschilt? Dan heb je een variabele nodig — dat leer je in opdracht 5. Ga voor nu gewoon voor een vast getal dat lekker aanvoelt.
  • Ik heb een snelheid gekozen die goed voelt
7

Een tweede bal met een eigen karakter

Uiterlijk

Klik met de rechtermuisknop op je bal in de spritelijst onderaan en kies dupliceren. Je krijgt een tweede bal inclusief het hele script — je hoeft dus niets opnieuw te bouwen. Selecteer die tweede bal en geef hem een andere snelheid (bijvoorbeeld 18 in plaats van 10). Hang er daarna uit de paarse categorie Uiterlijk het blok "verander kleur effect met 25" onder het hoedblok, zodat je meteen ziet welke bal welke is.

als wordt aangeklikt
verander kleur effect met 75
ga naar x: 0 y: 0
wijs in richting willekeurig getal tussen 1 en 360
herhaal voortdurend
beweeg 18 stappen
als op rand, keer om
Twee scripts, tegelijk. Beide ballen hebben een eigen script met een eigen groene-vlag-blok. Eén klik op de vlag start ze allebei, en ze draaien echt naast elkaar. Zo bouw je later ook een spel met een speler, vijanden en een teller die allemaal tegelijk hun ding doen.
  • Ik heb twee ballen met een andere kleur en snelheid

Testmoment — allebei tegelijk

controle

Klik op de groene vlag en zet je project op volledig scherm met het knopje rechtsboven het speelveld. Twee ballen, twee snelheden, twee kleuren, en ze stoppen nooit. Klopt er iets niet?

  • Beweegt maar één bal? Klik de stilstaande bal aan en kijk of het script er wel staat. Bij dupliceren gaat het script mee, maar bij een nieuwe sprite uit de bibliotheek niet.
  • Hebben ze dezelfde kleur? Zet in het kleurblok een groter getal, of zet het bij de andere bal juist op 0.
  • Zijn ze na een tijdje allebei even snel? Kijk of je per ongeluk het script van dezelfde bal twee keer hebt aangepast — controleer welke sprite blauw omrand is.
  • Zit je bal vast in een hoek? Zet de snelheid even lager en klik opnieuw op de vlag; hij start dan weer netjes in het midden.
  • Mijn opdracht 3 is af

Het volledige script

Dit is het complete script van je eerste bal. De tweede bal heeft precies hetzelfde, alleen met een ander getal bij "beweeg" en een kleurblok erbij.

als wordt aangeklikt
maak draaistijl links-rechts
ga naar x: 0 y: 0
wijs in richting willekeurig getal tussen 1 en 360
herhaal voortdurend
beweeg 10 stappen
als op rand, keer om
De klassieke beginnersfout "als op rand, keer om" onder de lus zetten in plaats van erin. Je bal beweegt dan wel, maar kaatst nooit: hij plakt tegen de rand en blijft daar duwen. De reden is simpel — een blok dat onder "herhaal voortdurend" hangt komt nooit aan de beurt, want die lus is nooit klaar. Alles wat moet blijven gebeuren, hoort dus ín de mond. Tweede versie van dezelfde fout: het startblok "wijs in richting ..." per ongeluk óók in de lus zetten. Dan kiest je bal dertig keer per seconde een nieuwe richting en trilt hij op zijn plaats in plaats van te vliegen.

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.

A

Een spoor van ballen

makkelijk

Maak er vijf ballen van, elk met een andere kleur en een andere snelheid. Tip: dupliceer gewoon door, en verander per kopie twee getallen. Zorg dat je aan de kleur meteen kunt zien welke bal de snelste is.

B

Een bal die groter en kleiner wordt

middel

Laat je bal langzaam groeien terwijl hij vliegt, en weer krimpen als hij te groot is. Tip: in Uiterlijk staan "verander grootte met ..." en "maak grootte ... %", en in Waarneming en Operatoren vind je de blokken om te vragen hoe groot hij nú is.

C

Botsende ballen

pittig

Laat je twee ballen ook van elkaar afketsen in plaats van dwars door elkaar heen te vliegen. Tip: in Waarneming staat het zeshoekige blok "raak ik ...?" waarmee je een andere sprite kunt kiezen. En wat gebeurt er als je bij een botsing "draai 180 graden" gebruikt? Waarschuwing: dit is lastiger dan het lijkt — twee ballen die elkaar blijven raken, blijven ook maar draaien.

2 · Bestuur je sprite 4 · Dansende kat