06 70 451 7867
hello@skool.org.hu

Dínós játék

27 szept 2019

Dínós játék

How Can We Help?
Itt jársz:
← Vissza

Nehézség

(majdnem kezdő: azoknak, akik Scratcheztek már legalább egyszer)

Korosztály

 (ötödik-hatodik osztály)

Elkészítési idő

90 perc a teljes projekthez (45 perc a 4. 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 Chrome böngésző dínós játékának egyszerűsített Scratch változata. A játékos billentyűvel irányít egy dínó-figurát, akinek át kell ugrálnia a szembe jövő akadályokon. 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 nyolc logikailag elkülönülő lépésben készíthető el. A negyedik 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.

2. Billentyűfigyelés és a dínó mozgatása

Érdemes a dínó mozgatásával kezdeni. Itt ezt a kódrészt kell majd kiegészíteni:

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 az a hátránya, hogy a szóköz lenyomását nem csak akkor figyeli, ha a játék éppen fut, hanem akkor is, amikor már leállítottuk. Profibb megoldás, ha érzékelés-blokkot használunk a billentyűfigyeléshez, a már megkezdett kódot egészítve ki:

Mivel itt a “start üzenet érkezésekor” eseményhez kötjük a billentyűfigyelést, elkerüljük azt, hogy a dínó akkor is ugráljon, ha még nem megy a játék.
Most jöhet az ugrás. A gyorsulás szimulációja ebben az életkorban még túl komplex lenne, ezért állandó sebességű szakaszokból rakjuk össze, trapézzal közelítve a parabolapályát: a szereplő felfele mozog, ott megáll, aztán lefele mozog. A mozgatás teljes kódja így ez lesz:

A számértékek természetesen eltérhetnek; sőt, szükségképpen el is fognak térni. Hogy ne kelljen koordinátákat számolni, itt is és máshol is kihasználhatjuk azt a Scratch-trükköt, hogy ha leteszünk valahova egy Scratch-szereplőt, akkor az aktuális koordinátái megjelennek a mozgás-blokkokban:

Ha a szereplőt néhány képponttal odébb tesszük le, más koordináták kerülnek a blokkba. Ezek az eltérések teljesen rendben vannak. Semmiképpen ne diktáljátok le a mintaprojektben szereplő számokat a résztvevőknek.
A három időérték beállítása némi türelmet igényel. Az alapérték minden blokknál 1 mp; ezt állítgassuk át mindaddig, ameddig a szereplő ugrása nem lesz megfelelő. Később majd érdemes lesz ezeket az értékeket újraállítani, a legszélesebb akadályhoz igazítva.
Fontos apróság, hogy a tizedesvessző helyett az angolszász világban tizedespontot használnak. Vesszőt nem is enged a számmezőkbe írni a Scratch-szerkesztő:

Az utolsó mozzanat ebben a lépésben az, hogy a billentyűfigyelés és a mozgatás kódját betesszük egy mindig-ciklusba:

3. Az akadály mozgatása

Az akadály- szereplő a jobb szélen jelenik meg, onnan csúszik át a bal szélre és tűnik el. Tehát két mozgás- és két kinézet-blokkal egészítjük ki a kiinduló projektben megkezdett kódot:

A számoknak természetesen itt sem kell pontosan ugyanezeknek lenni; itt is használhatjuk a fenti trükköt, hogy először lerakjuk a szereplőt, aztán vesszük ki a blokkot a megfelelő koordinátákkal.
Természetesen az akadály nem csak egyszer indul útnak; itt is eg mindig-blokkba kell tennünk a mozgatás kódját:

Most jöhet a jelmezválasztás. Az akadály lehet szimpla kaktusz, dupla kaktusz, tripla kaktusz, magasan szálló madár és alacsonyan szálló madár; ez öt lehetőség. Ezek közül választunk véletlenszerűen:

Az a leglogikusabb, ha a jelmezválasztás közvetlenül a szereplő megjelenése előtt történik.
A jelmezváltás nem elengedhetetlen a játékhoz. Ha nagyon lassan halad a csoportmunka, akkor akár ki is hagyhatjátok. Ha viszont gyorsan haladtok, akkor érdemes most bekalibrálni a dínó ugrásának kódjában az időértékeket a legszélesebb akadály-jelmezhez igazítva.
A pontozás szintén nem elengedhetetlen, de sokat ad hozzá a játékélményhez. Logikus akkor sort keríteni rá, amikor az akadály
célba ért. Így a teljes kód a következő lesz:

Ez még nem a végleges változat, hiszen később majd szeretnénk, ha egyszerre több akadály is szembe jönne; de erre még ráérünk, hiszen ez sem elengedhetetlen a játszhatósághoz.

4. Érintésfigyelés és játék vége

A játék akkor ér véget, ha a dínó hozzáér az akadályhoz. Ezt érintésfigyelő blokkal lehet tesztelni. A kód rendkívül egyszerű:

De honnan tudjuk, hogy a játék pont a “vége” üzenettel ér véget? Hát onnan, hogy megnézzük a “felirat” szereplőnél, mi a feltétele a “vége” felirat megjelenésének:

Mivel ez már készen benne van a kódban, ehhez érdemes alkalmazkodnunk.
Az érintésfigyeléssel eljutottunk az első olyan pontra, ahol már játszható játék van a birtokunkban. Ha elment az idő vagy türelmetlenek a résztvevők, itt már akár abba is lehet hagyni a munkát. Természetesen ha van idő és kitartás, érdemes folytatni, hiszen már nincs messze a teljes játékélményt nyújtó cél sem.

5. A dínó animálása

Megmozgatjuk a dínó lábait. Ha belenézünk a dínó szereplő jelmezeibe, láthatjuk, hogy a három jelmez a dínó mozgásának három fázisa:

Ezeket váltogatva kapjuk meg a futás illúzióját. “várj” blokkal és a töredékmásodpercek igazítgatásával tudjuk elérni, hogy a futás se túl gyors ne legyen, se túl lassú:

A dínó mozgása még mindig nem tökéletes, hiszen most akkor is mozgatja a lábait, amikor a levegőben van. Ezt majd a legvégén javítjuk.

6. egyszerre több akadály

Most lehetővé tesszük, hogy az akadály egyszerre több példányban érkezzen egymás után. Erre a Scratch-nek van egy nagyon profi eszköze, a másolatkészítés. A meglevő kódot kicsit át kell alakítanunk. A mindig-blokkba az akadály mozgatása helyett az fog kerülni, hogy adott időközönként keletkezzen egy újabb akadály-példány:

Természetesen a számérték itt sem fix; érdemes próbálgatni az időtartamokat. Vagy akár kerülhet véletlen-blokk is ide, hogy még izgalmasabb legyen a játékmenet:

Az akadály mozgatására pedig akkor kerül sor, ha már létrehoztuk a másolatot:

A Scratch csak korlátozott mennyiségű másolatot képes kezelni; ezért a célba ért akadály-példányokat érdemesebb eltűntetés helyett törölni:

7. Az akadályok animálása

A kaktuszoknek nincsenek fázisai, de a madaraknak verdesiük kell a szárnyukkal. Ehhez feltételes blokkokra van szükség, például az alul jövő madár esetében így:

És persze hasonlóan a többi jelmezre, összesen négy változatban:

Ez nem túl elegáns megoldás, de működik, ráadásul logikus és áttekinthető is. Duplikálással (jobb klikk a legfelső blokkra) ráadásul egész gyorsan megvan:

Van azonban egy egyszerűbb megoldás is. A jelmezeket úgy raktuk sorrendbe, hogy öttel később mindig a következő mozgási fázishoz jussunk. Így a fenti sok kód ennyivel megoldható:

Vagy ha nem akartok jelmezsorszámokkal bíbelődni:

Vigyázat, a következő változat viszont már
nem fog működni:

Ennek az az oka, hogy a Scratch a ciklusok lépései között frissíti a kijelzőt; egymás után rakott blokkok között viszont nem.

8. A dínó mozgásának és fázisainak összehangolása

Végül arról gondoskodunk, hogy a dínó ne tudjon egyszerre ugrani és futni. Ezt többféleképpen meg lehet oldani, de a legegyszerűbb, ha a két kódot egymáshoz illesztjük. Ehhez elég, ha a “várj eddig” blokkot lecseréljük “ismételd eddig”-re. Ez egyszerű lépés, de trükkös; jól irányzott rávezető kérdésekkel fogtok tudni közösen rájönni:

Previous Switchie
Next Fogócska
Table of Contents

Leave a Reply