Scratch áttekintés

A Scratch egy gyerekek számára készített programozási nyelv, melynek segítségével könnyedén meg tudják tanulni a programozás alapjait. A nagykőrösi Arany János Református Általános Iskolában szervezett Scratch tanfolyam tapasztalatai alapján készült ez az oktatóanyag. Egy-egy játék alapjának elkészítése egy 90 perces alkalom anyaga, és az időbe több játék is belefér; a programozás rész kb. 60 perces. A program társoktatója Csécsy László volt.

A tanfolyam során sikerült kitapasztalnunk a lehetőségeket és korlátokat is. A Scratch-ben történő programozásnak én három fázisát (vagy kategóriáját) különböztetem meg:
1. Amikor minden sor kódnak nagyon látványos a hatása. Ez az, ami leginkább alkalmas oktatási célra: viszonylag könnyen és gyorsan lehet látványos eredmény elérni. Valójában ez az, ami miatt megalkották ezt a rendszert. Egy-egy alkalmon az első fázis végéig célszerű elmenni, és eddig érdemes is, ugyanis ez alatt a játék még nem játszható.
2. Az első fázisban megalkotott prototípus továbbfejlesztése. Itt sokkal kevésbé látványos az előrehaladás egységnyi utasításmennyiség beszúrását követően, viszont ezek kellene ahhoz, hogy a prototípusból játék legyen. A kódnövekmény jelentős; pl. a lebegő madár prototípusa és annak kiegészítői között kb. háromszoros. Ez órarendi keretek közé tipikusan nem fér be az időlimit miatt, viszont például a félév végi saját programok megalkotásánál ezeket a részleteket is célszerű megvalósítani.
3. Elég sok mindent meg lehet valósítani Scratch-ben, viszont ebbe a kategóriába tartozó dolgokat már nem érdemes, más rendszerben sokkal egyszerűbb. Ilyen például a játékok olyan szintű kidolgozása, amelyhez már nélkülözhetetlen pl. mátrixok használata. (Például egy mászkálós játékban a háttér minden részének a megfelelő mozgatásához.) Valamint bonyolultabb, pl. rekurziót tartalmazó algoritmusok megvalósítására is érdemes más programozási nyelvet választani. Elvileg lista segítségével készíthetünk vermet, és ott szimulálhatjuk a rekurziót, de ez már túlmutat azokon a kereteken, amilyen célból a Scratch-et megalkották. Az első csoporttal beleestünk abba a hibába, hogy egyértelműen ide tartozó dolgokkal is próbálkoztunk: egy programozó számára érdekes kihívást jelenthet, de oktatási célra már alkalmatlan.

A fejlesztői felület

A Scratch segítségével hagyományos, számítógépen futó alkalmazásokat (leginkább játékokat) lehet készíteni. A rendszer kétféleképpen használható:

Alap beállítások:

  • A felület nyelvét lent középen lehet beállítani. A tanfolyamon állítsuk magyarra.
  • A korábbi alkotások jobbra fent, a felhasználó név alatt található Saját dolgaim menüpontban találhatóak. Külön vannak a megosztott és a nem megosztott projektek, valamint itt műhelyeket is létre lehet hozni.
  • Fent a Böngéssz menüpontot kiválasztva a megosztott alkalmazások között lehet keresni. Mivel mindegyik megosztott program forráskódja elérhető, itt lehet tanulni is.
  • Új projektet fent balra az Alkoss menüpontra kattintva lehet létrehozni.

(Az anyag a Scratch 2-es felületével készült; a Scratch 3-ban kisebb eltérések vannak.)

Szereplők

Egy Scratch program mindig tartalmaz egy játékteret, valamint tetszőleges számú szereplőt. Számos beépített szereplő van a rendszerben, de mi magunk is rajzolhatunk, ill. feltölthetünk. Mindegyik szereplő az alábbiakat tartalmazhatja:
feladatok.png
  • Feladatok: valójában itt található a klasszikus értelemeben vett programkód. Programkód tehát nem létezhet csak úgy, az vagy egy szereplőhöz kapcsolódok, vagy magához a játéktérhez. A programozás részleteit az alábbi alfejezet mutatja be.
  • Jelmezek: egy szereplőnek tetszőleges számú jelmeze lehet. Például az alapértelmezett macska szereplőnek két jelmeze van. Új jelmezt rajzolhatunk (ld. lejjebb), kiválaszthatunk a könyvtárból, feltölthetünk vagy fotózhatunk a számítógépünk webkamerájával. A játéktér esetén jelmez helyett háttér van. A rendszer számos beépített hátteret tartalmaz.
  • Hangok: a hangokat szintén kiválaszthatjuk a beépített könyvtárból, feltölthetjük, vagy felvehetjük számítógépünk mikrofonjának segítségével.
A szereplők alaptulajdonságait a rajta levő kis kék i betűre kattintva tudjuk megnézni, ill. megváltoztatni:
sprite.png
  • Név: itt tudjuk átnevezni.
  • x és y koordináta. A játéktér közepe a (0, 0) koordinátapár. Az x tengely balról jobbra -240…+240, az y tengely pedig lentről felfelé -180…+180 pontig terjed.
  • Irány: a 0° a felfelé irány, a pozitív irány jobbra halad, a negatív pedig balra. (Tehát ez nem egyezik meg a szokásos matematikai konvenciókkal.) Az alapértelmezett irány minden szereplőnél a 90°, ami a jobbra nézést jelenti.
  • Forgási stílus: a három lehetőség: (1) forgatható, (2) y-tengelyen tükrözhető, (3) nem változtatható. Az irány ettől függetlenül beállítható, és a menj utasítás hatására a megfelelő irányba mozdul el.
  • Játékos vonszolhatja: ezzel azt állíthatjuk be, hogy játék során működik-e a szokásos fogd és vidd módszer.
  • Látható: beállíthatjuk a láthatóságát.

Egy-egy szereplőt, ill. annak akár egy jelmezét is lementhetünk (jobb kattintás a szereplőt vagy jelmezen -> mentés állományba), majd be tudjuk tölteni. Így más programból is át tudunk emelni szereplőket.

Utasításkészlet

Az utasítás blokkokat 10 csoportba osztották, melyek a Feladatok fülön láthatóak:
utasitasok.png
  • Mozgás: az aktuális szereplő pozícióját és irányát lehet vezérelni ezekkel az utasításokkal (a játéktér esetén ez az utasításkészlet üres):
    • x és y koordináták abszolút megadása, ill. elmozdulás;
    • mozgás a pillanatnyi iránynak megfelelően;
    • adott pozícióba történő, adott ideig tartó csúszás;
    • az irány megadása;
    • az aktuális pozíció x és y koordinátájának, valamint az iránynak a lekérdezése.
  • Kinézet: a szereplő kinézetét lehet ezekkel az utasításokkal megváltoztatni (a játéktér esetén szűkített az utasításkészlet):
    • a mondd és gondold utasításokkal feliratokat tudunk létrehozni, mintha a szereplő azt mondaná ill. gondolná;
    • meg lehet jeleníteni, ill. el lehet tüntetni;
    • be lehet állítani a szereplő jelmezét, valamint a hátteret is;
    • különböző grafikus hatásokat lehet beállítani (szín, halszem, örvény, képpont, mozaik, fényerő, szellem, ill. külön utasításpárral a méret);
    • itt lehet beállítani azt, hogy átfedés esetén melyik szereplő látszódjon;
    • le lehet kérni a jelzem sorszámát, a háttér nevét és az aktuális méretet.
  • Hang: különböző hanghatásokat lehet kiadni:
    • a szereplőhöz kapcsolódó hangokat lehet lejátszani;
    • egy beépített „szintetizátor” segítségével lehet „darabokat” létrehozni.
  • Toll: ezekkel az utasításokkal rajzolni lehet a következőképpen: a toll adatainak (szín, árnyalat, méret) megadását követően le lehet tenni a tollat, majd a szereplő mozgatásával egyenes vonalak jelennek meg, végül fel lehet emelni a tollat.
  • Adatok: változókat és listákat lehet itt létrehozni. A változó és a lista is tartozhat minden szereplőhöz (publikus), vagy csak a kiválasztott szereplőhöz (privát). A játéktér kódjában létrehozott változók csak publikusak lehetnek, azokat tehát minden szereplő látja. A változó lehet megosztott; ez azt jelenti, hogy a szerverre menti a rendszer.
    • A változóhoz tartozó utasítások: értékének beállítása, értékének megváltoztatása, a változó megjelenítése, ill. eltüntetése. Többféleképpen lehet megjeleníteni: normál, nagy, ill. csúszka formájában, melyet nem programból, hanem jobb egérgombbal a játéktéren megjelenített változóra kattintva tudunk beállítani. A nagy kijelző segítségével tudunk feliratokat létrehozni.
    • A listához tartozó utasítások: elem hozzáadása ill. törlése a listából, elem beszúrása ill. megváltoztatása adott pozícióban, lista adott elemének lekérdezése, lista hosszának lekérdezése, tartalmazásvizsgálat. A lista közvetlenül is szerkeszthető, és az ott megadott értékek lesznek az alapértelmezettek, tehát nem kell kódból feltölteni.
  • Események: itt találhatóak azok az utasítások, amelyek a kódblokk elejére kerülnek; ezek alapján dől el az, hogy minek a hatására mi fut le.
    • Zöld zászlóra kattintáskor: ez a program fő belépési pontja; a zöld zászlóra kattintva indítjuk a programot. Akárhány ilyen blokk létezhet, akár több szereplő esetén is; ezek párhuzamosan futnak.
    • Szóköz vagy valamelyik másik billentyű lenyomásakor: az adott kódrészlet akkor fut le, amikor a felhasználó a megadott billentyűre kattint. (Tipp: ezt nem érdemes használni, helyette végtelen ciklusban célszerű ellenőrizni azt, hogy le van-e nyomva egy billentyű.)
    • Adott szereplőre kattintáskor mi történjen.
    • Itt található az üzenetküldés, ami egy nagyon fontos része a Scratch-nek. Az üzenetek globálisak, tehát minden szereplő megkapja, amely „figyeli”, és paramétert sem lehet megadni.
  • Vezérlés: ebben a szekcióban találhatóak a klasszikus programozási struktúrák, mint pl. a feltételkezelés vagy a ciklus, ill. az alábbiak:
    • ütemezés,
    • másolatok kezelése: minden szereplő tud másolatokat készíteni magáról; a programkód mindegyik másolat esetén külön lefut, és a szereplőhöz kapcsolódó változó adott másolathoz kapcsolódik, tehát ha egy másolt szereplő megváltoztat egy privát változót, akkor a másik másolt szereplő ugyanolyan nevű változója nem változik,
    • feladat ill. program vége kezelése.
  • Érzékelés: a Scratch leglátványosabb utasításai találhatóak ebben a blokkban:
    • érintésvizsgálat (egérmutatóval, játéktár szélével, más szereplővel, színérintés),
    • kérdés-válasz kezelése: a kérdezd meg utasítás végrehajtásánál a rendszer felteszi a kérdést, a felhasználó alul beírhatja a választ, ami a válasz változóba kerül;
    • billentyű és egér vizsgálat,
    • mozgásérzékelés,
    • időmérő.
  • Műveletek: matematikai és logikai műveletek találhatóak ebben a blokkban; az előbbieket tipikusan változók, míg az utóbbiakat feltételek kezelésénél használjuk. Alap szöveg kezelés is található itt. A bonyolultabb matematikai műveletek a gyök első elemet tartalmazó legördülő menüben vannak.
  • Továbbiak: itt lehet függvényeket (ún. parancsokat) létrehozni (paraméterek megadhatók, visszatérési érték viszont sajnos nem), valamint kiterjeszteni a rendszert, pl. a Lego utasításkészletével.

Rajzasztal

Háttereket ill. jelmezeket a rajzasztalon tudunk létrehozni. A könyvtárban levő beépített jelmezeket is módosíthatjuk. Van külön pixeles és vektoros mód. A pixeles módban képpontonként tudjuk megadni az ábrát, és ott tudunk képpont szinten törölni is. A vektoros módban viszont jól nagyítható az ábra.

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