Körpong
Körpong
Nehézség
(azoknak, akik Scratcheztek már legalább egyszer)
Korosztály
(5-6. osztály)
Elkészítési idő
90 perc a teljes projekthez (60 perc a 6. lépés végéig, az első játszható változathoz)
Eszköz
(online vagy offline szerkesztő)
Elvárás az oktatótól
A Scratch felületének ismerete.
Miről szól a projekt?
Ez a Pong játék egy újragondolt változata. A játékos billentyűkkel forgat jobbra-balra négy ütőt, és igyekszik a játéktérben tartani az ütők között pattogó labdát. Minden ütés egy pontot ér. Az ütők száma tíz pontonként eggyel csökken. A játék akkor ér véget, ha a labda eléri a játéktér szélét.
A játék grafikai elemei és a kód nagy része is elő van készítve, a foglalkozás során csak néhány hiányzó részt kell kitölteni. A végeredményt a kitöltött részletekkel megtaláljátok itt.
Az elkészítés lépései
A teljes projekt hét logikailag elkülönülő lépésben készíthető el. Az ötödik lépés végére már játszható játékot kaptok; eddig mindenképpen érdemes eljutni, hogy a résztvevőknek meglegyen a sikerélménye. Az utolsó négy lépés egy kicsit trükkösebb az előzőeknél; ezek közül bármelyiket kihagyhatjátok.
1. A projekt megnyitása
A kiinduló projektet itt találjátok. Ez legyen bekészítve a gépekre, hogy a résztvevők dupla kattintással meg tudják nyitni. Mutassátok be a résztvevőknek a kész játékot, és beszéljétek meg közösen, milyen lépésekre lesz majd szükség az elkészítéséhez. Figyeljétek meg az ütő mozgásának sajátosságait.
2. Az ütő saját mozgása
Ebben a játékban akkor is mozog a főszereplő, ha nem mozgatjuk, csak lassabban, és követve a legutóbb felvett irányt. Az ehhez tartozó kód már elő van készítve a projektben, csak ki kell egészíteni a megfelelő mozgás-blokkokkal:
Ez a kód jól szemlélteti a változók használatát. Érdemes egy-két ilyet mutatni a gyerekeknek, mielőtt elkezdtek változókat bevezetni. A mozgás-blokkokat beillesztve meg is lesz az első sikerélmény, hiszen zöld zászlóra kattintáskor elindulnak az ütők:
3. Az ütő irányítása billentyűkkel
A billennyűnyomások figyelését kétféleképpen lehet lekódolni. Az egyszerűbb megoldás a külön eseményblokk használata:
Ennek a megoldásnak két hátránya is van. Az egyik az, hogy a billentyű leütését nem csak akkor figyeli, ha a játék éppen fut, hanem akkor is, amikor már leállítottuk. A másik az, hogy szaggatottá teszi az ütő mozgását. Profibb megoldás, ha érzékelés-blokkot használtok a billentyűfigyeléshez:
És ezt a kódot már az előző lépésben összerakotthoz hasonlóan betehetitek egy mindig-ciklusba és beilleszthetitek egy másik eseményblokk alá:
De még mindig nem vagyunk készen. Az előző lépésben láttuk, hogy az ütő magától is mozog, mindig a legutóbbi mozgatás irányába. Ha tehát most jobbra mozgattuk, az ütő irányát is be kell állítani erre:
Ha sikerült a kódot elkészíteni, akkor a másik irányt már rábízhatjátok a résztvevőkre, hogy önálló munkában rakják össze értelemszerű változtatásokkal.
4. A labda mozgatása
Most elindítjuk a labdát; kattintsatok át erre a szereplőre. A labda megy előre, mindig amerre éppen áll. Érdemes próbálgatni a számokat: ha nagyobbat adtok meg, nehezebb lesz a játék; ha kisebbet, akkor unalmasabb. Ez a kód is lehet a meglevők folytatása:
5. A labda fordulása
A fordulás egy kicsit trükkös. A szög kiszámításához kell némi matek, ami valószínűleg próbára tenné a résztvevők tűrőképességét. Ezért a labda irányba állítását egy előre megírt blokk intézi:
Az ütközés figyeléséhez érzékelés-blokkot használunk:
És ne feledkezzünk meg arról sem, hogy a játékost megjutalmazzuk a sikeres ütésért. A meglévő kódhoz illesztve így a következőt kapjuk:
Vajon készen vagyunk? Próbáljátok ki a játékot. Azt fogjátok látni, hogy a labda időnként lehetetlen irányokba fordul. Ez egyáltalán nem baj; a programozásnak nagyon fontos része a hibakeresés.
Ha a labda hozzáér az ütőhöz, a megfelelő irányba fordul, és tovább megy. Eddig rendben vagyunk. De mi van akkor, ha nem eleget mozdul, és még mindig érinti az ütőt? Hogy ebből ne legyen baj, a folytatás előtt meg kell várnunk, hogy elhagyja az ütőt; másként fogalmazva addig kell várnunk, amíg már nem ér hozzá az ütőhöz. Szerencsére a Scratch matekos részében van egy “nem” blokk, így ennek a lekódolása sem fog problémát okozni:
Ez a foglalkozás legkomplexebb kódja. Ha sikerült összerakni, erősítsétek meg a résztvevőket abban, hogy komoly teljesítményen vannak túl.
6. A játék vége
A játékot akkor veszítjük el, ha a labda kimegy az ütők közül, és eléri a játéktár szélét. Az eddigiek alapján ezt a feltételt már könnyű lekódolni:
De hogy ér véget a játék? A “felirat” szereplőre kattintva láthatjátok, hogy a “vége” üzenet érkezésekor fogja kiírni, hogy “vége”:
Tehát nekünk ezt az üzenetet kell elküldenünk a “labda” szereplőtől:
Ha ennek a fázisnak a végéig eljuttok a foglalkozáson, már játszható játékot kaptok, és a gyerekek sikerélménnyel tudnak távozni.
7. szintek és nyerés
Ha marad még idő és lelkesedés a foglalkozás végén, akkor fokozhatjátok a játékélményt szintekkel és a nyerés lehetőségével. Az első szintlépés történhet például akkor, ha a elértük a tíz pontot:
Pergősebb a játék, ha 10 helyett kisebb számot írtok, és unalmasabb, de magasabb pontokat lehet elérni, ha nagyobbat. A következő szinteket duplikálással tudjátok gyorsan emögé illeszteni:
Persze lehetne elegánsabb megoldást is találni ismétlődő kódrészek nélkül, de ehhez nem kell matek, és a célnak teljesen megfelel:
Végül az utolsó szintváltás helyett már a nyerés jön, a játék végéhez hasonlóan üzenetküldéssel: