06 70 451 7867
hello@skool.org.hu

Kerülgetős játék

1 okt 2019

Kerülgető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

 (hatodik-hetedik-nyolcadik osztály)

Elkészítési idő

45 perc az egyszerűbb változathoz, 90 perc a teljes projekthez

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 egy klasszikus lövöldözős játék Star Wars-témára hangolva. A játékos által irányított űrhajónak minél tovább el kell lavíroznia a szembejövő ellenséges űrhajók között. Eközben a játékos, és az ellenség lövi egymást. A kész projektet itt találjátok meg.

Az elkészítés lépései

1.  A projekt megnyitása

A kiinduló projektet itt találjátok meg. Ha offline szerkesztővel dolgoztok, mentsétek el és készítsétek be az összes gépre. A foglalkozás elején mutassátok be a kész projektet a tanári gépen. (A résztvevők gépére ezt ne tegyétek fel, hogy megmaradjon a motiváció.)

2. A saját űrhajó irányítása

Az űrhajót billentyűkkel irányítjuk (itt a tananyagban nyilakkal, de természetesen lehet A-val és D-vel is, mint a profi játékokban). Az irányításra kézenfekvő megoldás lenne az eseményblokkok használata:

Ez a kód megtévesztően egyszerű. Sajnos van egy csomó hátránya:

  • akkor is mozgatja az űrhajót, amikor a játék éppen áll
  • az űrhajó mozgása szaggatott

Mindkettőnek az az oka, hogy ez a megoldás nem a Scratch saját billentyűzetfigyelését használja, hanem az operációs rendszerét, amely gépeléshez van optimalizálva, nem pedig játékokhoz.

Hatékonyabb megoldás, ha a billentyűzetfigyelő érzékelés-blokkokat használjátok inkább:

A blokk alakja mutatja, hogy önmagában nem használható. Akkor kell mozdulni, ha le van nyomva a billentyű; tehát az űrhajót mozgató kód így fog kinézni:

Természetesen nem csak egyszer kell a billentíűket figyelni, hanem folyamatosan; a teljes kód tehát ez lesz:

Ha a kód megfogalmazásakor másképpen indultok el, akkor ehhez a verzióhoz is eljuthattok:

A két változat természetesen egyenértékű.

Ha a foglalkozás résztvevőinek még nem magától értetődő a koordinátarendszer használata, akkor az “x változzon” blokk sem adja magát természetesen. Az x-y irányokra jó rávezetést adhat, ha a szereplőnket egérrel jobbra-balra odébbhelyezzük a játéktéren, és megfigyeljük, hogy a játéktér alatt az x és y paraméterek közül melyik változik lényegesen:

 

Végül az is hasznos lehet, ha a hátteret ideiglenesen legyerélitek egy koordinátarendszerre. Ehhez kattintsatok jobboldalt alul a “Hátterek” ikonra, majd baloldalt felül a “Hátterek” fülre, végül pedig itt a koordinátás háttér ikonjára.

  

Később, amikor már a szereplők mozgatásával megvagytok és újra a csillagos hátteret szeretnétek látni, ugyanígy válthattok vissza.

A balra mozgatás kódja ugyanerre a logikára épül, ezt nyugodtan rábízhatjátok a résztvevőkre gyakorlásképpen. Az egyetlen kihívást az jelentheti, hogy negatív számot kell írni az “x változzon” blokk számmezőjébe.

4. Az ellenséges űrhajó mozgatása másolatkészítés nélkül

Először érkezzen egyetlen példányban az ellenséges űrhajó; aztán a következő lépésben majd megsokszorozzuk. Ráadásul az egyszerűség kedvéért érkezzen középen. Tehát középen felül fog majd megjelenni az ellenséges űrhajó; a kérdés csak az, hogy ehhez a helyhez milyen koordináták tartoznak. A legegyszerűbb megoldás, ha a koordinátákat az ideiglenes háttérről olvassátok le: x = 0, y = 180. Itt fog megjelenni az ellenség:

Miután megjelent, lecsúszik egészen a játéktér aljáig. A korodinátákat ismét az ideiglenes háttérről olvashatjátok le:

És végül ezt ismételgeti az űrhajó a végtelenségig, némi késleltetéssel:

Természetesen a késleltetés és a csúszás ideje nincs kőbe vésve; ezeket is lehet szabadon próbálgatni. A végső értékeket pedig akkor fogjátok majd tudni jól bekalibrálni, ha már a játék többi eleme a helyén lesz.

Ha ezzel megvagytok, jöhet a randomizálás. Azt szeretnénk, ha nem mindig középen, x = 0-nál érkezne az ellenség, hanem a játéktér bal és jobb széle között hol itt, hol ott. A két szélsőértéket ismét az ideiglenes háttérről nézhetitek le: -240 és 240. Vagy használhattok egy kicsit kisebb számokat is, hogy ne lógjanak ki nagyon a szélen érkező űrhajók:

De hova érkezzenek az űrhajók? Ha a “csússz” blokkban és véletlen értéked adunk meg, akkor az űrhajók össze-vissza, ferdén fognak menni, hiszen semmi nem garantálja, hogy a két véletlenszám ugyanaz lesz. De a 0-t sem hagyhatjuk ott. Arra az x-re kell érkezni ahonnan elindultunk, bárhol is volt az. Ezt az értéket adja vissza az “x hely” blokk, a kék a mozgás-blokkok közül az egyik legalsó. Ezzel kiegészítve a mozgatás teljes kódja így néz majd ki:

5. Egyszerre több ellenséges űrhajó

A Scratch egyik legnagyszerűbb tulajdonsága a dinamikus objektumgenerálás: a szereplőket nemcsak önálló objektumként, hanem prototípusként is lehet használni, a programkóddal újabb és újabb példányokat létrehozva belőlük. Ez játékok készítésénél különösen hasznos.

Az újabb és újabb szereplőpéldányokat a “készíts másolatot” blokkal indíthatjuk útnak. A példányok viselkedését pedig egy “másolatként kezdéskor” kezdetű kód fogja leírni. Végül azokat a példányokat, amelyekre már nincs szükségünk, a “töröld ezt a másolatot” blokkal iktatjuk ki, hogy ne terheljük túl a Scratch lejátszót. Az új blokkokkal újrastrukturált kód így fog kinézni:

Láthatjuk, hogy ez a másolatkészítős verzió teljesen követi az előző szakaszban készített kód logikáját; csak éppen néhány elem új helyet talált magának. Viszont lejátszáskor nagy változást fogtok tapasztalni: az eddigi egy helyett négy-öt űrhajó fog érkezni egyszerre a játéktér különböző pontjain. Ráadásul az ellenséges űrhajók lövedékeinek előre bekészített kódja is aktiválódik a másolatkészítéssel; tehát mostantól bőven van mit kerülgetni a játékos űrhajójával.

5. Érintésfigyelés, életek, pontok

Egyelőre a játékos űrhajója rendíthetetlenül keresztülmegy az ellenséges űrhajókon és lövedékeken. Hogy legyen tétje a játéknak, ütközéskor el kellene venni egy életet a játékostól. Az ütközést Scratch-ben a szereplők érintkezését ugyanolyan blokk figyeli, mint a billentyűnyomást:

Mivel az ellenséges űrhajó minden másolatánál figyeljük az ütközéseket, ezt a kódot is a “másolatként kezdés” eseményhez kötjük. Ütközéskor az ellenséges űrhajó megsemmisül, de a játékos is veszít egy életet. (Hogy mi történjen, ha a játékos életei elfogynak, arról előre megírt kód gondoskodik.) Ha a résztvevők úgy látják jónak, az ellenség megsemmisítéséért kaphatunk is egy pontot:

Ugyanígy életet veszítünk akkor is, ha az ellenséges lövedékkel ütközünk. A kódot akár “fogd és vidd” módszerrel is átmásolhatjátok egyik szereplőtől a másikhoz:

  • a legfelső blokkra kattintunk és az egérgombot nyomva tartjuk
  • az egérmutatót a megfelelő szereplő ikonja fölé visszük
  • elengedjük az egérgombot

Ha másolás után átváltotok az “ellenseg lovedek” szereplőre, látni fogjátok, hogy a bal felső sarokban megjelent a kód. Nincs más hátra, mint a helyére tenni, és esetleg kivenni belőle a pontszerzést:

Ha eddig a pontig eljutottatok, már teljes értékű játékkal, sikerélménnyel zárhatjátok le a foglalkozást. De ha marad még időtök, folytassátok a munkát, hogy még jobb legyen a játékélmény.

6. A játékos lövedéke

Izgalmasabb lesz a játék, ha a játékos is tud lőni. Ehhez is minden elő van készítve az “urhajo lovedeke” szereplőnél. A korábbiak alapján nem nehéz kitalálni, hogy épüljön fel a kód. Miközben ezt megbeszélitek, meg is kereshetitek a megfelelő blokkokat:

  • várjunk addig, amíg a játékos lenyomja a lövés-billentyűt (ez lehet a szóköz, a felfele nyíl, bármi)
  • a lövedék jelenjen meg a játékos űrhajójának helyén (vagy esetleg egy kicsit feljebb, hogy az űrhajó orrából jöjjön a lövedék)
     
  • csússzon felfele egészen a játéktér tetejéig (éspedig jó gyorsan), és ott tűnjön el
  • az egész folyamat ismétlődjön meg újra meg újra

Ha az egyes részletek megvannak, a teljes kódot már könnyű összeállítani:

Egy másik lehetőség, hogy a játékos lövedékei is másolatok legyenek. Ha ezt választjátok, akkor könnyebb lesz a játék, hiszen egyszerre több lövedéket is lehet küldeni. A másolatos megoldást is könnyű lesz összerakni, hiszen már csináltatok hasonlót az eéllenséges űrhajókkal:

Ha úgy látjátok, hogy a lövedékek túl sűrűn jönnek, tegyetek a kódba egy kis késleltetést is:

7. Finomhangolás

Ahhoz, hogy igazán igényes és jól játszható játékot kapjunk, amely se nem túl nehéz, se nem túl könnyű, össze kell hangolni egy egész csomó értéket:

  • mennyit megy jobbra/balra a játékos űrhajója egy-egy billentyűnyomásra? (a mintaprojektben 5-öt)
  • hány másodperc alatt haladnak át az ellenséges űrhajók a játéktéren? (a mintaprojektben 4)
  • hány másodpercenként érkezzenek ellenséges űrhajók? (a mintaprojektben 1)
  • milyen gyorsan haladjanak át a játékos lövedékei a játéktéren? (a mintaprojektben 0.5)
  • mennyi legyen a késleltetés a játékos két lövedéke között? (a mintaprojektben 0.3)

Mindenki állítsa be úgy ezeket az értékeket, ahogy neki a legjobban tetszik.

Previous Mikulásos játék
Next Forgós játék
Table of Contents

Leave a Reply