Scratch programozás - Lebegő madár
A Flappy bird nevű játék prototípusát készítjük el, melyben egy madár repül és folyamatosan esik lefelé, a szóközre kattintva ugrik egyet, miközben akadályokat kell elkerülnie. A játék akkor ér véget, ha akadálynak vagy a játéktér szélének ütközünk.
flappybird.png
Figyeljük meg, hogy a madár jobbra repülése illúzió; valójában egy helyben lebeg, miközben az akadályok érkeznek jobbról balra.
A játék elkészítése során megismerkedünk a feltételkezeléssel, a végtelen ciklussal, az ütközésvizsgálattal, a több jelmezzel, és rajzolni is fogunk.

Adjunk címet a játékunknak, pl. Lebegő madár.

Töröljük ki a macska szereplőt: vagy fent a kicsinyítéstől balra kettővel található ollóra kattintva, majd a macskára kattintva, vagy jobb egérrel a macskára kattintva, majd a kontextus menüből a törlést kiválasztva.

Hozzuk létre a madár szereplőt!

  • Ehhez célszerű választanunk egy szereplőt a könyvtárból, pl. a papagájt (Állatok → Parrot).
  • Méretezzük át megfelelően kisebbre; akkorára, hogy kényelmesen átférje az akadályon.
  • Írjuk meg a madár kódját! A játék elején a megfelelő helyre ugrik, ott folyamatosan esik, szóköz lenyomására ugrik egyet, és a játék akkor ér véget, amikor vagy érinti az akadályt vagy a játéktér szélét. A kódban ismét megjelenik a végtelen ciklus, a feltételkezelés, az érzékelés, a logikai műveletek, valamint a játék vége. A kódot lépésenként építsük fel, és mindegyiket próbájuk ki: (1) folyamatos esés, (2) szóközre ugrás, (3) ütközéskor vége. Próbáljuk meg rávezetni a diákokat arra, hogy mit kell odaírni. Pl. arra, hogy a folyamatos esésnél az y koordinátát kell csökkenteni, az előző alkalom anyaga alapján rá kell tudniuk jönni.
mad%C3%A1r%20program.png
  • Ezen a ponton várjuk össze egymást.

Hozzuk létre az akadály szereplőt! Ezt magunk fogjuk elkészíteni úgy, hogy rajzolunk egyet!

  • Kattintsunk az Új szereplő festése ikonra, majd változtassuk meg a nevét Szereplő1-ről Akadályra.
%C3%BAj%20szerepl%C5%91%20fest%C3%A9se.png
  • Változtassuk meg az első jelmez nevét jelmez1-ről akadály1-re.
  • Alakítsuk át a képet vektorossá. Itt röviden vázoljuk a vektoros és pixeles kép közötti különbségeket.
  • A kitöltött téglalap eszköz segítségével rajzoljuk meg az akadály felső, majd alsó részét. Igyekezzünk középre tenni.
akad%C3%A1lyfest%C3%A9s.png
  • Duplázzuk az akadály1 jelmezt. A név automatikusan akadály2 lesz. Egyszerűen cseréljük meg az akadálynak az alsó és a felső részét.
  • Készítsük el az akadály kódját! Először tervezzük meg szóban: jobbról balra csúszik, majd amikor elérte a bal szélét, akkor jelmezt vált és ismét jobbról balra csúszik, mindez végtelenítve. A korábbiakhoz képest itt bejött a végtelen ciklus, valamint a következő jelmez utasítás. A végtelen ciklusról beszéljünk pár szót, mivel ez egy gyakran visszatérő, igen fontos utasítás lesz. A kód az alábbi:
akad%C3%A1ly%20program.png
  • Futtassuk le a kódot. Itt addig ne lépjünk tovább, amíg minden diák el nem jutott eddig. Most vagyunk kb. a játék felénél.

Írjunk használati utasítást! Jobb felső sarokban láthatjuk a Vissza a projekt oldalra feliratot, arra kattintsunk, majd írjunk valamit a Használat alá, pl. ezt: A papagájt a szóköz billentyűvel lehet felfelé mozgatni.

Az alapprogram kész van, és megtalálható itt: https://scratch.mit.edu/projects/238527445/. Kiterjesztési lehetőségek (pl. ha marad még idő, vagy valaki ezt választja saját programként):

  • A végén ne „fagyjon le” a program, hanem írja ki azt, hogy Vége.
  • Hiba a programban: ha a játék úgy ért véget, hogy akadálynak ütközött a madár, majd újra indítjuk, akkor előfordulhat, hogy egyből véget ér. Ennek az az oka, hogy az akadály később ugrik a játéktér végére, mint ahogy a papagáj kódja ellenőrzi az ütközést. A prototípusnál, ahol az egyszerűségre törekszünk, ezt nem javítjuk, de komolyabb esteben már igen. Megoldás lehet pl. egyszerűen egy egytized másodperces szünet a papagáj kódjának elején, vagy még elegánsabban üzenetküldéssel.
  • Kisebb hiányosság: a program a második jelmezzel indul. Ennek az az oka, hogy ha a jelmezváltás bal oldalon történik, akkor villan egyet, egyébként meg kétszer kellene kiírni az ugorj jobbra utasítást. Mivel a prototípusnál az egyszerűségre törekszünk, ezért így hagyjuk, de egy komolyabb megvalósításnál erre is ügyelnünk kell.
  • A papagájnak (és még sok más, a könyvtárban levő szereplőnek is) két jelmeze van; repülés közben mozgathatja a szárnyait. Megvalósítás: a madár kódjában külön szálon végtelen ciklusban változtatjuk a jelmezt, 1-2 tizedmásodperces szünetekkel.
  • Lehet benne több élet. A legtöbb játéknál 3 élet van. Ez még kiterjeszthető úgy is, hogy időnként megjelenik egy jutalomfalat, amivel új életet lehet szerzeni.
  • Idővel begyorsulhat: 5 helyett 4, 3 stb. másodperces lehet a csúszás sebessége. Ügyelnünk kell arra is, hogy az esés sebessége és az ugrás nagysága is arányosan nőjön.
  • Lehetnek benne nehezebb akadályok is, melyek csak később jönnek elő.
  • Az akadályok érkezését lehet véletleníteni.
  • Lehet pontszámítást belevinni, akár úgy, hogy az akadály kikerüléséért ad pontok, akár úgy is, hogy véletlenszerűen megjelenő jutalomfalatok érintéséért kap pontot a játékos.
  • A maximális pontszámot lehet szerveren tárolni, és a végén gratulálni, ha sikerült megdönteni.

Egy teljesebb megvalósítás az alábbi: https://scratch.mit.edu/projects/238529648/.
A játék alapötletét a következő videó adta: https://www.youtube.com/watch?v=gzH8iX0k6aM.

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License