Scratch - Kattints a macskára!

Ez a játék a népszerű Tap the frog alkalmazása Scratch-re. A megalkotásakor megismerkedünk a ciklus és a lista fogalmával. (Az alkalmazás saját alkotás, nem volt motiváló videó.)

kattintsamacsk%C3%A1ra.png

Az eredeti játékban béka szerepel, de számunkra az alapértelmezett macska is megfelel. Első körben készítsünk belőle 12 másolatot 3 sorban és 4 oszlopban elrendezve!

  • Méretezzük át a macskát, hogy kényelmesen elférjen.
  • Magyarázzuk el a ciklusok lényegét!
  • Számoljuk ki, hogy melyik macska hova kerül, és becsüljük meg, hogy mekkora legyen a távolság közöttük.
  • Amikor másolatot készítünk, akkor az eredetit tipikusan láthatatlanná tesszük.
  • Ha módosítani szeretnénk a szereplőt (pl. változtatni a méretét), akkor azt mindig az eredeti szabad végrehajtani, egyébként hatástalan lesz. Ehhez meg kell jeleníteni: Kinézet → dupla kattintás a jelenj meg utasításra, majd utána módosíthatjuk.
  • A szereplőre kattintva töröljük azt a másolatot.
m%C3%A1solatok.png

Ez már egy működőképes változat, de lépjünk tovább! Tegyünk bele egy számlálót (pl. macskák száma névvel), amellyel azt számoljuk, hogy hány másolatunk van: az elején kinullázzuk, másolat létrehozásakor növeljük, a másolat törlésekor pedig csökkentjük eggyel. A változó legyen minden szereplőé, egyébként nem úgy fog működni, ahogy szeretnénk. (Ha a kiválasztott szereplőé lenne, akkor minimális kódváltoztatással be tudnánk sorszámozni a másolatokat.) A módosított kód így néz ki:

sorsz%C3%A1moz%C3%A1s.png

Most több pályát fogunk létrehozni!

  • A pályák dimenzióit (tehát azt, hogy a macskák hány sorban és hány oszlopban helyezkednek el) listákba helyezzük, és mindegyik pályán a lista elemének megfelelő számú macskát másolunk.
  • Itt mutassuk be a listákat, beszéljünk róluk pár szót!
  • Hozzunk létre két, minden szereplőhöz kapcsolódó listát. Az egyik neve legyen x, a másiké y. Az y a sorok, míg az x az oszlopok számát határozza meg az adott pályán. Töltsük fel adatokkal kézzel, pl. így:
list%C3%A1k.png
  • Tüntessük el a listákat. Hozzunk létre egy minden szereplőhöz kapcsolt pálya nevű változót, ami azt jelzi, hogy hányadik pályán vagyunk.
  • A pálya változó értékét rögtön az elején állítsuk nullára. Utána tegyünk be egy ismételd ciklust, ami valamelyik lista (pl. x) hosszának megfelelő lépést tesz meg. Ennyi pályánk van. Az első utasítás a ciklusmagon belül a pálya változó növelése legyen (az első pályával kezdünk, és a lista indexelés a Scratch-ben 1-gyel kezdődik). A kód többi részét „dobjuk” bele a ciklusmagba.
  • Az első ismétlés a ciklusmagon belül nem fix 3 lesz, hanem az y lista „pályaadik” eleme, az azon belüli meg az x lista „pályaadik” eleme.
  • A külső ciklus utasítása az kell, hogy legyen, hogy várj addig, amíg a macskák száma el nem éri a nullát. A programunk most a következőképpen néz ki:
p%C3%A1lya.png

Vegyük észre, hogy ha kiterjesztjük az x és y tömböket, azaz hozzáadunk egy-egy értéket, azzal új pályát adunk hozzá. Minimálisan igyekezzünk eljutni eddig a pontig, de ha időnk engedi hajtsunk végre minél több lépést az alábbiak közül!

A tapasztalat szerint eddig a pontig kényelmesen el lehet jutni, és el is érdemes. Ez a változat itt található: https://scratch.mit.edu/projects/238637394/. Továbblépéshez az alábbiakat lehet végrehajtani.

Tegyünk hozzá időzítőt!

  • Hozzunk létre egy minden szereplőhöz kapcsolt "Idő:" nevű változót, melyet helyezzünk a bal alsó vagy jobb felső sarokba!
  • Az időzítő működése a következő: először beállítjuk azt, hogy hány másodpercig tartson (pl. 20), és utána egy végtelen ciklusban ismételve várunk 1 másodpercet, majd csökkentjük az idő értékét. Ha eléri a nullát, akkor - egyelőre - mindent leállítunk.
id%C5%91z%C3%ADt%C5%91.png

A játék már működik, de még van benne pár szépséghiba: az idő leteltével szinte "lefagy" a program, és ha sikerül időn belül teljesíteni, akkor is, a számláló tovább megy. Most hozzunk létre még két hátteret, az egyiket nyertél, a másikat vesztettél felirattal, megfelelően elnevezve azokat. Kb. így kell kinéznie:

h%C3%A1tterek.png

A következő pontokon kell módosítani a kódon:

  • Az idő számlálónál állítsuk be a hátteret arra, hogy "vesztettél".
  • A "minden álljon le" helyett egyrészt le kell állítani a főprogramot ("a szereplő többi feladata álljon le"), másrészt saját agát is, hogy ne számoljon tovább ("ez a feladat álljon le").
  • A főprogram végén a hátteret állítsuk arra, hogy "nyertél".
  • Ugyanitt állítsuk le a számlálót ("a szereplő többi feladata álljon le").
  • Gondolva a játék újraindítására is, a főprogram elején állítsuk a hátteret játékra.
  • A másolatokkal is kell kezdeni valamit. Ha a játékos nyert, akkor elvileg nem lehet másolat a képernyőn, ha viszont vesztett, akkor igen, ráadásul azokra továbbra is lehet kattintani. Emiatt a vesztettél háttér beállításakor törölni kell az adott másolatot, ami csak a másolatokon fog lefutni.
  • A programban van még egy apró hiba: ha a bal felső macska az utolsó, akkor miután rákattintottunk, egyből megjelenik a következő pálya macskája ugyanott. Ezen a ponton javítsuk ki. Tegyünk oda egy rövid (pl. 0.2 másodperc) szünetet
  • A szünet ellentételezése érdekében, ill. amiatt, mert a pályák teljesítését plusz idővel jutalmazhatjuk, a pálya teljesítése után növeljük az időt valamennyivel, pl. 2 másodperccel.

Mindent összevetve a program a következőképpen néz ki:

v%C3%A9gekezel%C3%A9s.png

Rajzoljunk sapkát a szereplőnek! Ehhez hajtsuk végre a következő lépéseket:

  • Figyeljünk arra, hogy a prototípuson dolgozzunk! Pl. várjuk meg, hogy leteljen az időzítő, majd kattintsunk kétszer a macska szereplő -> Feladatok -> Kinézet -> jelenj meg parancsra.
  • Váltsunk át a jelmezekre, töröljük a costume2-t, a costume1-et nevezzük át erre: kalaptalan, készítsünk róla másolatot, és nevezzük el erre: kalapos.
  • Új jelmez alatt jelmez kiválasztása a könyvtárból, és itt válasszuk ki a kalapot (Hat).
  • Váltsunk át a kalap jelmezre, kattintsunk a kalapra, másoljuk a vágólapra (Ctrl + C), majd váltsunk a kalapos jelmezre, ott másoljuk a vágólapról a képernyőre (Ctrl + V), majd méretezzük át és helyezzük a macska fejére. Ügyeljünk arra, hogy ne lógjon túl, mert akkor a játékban összeérhet a fölötte levővel.
  • Töröljük a kalap jelmezt.
  • A programban a másolat készítése előtt állítsuk be a jelmezt véletlenre 1 és 2 között.
  • Az "ezen szereplőre kattintáskor" programrészletet a következőképpen módosítsuk: ha a jelmez sorszáma 2 (tehát kalapos a macska), akkor a jelmez legyen kalaptalan, egyébként történjen az, ami ott volt.

A program végső változata a következő:

jelmezek.png

A megvalósítást itt találjuk: https://scratch.mit.edu/projects/256174332/.

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