Uit Dutch Scratch-Wiki
Bij computerspelletjes waarin je punten kunt verdienen, heb je een scoreteller nodig. In dit Wiki-artikel lees je over verschillende manieren om een scoreteller te maken. Ook vind je hier uitleg over verschillende manieren om die score in beeld te brengen, bijvoorbeeld in een tekstballon of door sprites met mooie letters te gebruiken.
Van start
Om te beginnen maak je een variabele met de naam 'score' (zie variabelen bij data).
Maak een variabele ::grey boolean
Deze variabele is je scoreteller. Een variabele is een soort van doosje of kastje met een cijfer of woord erin (in dit geval een cijfer).
Bij de start van het spel wil je natuurlijk met een score van 0 beginnen.
Daarom zeg je tegen je sprite, 'als de groene vlag wordt aangeklikt maak score 0'.
wanneer groene vlag wordt aangeklikt maak [score v] [0]
Punten scoren
Nu wil je bijvoorbeeld dat de speler er 1 punt krijgt als de Scratch-kat een groen balletje vangt (raakt). Dan moet bij de Scratch-kat de volgende code komen te staan: 'als raak ik [groene bal] verander score met 1'.
herhaal als <raak ik [groene bal v]?> dan verander [score v] met (1) end end
Als je er voor kiest het balletje niet te laten verdwijnen op het moment dat de Scratch-kat het groene balletje raakt, is het handig om ook een wachttijd toe te voegen. Anders gaat je computerprogramma elke 0,03 seconde, oftewel na elke herhaal-loop, opnieuw controleren of de kat het balletje raakt. Dan verdient de speler soms ineens veel punten tegelijk. Met 2 seconden wachttijd kun je dat meestal voorkomen.
herhaal als <raak ik [groene bal v]?> dan verander [score v] met (1) wacht (2) sec. end end
In plaats van 2 seconden wachttijd kun je ook voor deze code kiezen:
wacht tot <niet <raak ik [groene bal v]?>>
Punten verliezen
Maar stel je hebt in je spel ook rode balletjes waardoor je 1 punt kwijtraakt. Dan moet bij de Scratch-kat de volgende code komen te staan:
herhaal als <raak ik [rode bal v]?> dan verander [score] met (-1) end end
Extra
Bij sommige spellen is het voor de speler handig om te zien of hij nu wel of niet een punt heeft gehaald. Daarvoor kun je het best een aparte sprite maken die in beeld verschijnt als er een punt is gescoord.
Wil je ook laten zien wanneer er een punt af gaat? Maak dan een tweede uiterlijk met "-1" erop geschreven.
Tijd als score
Je kunt natuurlijk ook tegen je sprite zeggen dat 1 punt bij komt voor elke seconde dat de speler in leven blijft in het spel. Dit is handig bij spelletjes waarbij je dingen moet ontwijken.
herhaal wacht (1) sec. verander [score] met (1) end
Andere optie is om te beginnen met een score van 100 en elke seconde de score met -1 te veranderen. Dan tel je dus als het ware terug van 100 naar 0. Als je het level gehaald hebt, gaan er geen punten meer van de score af. De tijd die je als speler over had, is dan dus je score.
maak [score v] [100] herhaal wacht (1) sec. verander [score v] met (-1) end
Meerdere spelers
Als een spel meerdere spelers heeft, kun je twee variabelen gebruiken. Tip: geef die allebei een duidelijke naam. In het plaatje hiernaast is gekozen voor "score roze" voor de roze kubus en "score blauw" voor de blauwe kubus.
Bij twee spelers kun je overigens de ene speler met de pijltjes-toetsen laten spelen en de andere met de wasd-toetsen.
Score weergeven
Spelers vinden het vaak leuk om hun score te weten, liefst al tijdens het spel. De score weergeven op het speelveld kan op verschillende manieren.
Je kunt de variabele met of zonder naam op het scherm laten zien. In de plaatjes hierboven was het eerste te zien.
Je kunt ook na afloop de kat of een andere sprite de score in een tekstballon laten vertellen:
zeg (voeg [Je score is: ] en (score) samen)(2) sec.
Tip voor meer gevorderde Scratchers: gebruik ook eens een sprite met getallen om een score weer te geven.
Om dat voor elkaar te krijgen, moet de naam van elk uiterlijk hetzelfde zijn als het getal dat er bij hoort. Dus bij het cijfer 1, geef je het uiterlijk de naam "1" mee, bij het cijfer 2 krijgt het uiterlijk de naam "2", enzovoorts. Als je dat doet, kun je de volgende code gebruiken:
herhaal verander uiterlijk naar (score) end