Wat leer je?
- Zelf een sprite tekenen in de teken-editor (een rechthoek als peddel)
- Werken met richting: wijzen, kaatsen en een richting spiegelen
- Een sprite binnen het veld houden met x-positie en y-positie
- Punten scoren op basis van waar de bal is, niet wat hij raakt
- Je eerste computer-AI: een tegenstander die zelf beslist
- Een spel eerlijk afstellen — snelheid, reactietijd en moeilijkheid
Wat heb je nodig?
- Een nieuw, leeg Scratch-project
- Drie sprites: Speler, Computer (twee zelfgetekende peddels) en Bal
- Voor de bal kan je de kant-en-klare sprite Ball gebruiken
- Eventueel een kort geluidje, bijvoorbeeld Pop of Boing
Opdracht 7 eerst gedaan? Dan ken je "zend signaal" al — dat komt hier terug. Anders: Doolhof met levels.
Stap voor stap
Dit project heeft drie sprites, en elke sprite heeft zijn eigen codegebied. Boven elk script staat daarom altijd om welke sprite het gaat — klik die eerst aan, anders bouw je bij de verkeerde figuur. Vink een stap af als hij klaar is; je browser onthoudt dat.
Teken je twee peddels
UiterlijkVerwijder de kat. Ga rechtsonder met je muis over de sprite-knop en kies het penseeltje ("Teken"). Je komt in de teken-editor met een leeg kostuum. Kies de rechthoek-tool, zet hem op gevuld en teken een staande balk: smal en hoog, ongeveer zo groot als een lucifersdoosje op zijn kant. Belangrijk: teken hem midden op het kruisje in het canvas — dat kruisje is het middelpunt van je sprite.
Hernoem de sprite naar Speler. Klik daarna met de rechtermuisknop op de sprite-tegel en kies dupliceren: je krijgt een identieke tweede peddel. Hernoem die naar Computer en geef hem eventueel een andere kleur.
- Ik heb twee identieke peddels: Speler en Computer
Zet de peddels op hun plek
BewegingGeef beide peddels een startscript. De speler staat links op x: -210, de computer rechts op x: 210, allebei op y: 0. Zet er ook meteen "zet draaistijl op niet draaien" bij, uit Beweging.
Sprite: Speler
Sprite: Computer
- Mijn peddels staan links en rechts, netjes op hun plek
Bestuur je peddel met omhoog en omlaag
BesturingKlik de sprite Speler aan. Sleep een "herhaal voortdurend" onder je startblokken en zet er twee "als ... dan"-blokken in. In de zeshoekjes komt "toets ... ingedrukt?" uit Waarneming, in de mond "verander y met ..." uit Beweging.
Sprite: Speler
- Mijn peddel schuift met de pijltjes op en neer
Hou je peddel binnen het veld
OperatorenProbeer je peddel maar eens helemaal naar boven te duwen: hij verdwijnt half uit beeld. Voeg daarom twee extra als-blokken toe in dezelfde lus. In het zeshoekje komt de operator > (of <) uit Operatoren, met links het ronde blokje y-positie uit Beweging en rechts een getal.
Sprite: Speler — onderaan in dezelfde lus
- Mijn peddel blijft altijd volledig in beeld
Testmoment — beweegt je peddel netjes?
controleKlik op de groene vlag en hou de pijltjes ingedrukt. Je peddel schuift vloeiend op en neer en blijft volledig in beeld. Werkt het 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.
- Beweegt hij maar één stapje? Dan zweeft "herhaal voortdurend" los, of staan de als-blokken eronder in plaats van erin.
- Trilt je peddel aan de bovenkant heen en weer? Dan staat er in het klem-blok een ander x-getal dan -210, of je hebt "verander y" in plaats van "ga naar" gebruikt.
- Verdwijnt hij nog steeds half uit beeld? Verlaag 130 naar 120 of 110 tot het klopt.
- Gaat hij de verkeerde kant op? Verwissel de 10 en de -10.
- Zet ook even y-positie aan met het vinkje in de blokkenlijst: dan zie je live welk getal er in zit terwijl je stuurt. Handig om de grenzen af te stellen.
- Mijn peddel stuurt vlot en blijft binnen het veld
De bal: startpositie en een willekeurige richting
BewegingVoeg de sprite Ball toe en hernoem hem naar Bal. Zet hem op 50 % zodat hij niet te log is. Geef hem een startscript dat hem in het midden zet en hem een willekeurige richting geeft: sleep het ronde blokje willekeurig getal tussen ... en ... uit Operatoren in het vakje van "wijs in richting ...".
Sprite: Bal
- Mijn bal start in het midden en kijkt elke ronde anders
Laat de bal bewegen en kaatsen
BewegingSleep onder je startblokken een "herhaal voortdurend" met daarin twee blokken uit Beweging: "beweeg 8 stappen" en "als op rand, keer om". Meer heeft een kaatsende bal niet nodig.
Sprite: Bal
- Mijn bal schiet weg en kaatst tegen de randen
Testmoment — kaatst je bal fatsoenlijk?
controleKlik een paar keer op de vlag en kijk toe. De bal vertrekt telkens anders, stuitert tegen boven- en onderrand en glijdt (voorlopig nog) dwars door je peddels heen. Klopt er iets niet?
- De bal blijft stilstaan. "Beweeg 8 stappen" zit niet in de lus, of de lus zweeft los van het hoedblok.
- De bal plakt trillend aan de rand. Klassiek: "als op rand, keer om" staat vóór "beweeg". Zet het eronder.
- De bal gaat altijd exact dezelfde kant op. Het blokje "willekeurig getal" zit niet in het vakje van "wijs in richting", maar ligt er los naast.
- De bal staat ondersteboven of draait raar. Voeg ook bij de Bal "zet draaistijl op niet draaien" toe bij de start.
- Veel te snel om te volgen? Zet de 8 tijdelijk op 4 zodat je rustig kan testen. Op het einde zet je hem terug.
- Mijn bal beweegt vloeiend en kaatst boven en onder
Terugkaatsen op je peddel — de simpele versie
WaarnemingZet in de lus van de Bal, onder "als op rand, keer om", een nieuw "als ... dan" met in het zeshoekje "raakt Speler ?" uit Waarneming. In de mond zet je "draai rechtsom 180 graden" uit Beweging.
Sprite: Bal — in de lus
Test het even. Het werkt — de bal keert om — maar het voelt saai: de bal gaat exact terug over het pad waarlangs hij kwam, alsof hij tegen een spiegel botst. En als hij schuin binnenkomt, vertrekt hij ook schuin terug in dezelfde hoek. Dat is niet hoe een bal tegen een muur kaatst. In de volgende stap doen we het juist.
- De bal keert om als hij mijn peddel raakt
Echt kaatsen: spiegel de richting
OperatorenVervang "draai rechtsom 180 graden" door het blok hieronder: "wijs in richting (0 - richting)". Je hebt daarvoor het min-blokje uit Operatoren nodig, met links een 0 en rechts het ronde blokje richting uit Beweging. Zet er meteen ook een tweede "beweeg 8 stappen" onder.
Sprite: Bal — in de lus
- De bal kaatst nu schuin weg, precies zoals het hoort
Doe hetzelfde voor de computer-peddel
WaarnemingKlik met de rechtermuisknop op je nieuwe als-blok en kies dupliceren. Klik de kopie vast onder het origineel en zet in het dropdownlijstje van "raakt ...?" de sprite Computer. Klaar — beide peddels kaatsen nu.
Sprite: Bal — in de lus
- Allebei de peddels kaatsen de bal terug
Testmoment — kaats de bal tien keer heen en weer
controleDe computer-peddel staat nog stil, dus zet hem eventjes zelf op de goede hoogte door hem met de muis te verslepen. Kaats de bal daarna tien keer heen en weer. Klopt er iets niet?
- De bal blijft trillend aan de peddel plakken. De extra "beweeg 8 stappen" ontbreekt, of staat boven het "wijs in richting" in plaats van eronder.
- De bal vliegt dwars door de peddel. Je bal is te snel: bij 8 stappen per beeldje kan hij over een dunne peddel heen springen. Maak je peddel breder in de teken-editor, of zet de snelheid tijdelijk op 5.
- De bal kaatst terug maar gaat daarna raar zweven. Kijk of "zet draaistijl op niet draaien" bij de bal staat, en of hij ergens per ongeluk een tweede "draai"-blok heeft.
- Er gebeurt niets bij de tweede peddel. In het dropdownlijstje staat waarschijnlijk nog "Speler" in plaats van "Computer".
- De bal verdwijnt links of rechts uit beeld. Dat hoort nu nog: "als op rand, keer om" stuurt hem terug, maar er is nog geen puntentelling. Dat komt in stap 14 en 15.
- Tien keer heen en weer zonder vastlopen of doorschieten
Twee scoreborden
VariabelenGa naar Variabelen en klik twee keer op Maak een variabele. Maak score speler en score computer, allebei voor alle sprites. Zet ze bij de start van de Bal op 0. Sleep de twee bordjes op je speelveld naar de goede kant: die van jou naar links, die van de computer naar rechts.
Sprite: Bal — bij de startinstellingen
- Twee scoreborden staan op mijn speelveld en beginnen op 0
Een punt voor de computer — hoe merk je dat?
OperatorenMis jij de bal, dan schiet hij links voorbij je peddel. Maar hoe weet Scratch dat? Niet met "raakt ...?", want daar is niets om te raken. Je kijkt dus naar de plaats van de bal: is zijn x-positie kleiner dan -230, dan is hij voorbij je peddel en heeft de computer een punt.
Sleep uit Beweging het ronde blokje x-positie in de linkerkant van een <-operator, en typ rechts -230. Zet dat zeshoekje in een nieuw "als ... dan", onderaan in je lus.
Sprite: Bal — in de lus
- Mis ik de bal, dan krijgt de computer een punt
En een punt voor jou
VariabelenDupliceer je vorige als-blok en pas drie dingen aan: de < wordt een >, de -230 wordt 230, en "score computer" wordt score speler. Nu scoor jij als de bal rechts voorbij de computer-peddel glipt.
Sprite: Bal — in de lus
- Beide scoreborden lopen op de juiste momenten op
Testmoment — klopt de puntentelling?
controleSpeel even tegen een stilstaande computer. Laat de bal expres links voorbijgaan, en sla hem daarna expres voorbij de rechterkant. Elk van beide moet precies één punt opleveren.
- Er springen meteen 3 of 4 punten bij. Je "wacht 0.5 seconden" ontbreekt, of de bal wordt niet naar het midden teruggezet. Zolang hij voorbij de grens blijft hangen, telt de lus elke beeldje opnieuw een punt.
- De scores tellen niet. Kijk of je "verander score ... met 1" gebruikt en niet "maak score ... 1". "Verander" telt op, "maak" overschrijft.
- Bij de start staat er meteen 1-0. Je hebt < en > verwisseld.
- De bal komt nooit voorbij de grens. "Als op rand, keer om" grijpt te vroeg in. Zet -230 op -225 en 230 op 225, of controleer of je grens-als-blokken echt in de lus staan.
- Het verkeerde bordje loopt op. Links is jóúw kant: gaat de bal daar voorbij, dan scoort de computer. Verwissel de twee dropdowns.
- Elk gemist balletje geeft precies één punt aan de juiste kant
De computer leert spelen — je eerste AI
WaarnemingNu het mooiste stuk. Klik de sprite Computer aan en geef hem een "herhaal voortdurend" met daarin één "als ... dan ... anders". De vraag die hij zichzelf steeds stelt: zit de bal boven mij of onder mij? Daarvoor gebruik je het blokje ... van ... uit Waarneming: kies daarin y-positie van Bal. Rechts van de > zet je het gewone ronde blokje y-positie uit Beweging — dat is de computer zijn eigen hoogte.
Sprite: Computer
- De computer-peddel volgt de bal helemaal zelfstandig
Stel je tegenstander af — makkelijker of gemener
VariabelenSpeel drie punten. Te makkelijk? Te onmogelijk? Dat regel je met dat ene getal 4. Maak er een variabele van, dan kan je hem tijdens het spelen bijstellen: maak een variabele reactie, zet ze bij de start op 4 en vervang de twee getallen door het ronde blokje. Voor de "anders"-tak heb je 0 - reactie nodig, want dat is het negatieve getal.
Sprite: Computer — in de lus
Zet het bordje reactie op je speelveld en klik er met de rechtermuisknop op: kies schuifknop. Nu kan je tijdens het spelen live schuiven en meteen voelen wat er verandert.
- Ik kan mijn tegenstander makkelijker of moeilijker zetten
Wie eerst aan 5 staat, wint
GebeurtenissenEen spel zonder einde is geen spel. Maak in Gebeurtenissen een nieuw signaal game over. Zet daarna in élk van je twee punt-blokken, vlak onder "verander score ... met 1", een als-blok dat controleert of die score op 5 staat — en zo ja: zend het signaal.
Sprite: Bal — na het optellen van een punt
Geef de Bal daarna een tweede hoedblok dat op dat signaal wacht en vertelt wie er gewonnen heeft:
Sprite: Bal — een apart script
- Bij 5 punten stopt het spel en zie ik wie gewonnen heeft
Eindtest — speel een hele wedstrijd uit
controleSpeel tot iemand 5 punten heeft, en klik daarna meteen opnieuw op de vlag voor een tweede wedstrijd. Alles moet weer helemaal van voren af aan beginnen. Controleer:
- Beginnen beide scores in ronde twee echt op 0, staat de bal in het midden en staan de peddels op hun startplek? Zo niet: er ontbreekt een "maak ..."- of "ga naar ..."-blok bij de startinstellingen van die sprite.
- Stopt het spel écht bij 5, of loopt het door tot 6 of 7? Dan staat je controle-als-blok in de verkeerde tak, of gebruik je > in plaats van =.
- Zie je de eindboodschap volledig? Zo niet, dan staat "stop alles" per ongeluk vóór het "zeg"-blok.
- Is de wedstrijd spannend? Als je 5-0 wint of 0-5 verliest, klopt de afstelling niet. Speel met reactie (de computer), met de 10 van je eigen peddel en met de balsnelheid tot een wedstrijd meestal eindigt op 5-3 of 5-4.
- Klik op het volledige-scherm-knopje boven het speelveld en laat een klasgenoot tegen de computer spelen zonder uitleg. Begrijpt hij binnen tien seconden wat hij moet doen? Dan is je spel af.
- Mijn opdracht 8 is af — een volledige, eerlijke pongwedstrijd
Het volledige script
Zo ziet je afgewerkte project eruit. Let goed op: het zijn vijf scripts, verdeeld over drie sprites. Vergelijk ze met wat er op jouw scherm staat.
Sprite: Speler
Sprite: Computer
Sprite: Bal — het hoofdscript
Sprite: Bal — het eindscherm
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.
Geluid en gevoel
makkelijkGeef je spel een stem: een kort plopje bij elke peddel-botsing, een lagere toon bij de randen, en een fanfare bij het winnen. Tip: gebruik start geluid en niet "speel geluid af en wacht" — anders staat je bal telkens even stil. Extra: laat de bal bij elke botsing kort van kleur veranderen met "verander kleur effect met 25", en zet de effecten weer uit bij een nieuwe ronde.
Kaatsen met effect
middelIn het échte pong hangt de hoek af van wáár op de peddel je de bal raakt: bovenaan vliegt hij schuin omhoog, in het midden recht vooruit. Bouw dat na. Tip: bereken het verschil tussen de y-positie van de bal en die van de peddel, en tel dat verschil bij je nieuwe richting op. Je hebt er het min-blok én het plus-blok voor nodig, en veel geduld met uitproberen — de eerste versie schiet je bal gegarandeerd de verkeerde kant op.
Een computer die fouten maakt
pittigEen perfecte tegenstander is saai. Maak er eentje die menselijk aanvoelt: laat hem alleen reageren als de bal naar hem toe komt (tip: kijk of de richting van de bal tussen 0 en 180 ligt), en bouw een kleine vertraging in met een willekeurig getal. Nóg mooier: laat hem gemener worden naarmate hij achterstaat, door reactie te verhogen wanneer jouw score stijgt. Zo blijft elke wedstrijd tot het laatste punt spannend.