Játékprogram írása LOGO-ban (2.rész)
Abonyi-Tóth Andor
2005/03/18 10:44
854 megtekintés
A cikk már legalább egy éve nem frissült, az akkor még aktuális információk lehet, hogy mára elavultak.
A LOGO nyelv teknőcgrafikai alapjainak egyszerűsége miatt sokan úgy gondolják, hogy e nyelv összetettebb programok készítésére alkalmatlan. Cikkünk első részével talán már néhány e hitben élőt meggyőzhettünk arról, hogy nem csak a teknőcgrafika utasításai állnak rendelkezésünkre.

Emlékeztetőül

A játékos feladata a labirintusban való minél gyorsabb végighaladás a starttól a célig. A pályát magával a program első változatával készíthettük el.

A program elkészítését a következő lépésekre bontottuk fel:

  • készítsük el a figurát és az azt mozgató eljárást;
  • készítsük el a labirintust;
  • helyezzük be a labirintusba a játékost, és mérjük az időt;
  • írassuk ki a képernyőre az eredményt.
  • írassuk ki a fájlba a játékos eredményét, ha az első tízbe kerül ez alapján.

A PACA.LGP program tartalmazza az eddig megvalósított elemeket. Cikkünk második részében az időmérést, a falak közötti haladás vizsgálatát valósítjuk meg. A toplista készítését a harmadik részben írjuk le.

Mozgás a labirintusban

A játékost az elkészített labirintus kezdőpontjára kell elsőként helyeznünk. Ezt az általunk elkészített labirintus esetén úgy határozhatjuk meg, hogy a bejárathoz helyezzük el a teknőcünket, majd leolvassuk a teknőc koordinátáit a jobb gomb lenyomásával megjelenített menüből, vagy kiíratjuk a két koordinátáját. A labirintusban a mozgás során ellenőriznünk kell, hogy falnak ütköznénk-e, ha az általunk választott irányban mennénk tovább. Hogy ne lehessen vadul próbálkozni, iktassunk be jajgatást, ha falnak ütközünk. Ez egy WAV formátumú hang meghívását jelenti, ami a Comenius LOGO hangok tárolására szolgáló könyvtárában már ott van JAJ.WAV néven. Ha más hangot akarunk használni, akkor azt is ide célszerű tenni, mert alapértelmezés szerint itt keresi majd. Ha a programmal egy helyre szeretnénk tenni, akkor viszont célszerű a betöltőút utasítást elé írni, mert ennek eredményeképpen a programmal egy helyen keresi.

A falnak ütközés vizsgálatához a pacánk előtt álló pont színének elemezése elegendő. Ha ez a pontszín fehér - ez a 15-ös színkódú szinte minden programozási nyelven -, akkor mehetünk előre, ha nem, akkor jajgatunk. Ezt az elágazás szerkezettel oldhatjuk meg újra a legkényelmesebben. A megvalósítás egy igaz vagy hamis logikai értéket visszaadó mehet eljárással történik meg. A mehet eljárást, ami valójában függvény, a módosított mozgat eljárás hívja meg minden billentyűnyomás után. Az eljárásba még egy vizsgálatot építettünk be: a célba érés helyét is vizsgáljuk a célba eljárással minden mozgás után, hisz célba éréskor le kell állítani az időt. A cél a mi esetünkben a (-230; -70) pont, ezért szerepel ez itt paraméterként.

A sok zárójel és sortörés nem véletlen az eljárásokban. A prioritás határozza meg a programozási nyelvekben a kifejezés feldolgozását, de a Comenius LOGO okoz néha meglepetéseket, mert alapvetően jobbról balra haladva dolgozza fel a kifejezéseket, ami nem mindig ad azonos eredményt a más nyelvekben megszokottal. Biztos, ami biztos: a zárójelekkel mi határozzuk meg a kiértékelés sorrendjét. Az utóbbi eljárás utolsó előtti sora igen izgalmas része a készülő programunknak, mivel itt a teknőcök megszólítására láthatunk példát. Az eljárás kezdetétől az aktív teknőc, azaz a parancsainkat végrehajtó a paca nevű lesz, mivel ennek a koordinátáit olvassuk le. A kiíratást viszont az óra nevű teknőssel végezzük, amely a képernyőre a születésének helyéről kiindulva írja majd ki az elért eredményünket. Ezt az óra nevű teknőcöt csak ideiglenesen szólítjuk meg. Erre a kérem utasítás szolgál, amely ha több elemet is tartalmaz, akkor azok zárójelek közé kerülnek, csakúgy, mint a kiír vagy betűzd esetében. Ez utóbbi kettő közötti eltérés csak annyi, hogy az első a szöveges ablakban, míg a második a grafikus képernyőn jeleníti meg a karaktersort.

Az idő mérése

Az idő méréséhez a számítógép belső óráját használjuk. Ez egy négyelemű lista, amely [ óó pp ss mm ] szerkezetű. A méréshez az órát elindítjuk, amikor elhangzik a start felhívás - azaz a kezd változóban rögzítjük a kezdés idejét -, majd leállítjuk, amikor a célba értünk. Az eltelt időt a két lista különbségéből számoljuk ki. Ehhez mindkettőt átváltjuk másodpercekre, majd e kettő különbségét vesszük. A gond csak az éjjeli kakukkokkal van, mert ha éppen éjfél előtt kezdünk játszani, és éjfél után fejezzük be a pályát, akkor a különbség negatív lesz. Ezt kivédhetjük úgy, hogy ha a kezdőidőpont kisebb a végidőpontnál, akkor meg kell növelnünk egy teljes nappal a végidőpontot. Az új változat a PACA2.LGP nevet kapta, és letölthető innen, a pályával együtt. A folytatásban a toplistakészítés kapcsán már példát láthatunk arra is, hogy miért is jó az elemi algoritmusokat ismerni, illetve megismerkedünk a Comenius LOGO sokak által ismeretlen területével: a fájlok kezelésével.

Módszertani ajánló

tantárgyinformatika
témakörprogramozás, emelt szintű érettségi
évfolyam/korosztály8-12. évfolyam
módszerJátékprogramon keresztül a Comenius LOGO időkezelését, listautasításait, teknőc és grafikus felület kezelőutasításaival ismerkedhetünk meg.
idő45 perc
célokA tanulók ismerjék meg egy egyszerű játék főbb moduljait, azt legyenek képesek később átalakítani saját probléma megoldása esetén.
tanulási helyzetAz algoritmizálási és programkódolási alapismeretek után összetettebb feladat megoldása.
szükségeskivetítő, használt nyelvi fordítók (Comenius LOGOl)
szerzőRozgonyi-Borus Ferenc
címhttp://www.sulinet.hu/tart/cikk/ae/0/25823

Link

Csatlakozz hozzánk!

Ajánljuk

European Schoolnet Academy Ingyenes online tanfolyamok tanároknak
School Education Gateway Ingyenes tanfolyamok és sok más tanárok számára
ENABLE pilot Program iskoláknak a bullying ellen
eBiztonság Minősítés Minősítési rendszer oktatási intézményeknek