4
Al dat lekkers is ver weg!
Hassan de Hond is gek op lekker eten: bananen, taco’s, taartjes, watermeloenen en muffins. Hij lust dat allemaal graag!
Maar….. helaas ligt al dat lekkers aan de overkant van een drukke weg.
Kun jij Hassan helpen met oversteken? Ga naar Scratch les 4. Je ziet daar dit:
Auto – matisch
Voor we aan het oversteken beginnen, gaan we eerst de auto laten rijden. De hoogte (y) van de auto is al goed. Die staat op -80. We hoeven dus alleen de x te veranderen. Daarvoor kunnen we een blok gebruiken. Pak een en plak het blok daaronder.
Vraag: Wat doet dat?
Nu moet de auto natuurlijk nog rijden. Daarvoor gaan we x steeds een beetje hoger maken. Weet je nog van les 1 hoe dat moet? Precies, met een .
Opdracht: Maak jij het programma af?
Tip: er moet nog één blokje bij.
Het moet zo:
Maar dat wist jij vast al!
We zouden alleen graag willen dat de auto steeds langsrijdt. Daarvoor hebben we nog een nodig. Want we willen rijden (dat is al steeds herhalen) zelf ook weer herhalen.
Opdracht: Zet er maar eens een extra in het spel en probeer het spel uit.
Een lekke band?
Ik denk dat je dit geprobeerd hebt:
Maar dat werkt helaas niet, de auto blijft op het einde steken.
Heeft de auto soms een lekke band? Nee! De auto blijft steken omdat het nooit afgelopen is. Je kunt dat ook zien omdat het geen ‘haakje’ aan de onderkant heeft. Dus de auto kan niet verder, maar het programma draait wel door. Dat is niet goed.
Waar zit de rem?
Van vorige week ken je vast nog het blokje. Dat kunnen we hier inzetten. Haal het binnenste blok weg en vervang het door een blok.
Zo:
Wat moet er nu in het driehoekje terecht komen? We zouden kunnen kijken of de auto al ‘ver genoeg’ is. Hiervoor kun je bij het blokje gebruiken. Als je het blokje niet ziet, scroll dan een beetje naar beneden, zoals in het plaatje links.
is een soort variabele waar Scratch automatisch de x-positie (links-rechts) van de auto in zet.
Nu moeten we nog iets met de doen! Met het blok kun je kijken of een waarde groter is dan een andere waarde. Dat gaan we gebruiken in de . Als groter is dan 240, dan moet de auto opnieuw beginnen. Dan zijn de namelijk aan de rechterkant van het veld. Pak een , stop er aan de linkerkant een in, en typ rechts 240.
Zo:
Dat is een goede racewagen he?!
Veiligheid eerst
Die snelle auto blijft nu steeds langsrijden. Dat is gevaarlijk als je lekkere hapjes wil eten aan de overkant. Hassan moet dus kijken of het veilig is en jij gaat hem daarbij helpen.
Opdracht: Als jij zelf gaat oversteken, wat doe je dan? Schrijf het maar eens op. Je hoeft dus even niet aan programmeren te denken!
Algoritme
Je wist het misschien niet, maar jouw oversteekplan, dat is al een ‘algoritme’. Algoritme is een programmeerwoord voor een plan van aanpak. Eerst doe ik dit, dan dit. De blokken van de quiz van vorige les is ook een algoritme: Als de aanwijzer op roze staat en het antwoord is goed, dan krijg je 2 punten, anders 1. Als het antwoord fout is, krijg je 0 punten.
Dat is eigenlijk helemaal niet moeilijk he?
Probeer jouw oversteekplan van de vorige vraag nu eens in blokjes te zetten. Dat hoeven geen echte Scratch blokjes te zijn, je mag bijvoorbeeld gewoon ‘steek over’ in een blok zetten. Schrijf het weer op voor jezelf. Er is dus een verschil tussen je algoritme, en de blokjes die het algoritme uitvoeren. De blokjes noemen we met een moeilijk programmeerwoord de ‘implementatie’.
Kijk links, kijk rechts, kijk links. Steek over!
Als jij oversteekt, kijk je goed links en rechts. Hassan is een computerbeest, dus die heeft daar andere truukjes voor :-). Er is een speciaal blok dat kijkt hoe ver een andere ‘sprite’ weg is. Dat is het .
Opdracht: Hoe ver is de auto nog weg? Laat Hassan steeds de afstand zeggen.
Tip: Je kunt het blokje van vorige les gebruiken om er een mooie zin van te maken. Bijvoorbeeld: “De afstand tot de auto is nog: ”en dan de afstand. Weet jij hoe dat moet?
Alle blokjes die je nog hebt, die ken je al!
Kijk, dat gaat zo:
Ik heb de auto ook iets langzamer laten rijden zodat je wat beter kunt zien wat de afstand is. Dat kun jij ook doen. Maak van de 10 een lager getal, bijvoorbeeld 2.
Iets te veel cijfers
Dit werkt wel, maar… we krijgen wel een heel lang getal he?
Je kunt een blokje bij pakken om het getal af te ronden.
Vraag: Weet jij waar dat blokje moet komen?
Precies! Het gaat zo:
Dat is al beter he?
Meten is weten
Nu gaan we Hassan laten oversteken. Oversteken is veilig als de auto ver genoeg weg is. Laten we zeggen: de afstand is groter dan 200. We gaan Hassan dan “oversteken maar” laten zeggen. Als het niet veilig is, moet hij zeggen: “wachten”.
Opdracht: Weet jij hoe dat moet? We hebben deze les een handig blokje geleerd dat je kunt gebruiken, de .
De andere blokjes die je moet gebruiken ken je al van eerdere lessen.
Je mag nu weghalen:
Zet ‘m op!
Kijk, dat doe je zo. We hebben Hassan ook even in de linkerhoek laten beginnen. Dat komt straks van pas!
Klaar? Over!
Dat ziet er veilig over. Laat Hassan nu maar echt de straat oversteken. We gaan daar een blok voor gebruiken. Ken je die nog van les 1? Om je geheugen op te frissen: Een beweegt een sprite in 1 seconde naar een plek. In dit geval naar -180 en -130.
Opdracht: Weet jij waar het schuif blok moet komen? En welke getallen je in moet vullen?
Probeer het maar eens!
Je mag de en blokjes laten staan.
Zo doen we dat, kijk:
Wachten tot je een ons weegt
Dat werkt wel, maar Hassan blijft nu wel steeds ‘oversteken maar’ en ‘wachten’ zeggen. Dat willen we niet, hij moet dat alleen zeggen voordat hij oversteekt. Daarna gaat hij namelijk lekker smullen! We gaan ons programma dus een beetje aanpassen, met een nieuw blok, het blok. Een wacht tot, ja, die wacht tot iets zo is…
We kunnen Hassan precies hetzelfde laten doen, als we het zo programmeren:
Zo ziet het nieuwe programma er uit naast de oude versie:
Ze doen (bijna) hetzelfde!
Die linkse is een stuk makkelijker te lezen, toch? En we kunnen nu ook onderaan verder programmeren, omdat de laatste een ‘haakje’ heeft aan de onderkant. We kunnen daar een neerzetten zodat Hassan geen ‘oversteken maar’ meer zegt na het oversteken.
Doe dat maar eens, zo:
Herhaalverhaal
Een met een zijn perfect als je altijd iets wilt doen. Bijvoorbeeld: altijd als ik de muur raak, zeg ik “auw”. Dat deden we in les 1. Maar als je daarna verder wilt programmeren, is een meestal beter. Er is nog één ding dat je moet weten over de .
Een ‘sprite’ kan niets anders doen terwijl hij staat te wachten. Hassan zegt wel ‘wachten’, maar dat heeft hij al gezegd voordat hij gaat wachten!Als je wilt dat een sprite bijvoorbeeld loopt, en wacht tot je op de spatiebalk drukt, dan moet je geen , maar een gebruiken. Onthoud: wachten tot = stilstaan!
Aan de wandel
Hassan is nu aan de overkant van de weg. Laat hem nu helemaal naar rechts lopen, zodat hij alle lekkere hapjes aanraakt. Hiervoor kun je ‘m naar x = 240 laten schuiven. Weet jij hoe dat moet. Vast wel! Maak het maar!
Het gaat zo:
Je kunt ook iets minder ver schuiven dan 240, dan gaat Hassan niet zo ver uit beeld.
Hap, slik, weg!
Nu moeten de lekker hapjes nog verdwijnen als Hassan ze pakt. Dat hebben we in vorige lessen ook al geprogrammeerd, dus dat lukt je vast zelf.
Opdracht: Laat alle hapjes:
- Verschijnen als je op drukt
- Verdwijnen als Hassan ze aanraakt.
Tip: Programmeer het eerst voor de watermeloen. Daarna kun je de blokken kopieren naar de andere hapjes. Dat doe je door de code op te pakken en op een andere sprite loslaten.
De blokken kopieren dan vanzelf, zo:
Als je het blok nu loslaat, komt het vanzelf in de taco. En het blijft ook in de watermeloen. Probeer maar eens!
Rommel de bommel
Is het gelukt met programmeren en kopieren? Je hebt vast gezien dat Scratch de blokken wel op elkaar gooit.
Dat werkt wel, het maakt Scratch geen biet uit hoe het staat. Maar, het is niet echt mooi he? Je kunt de blokken zelf los maken, maar dat is een hoop werk. je kunt ook shift indrukken en dan klikken op het grijze vlak. Kies dan opruimen. Dan zet Scratch alles recht. Handig! Kon dat bij je kamer ook maar :).
Het resultaat:
Beter, toch?
Driegangenmenu
Hassan smult erop los, maar wel alles door elkaar! Eerst een banaan, dan een taco, dan taart, dan een watermeloen en dan nog een cakeje. Dat kan eigenlijk niet he?? Zou hij niet eerst wat fruit moeten eten, dan de taco en dan een toetje?
Dat gaan we nu programmeren. We gaan dus steeds naar de onderkant van de weg, dan lopen we naar de goede plek, en dan steken we (veilig!) over.
Even stevig blokken
Hassan moet nu vaak moet gaan oversteken. Daarom gaan we, net als in les 2, een nieuw blok maken. Anders krijgen we zeker veel dezelfde blokken. We maken eerst een eigen blok voor ‘oversteken’:
Nu pakken we alle blokken die bij het oversteken horen. Dat is alles vanaf tot . Let op: het blok hoort niet bij het oversteken. Dat doet Hassan aan de andere kant van de weg. We krijgen dus dit:
Werkt dit altijd goed?
Opdracht: Verander de x eens in het bovenste blokje. Daar waar de gele pijl staat. Probeer eens 50. Werkt dat nog wel?
Een ongelukje!
Ai! Hassan steekt nu helemaal schuin de weg over! Zo onder de auto!!
Vraag: Welk blokje is er fout? Weet jij wat er wel moet staan? Weet je nog hoe je weet waar Hassan precies staat?
Het moet zo:
We pakken de waar Hassan al staat, en schuiven alleen de y. Let op: we laten Hassan nu weer gewoon op -180 beginnen. Dat is links onder. Pas jouw eerste blokje ook even aan (bij de gele pijl) Omdat hij de hapjes op volgorde moet pakken, weten we al dat Hassan ook weer omlaag moet oversteken. We kunnen daar een tweede blok voor maken: ‘oversteken terug’.
Opdracht: Maak dat blok maar. Het lijkt heel veel op het ‘oversteken’ blok, dus dat kun je kopiëren als een mooi startpunt.
Helaas kun je een blok niet meteen kopiëren. Als je shift-klikt krijg je geen ‘kopie maken’. Maar je kunt wel op het eerste blokje gaan staan en dan shift-klikken. Zo:
Tip: We moeten nu omlaag lopen, dus schuif omlaag in plaats van omhoog.
Als je gemaakt hebt, plak dan een onderaan het bovenste script. Dat is onder.
Krijg het heen en weer
Met het blok en de ziet het programma er zo uit:
Hassan wacht nu boven de straat ook heel netjes tot de auto voorbij is!
Een veilig smulfestijn
Opdracht: Maak jij het spel nu verder af? We gaan er een mooi diner van maken:
- Eerst de twee stukken fruit. Fruit mag altijd! De volgorde maakt niet uit.
- Dan de taco.
- Dan 1 toetje. Dus of de taart, of het cakeje. Jij mag toch ook geen twee toetjes thuis?
Hassan zal dus iedere keer de weg moeten oversteken, want anders eet hij de hapjes niet in de goede volgorde.
Begin met de watermeloen, want de banaan is wel heel makkelijk.
Het blok heb je nu niet meer nodig, want je gaat boven de weg toch niet meer in één keer naar de rand lopen.
Haal dat maar weg:
Nu kun jij het spel helemaal afmaken, toch? Het zijn een hoop blokjes, maar jij bent nu al bijna een volleerde programmeur!
Tip: Bij kun je de plaats van alle sprites vinden. Pak en klik op de driehoek. Daar kun je dus ook van maken. Schuif daar maar eens heen om te beginnen!
Dit is het hele spel:
Het is nu helemaal af! Je kunt natuurlijk weer aanpassen. Zet er een tweede auto bij of laat Hassan een rondje draaien van plezier als hij alles op heeft. Het allermooiste is nu als je de hapjes in een ander volgorde legt. Sleep ze maar eens rond. Steekt Hassan nog steeds goed over? En eet hij de hapjes nog steeds op de goede volgorde op? Ja he? Dat komt omdat we het zo goed geprogrammeerd hebben! Misschien vind je het niet mooi dat we steeds achter elkaar hebben. Als je dat vindt, heb je helemaal gelijk! Maak dan gerust een extra blok en noem het bijvoorbeeld ‘heen en weer’. Je kunt daar weer aan vast plakken. Dan heb je een eigen blok met eigen blokken erin. Dat kan gewoon!