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ó.)
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.
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:
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:
- 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:
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.
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:
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:
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ő:
A megvalósítást itt találjuk: https://scratch.mit.edu/projects/256174332/.