Barangolás a térképen

Mihelyt ezzel megvolnánk, ne felejtsünk még egy második táblázatot is készíteni, az egyes utakat lezáró akadályok nyilvántartására. Mondanom sem kell, hogy ezek is tipikus sorszámokat kapnak, ám itt már nem árt némi rendszert is vinni a dologba: ha valamiből több hasonló van, úgy célszerű azokat egy csoportba venni, még ha távol esnek is egymástól (pl. 1-től valameddig számozzuk az ajtókat, utána jönnek sorjában az ablakok stb.); ezáltal a későbbiekben megkönnyítjük ezek kezelését. Az egy-egy akadályhoz tartozó sorokban itt a következő adatokat szükséges feltüntetnünk: két-két rubrika az általuk elválasztott két-két helyiség számára (pl. a nappaliból a hálóba nyíló ajtó esetén egy 1-es és egy 2-es), valamint egy harmadik mező, ami pedig az akadály jelenlegi állapotát tükrözi. Ezúttal is számokkal kell élnünk: legalább három értéket használjunk (célszerűen 0-tól 2-ig számozva) annak jelzésére, hogy az ajtó nyitva, csukva vagy zárva van-e – de ennél jóval több lehetőség is elképzelhető (lehet mondjuk félig behajtva vagy betörve az ajtó, vagy függöny esetében behúzva vagy elhúzva, akármi az eszünkbe juthat!). Végül hagyjunk még egy negyedik oszlopot is saját megjegyzéseink részére: ide lehet beírni az akadály nevét (ajtó, kapu stb.), és esetleg még azt is, hogyan kezelődjék később, azaz miképpen nyitható (milyen cselekvést kell véghezvinni az állapota megváltoztatásához – mondjuk milyen kulccsal nyitható egy zárt ajtó). Listánkba fölvehetünk olyan „elvont” akadályokat is, mint egy kerítés, vagy az utunkat álló eleven őrszem – csak vigyázzunk ez utóbbi esetén, mert ő az ajtókkal ellentétben nem két, hanem egyszerre csak egy helyiségben létezik, s így másként kell majd kezelni később. Egyáltalán, az akadálylistába fölvenni azokat a tényezőket érdemes, amelyeknek állapota változik – ha egy falon sohasem juthatunk át semmilyen módon, azt egyszerűbb inkább a másik táblában a megfelelő irányhoz, mint valami fiktív, valójában nemlétező helyszínszámot beírni.

Most már megtehetjük első – egyelőre csupán képzeletbeli – sétánkat kezdetleges szobáink kis színpadán. Azt is látjuk, hogy – noha még csak két táblázatunk van – máris mennyi mindent kéne ellenőriznie egy vezérlő programnak olyan, primitívnek látszó művelet elvégzéséhez, mint egy meghatározott irányban való haladás. Először is – jelenlegi pozíciónk tudatában – a bejárási táblázatból ki kell olvasnia az elérendő célhelyiség számát. Meg kell néznie, az akadályok listájában szerepel-e olyan objektum, melynek összekapcsolt két helyisége éppen az általunk igénybe vett két szobával egyezik-e meg (ráadásul duplán is kell vizsgálódnia, mert hátha az ellenkező irányból jövünk, a 2-esből az 1-esbe, s nem pedig az 1-esből a 2-esbe), majd ha talált egy ilyet, akkor tájékozódni róla, nyitva van-e az akadály. Ha nem járható az az út, figyelmeztető üzenetet kapunk („Az ajtó csukva van.”), ha igen, akkor további ellenőrzések következnek: létezik-e egyáltalán abban az irányban bármi. Nullás célhelyiség esetén: „Nem mehetsz abba az irányba.” – de lehetnek további fiktív sorszámok is, melyek például külön jelölik a falat, a sövénykerítést, a vizesárkot stb. Sőt, akár még halálos irányokat is kiképezhetünk – mondjuk, hogy egy veszélyes hegyi úton az északnyugati irány végzetes lezuhanással végződik… Csak ha minden stimmel, akkor szabad elvégezni a tényleges mozgatást. (Hogy hogyan, azt is hamarosan meglátjuk.)

Egy kalandjátékban szereplő bármilyen élőlény alapvetően négyféle mozgási formát követhet a helyszínen történő kalandozása folyamán. Ezek: a közvetlen haladás, a közvetett haladás, egy távoli célpont megközelítése és az ún. „mágikus” bejárás. Közülük az első három mindegyike az őt megelőzőre épül, és egyre magasabb szintű cselekvési módokat tesznek elérhetővé.

1.) Közvetlen (vagy magyarul: „explicit”) haladás esetén olyan mozgási utasításról van szó, mely pontosan meghatározza az illető által követendő haladási irányt. Az ezt kiváltó parancsok például a következőképpen hangzanak: DÉLKELET vagy MENJ BE A KUNYHÓBA stb. (Ez utóbbit az teszi közvetlenné, hogy szerepel benne a BE szócska! Máskülönben a következő csoportba tartozna – és akkor is, ha a BE irányt nem vettük volna fel az irányok közé az előző fejezetben.) Hogy ezek megvalósítása miképpen történik, azt épp az imént magyaráztam el, a továbbiakról pedig a következő fejezetben esik némi szó.

2.) A közvetett („implicit”) mozgás ezzel szemben a kalandozó részéről egy olyan kívánságot jelent, amelyben nem fogalmazza meg konkrétan, hogy melyik irányban szeretné a következő lépést megtenni – hanem csak bizonyos utalásokat tesz, az elérendő célpont megjelölésével. Ez már nehezebb feladat a programunk számára, hiszen őrá hárul az irány kiválasztásának felelőssége: a mondatban megadott célról el kell döntenie, melyik irányban fekszik tőlünk. Ha sikerült eldöntenie, akkor a lépés már egy egyszerű közvetlen mozgássá redukálható. Ilyenek rendkívül sokfélék lehetnek, és ráadásul valamennyiük egyéni bánásmódot igényel. HASZNÁLD AZ AJTÓT típusú felszólítás, pl. MÁSSZ KERESZTÜL A CSAPÓAJTÓN esetében az akadályok táblázatából ki kell keresni a helyszínről kivezető csapóajtót (ha van olyan), azután ennek másik helyiségét kell megkeresni a bejárási táblázat megfelelő sorában – ezzel megvan a követendő irány (ha esetleg több irány is vezet ugyanoda, a program dönthet, melyiket használja); LÉPD ÁT A KÜSZÖBÖT: majdnem ugyanaz, mint az előző, azzal a különbséggel, hogy miután küszöbe többféle eszköznek is lehet, ha ugyanott van mondjuk egy ajtó és egy kapu, akkor megintcsak el kell döntenünk azt is, hogy melyiket koptassuk; MÁSSZ FÁRA: egyértelműen a FEL irány helyettesítése; UGORJ: valószínűleg a LE irányt jelenti, de helyzettől függően egészen más is lehet… Fölösleges sorolni a példákat tovább, a dolog lényege ennyiből is látható.

3.) Az eddigi két mozgásfajta egyszerű volt abból a szempontból, hogy mindkettő egyetlen lépés megtételére korlátozódott – valamelyik szomszédos terembe ruccanhatott át segítségükkel a játékos. Távoli célpont megközelítése esetén ugyanakkor már egy teljes útvonalat szükséges végigjárnia, méghozzá úgy, hogy ennek kiválasztását is legnagyobb mértékben a számítógépre hagyja: MENJ A KASTÉLYHOZ, KERESS EGY TISZTÁST, KÖVESD A VÁNDORT típusú parancsok ilyenek. Mint valami taxiba szálló utazó, egyszerűen közli velünk, hová óhajt elkeveredni, és attól fogva a játék idegenvezetésére bízza magát. Ez a legmagasabb szintű, legelvontabb és legnehezebben kivitelezhető haladási forma, a kalandjátékok túlnyomó többsége teljes mértékben nélkülözi. Van azért egy kicsike előnye is a közvetett mozgással szemben, az, hogy nem kell olyan sokféle eltérő kivétellel vacakolni, hanem egyetlen általános eljárásba bele lehet foglalni az egészet. Az viszont a maga nemében szép egy darab… Ismerjük ugyebár a teljes világ térképét a rajta elszórt akadályokkal egyetemben, a saját pozíciónkat és azt, hogy hová kell majd eljutnunk: meg kell találnunk az egyiktől a másikhoz vezető legrövidebb (?!) utat. Ha egy ember rápillant egy térképre, a megoldás szinte önmagától adódik – de egy számítógépnek ugyanezt a diót már sokkal nehezebb lesz föltörnie. Bonyolítja (vagy egyszerűsíti?) a helyzetet az is, hogy esetleg még magáról a célhelyiségről sincs pontos tudomásunk; utóvégre, ha egy játékban vagy harminc ajtó lézeng itt-ott elszórtan, és a tisztelt játékos megsúgja nekünk, hogy MENJÜNK AZ AJTÓHOZ – akkor mégis melyikre gondolt?! Nyilván arra, amelyiket leghamarább elérjük – ha legrövidebb útvonalat keresünk, akkor ez egyszersmind a legközelebb lévő. Nincs más megoldás: el kell indulni, lépésről lépésre tapogatózva előre a helyiségek végtelen óceánjában, s minden új helyszínre lépve ellenőrizni, hogy találtunk-e a leírásnak megfelelő tárgyat. Persze nem összevissza, hanem módszeresen: sorban végigpróbáljuk mind a tizenkét irányt, s amelyik járható, arra lépünk tovább; ha végképp zsákutcába futottunk, úgy mindig visszalépünk az ezt megelőző helyre, és a következő iránnyal kísérletezünk. Ha visszaértünk a kiindulásra, akkor kudarcot vallottunk: a célpontot nem tudjuk elérni. Namost ehhez három dolog szükségeltetik: először is maximalizálni kell a megtehető legnagyobb távolságot, mondjuk 30-40 lépésben (minden újabb lépéssel hatványozódik a lehetőségek száma! – ennyi pedig bármekkora térképhez bőségesen elég lesz); másodszor egy listában nyilván kell tartanunk az eddig megtett útvonalat (melyik helyszínről merre haladtunk tovább), hogy legyen hová visszalépnünk és tudjuk, merre kell majd mennünk; harmadszor pedig – ugyancsak e lista alapján – folyton ellenőriznünk kell, nehogy egy, már érintett helyszínre másodszor is rálépjünk (ilyenkor úgy tekintjük az arrafelé nyíló irányt, mintha akadály zárná el – egyedül így kerülhetjük el, hogy önmagába visszatérő hurkokat írjunk le). Ezzel a módszerrel szépen meg is találjuk a keresett célpontot, csak éppenséggel egyetlen bökkenő lesz vele: korántsem biztos, hogy a legrövidebb útvonalon jutottunk el oda! Ahhoz, hogy amazt is fölleljük, kénytelenek vagyunk a keresést először egyetlen lépésre szűkítve elvégezni, s ha nem találjuk, akkor fokozatosan (mindig egy-egy lépéssel) hosszabbra engedni a pórázt, minden ilyen bővítés után újra és újra végigkeresve – egészen addig, míg el nem jutunk a célba, vagy el nem érjük a bűvös határt. Lassú géppel jobb nem belekezdeni… A KÖVESD ige (egy közelben mozgó illetőnek a nyomába szegődni) a közönséges MENJ-től annyiban eltér, hogy hatósugarát már eleve csak 2-3 lépésre kell zsugorítani – azonkívül, ha sikeres volt, addig ismételni, míg az „üldözött” személy meg nem állapodik valahol. Ha igazán nagyon intelligens programmal akarjuk elkápráztatni a közönségünket, ezt az egészet esetleg még megpakolhatjuk olyan finomságokkal, hogy gyaloglás közben az emberkénk reflex-szerűen nyissa ki az útjába eső ajtókat (majd ha áthaladt rajtuk, csukja is be maga után őket…), sőt, ha zárva vannak, először próbálja végig bennük a nála levő kulcsokat, majd kopogtasson rajtuk, és így tovább…

4.) A negyedik mozgás, az ún. „mágikus bejárás” (DaCosta), nem egy nagy szám, semmi köze az előző háromhoz, és jól hangzó nevével ellentétben mindössze azt jelenti, hogy a szokásos útvonalakat mellőzve, egycsapásra egyik helyről a másikra kerülünk. Tulajdonképp semmi hagyományos – irányokhoz kötődő – mozgás nem történik ekkor. Mindez történhet valamilyen bűbájos varázsige kimondásával, esetleg hasonló módon, mondjuk egy varázsló elteleportál bennünket máshová. Ide sorolható az az eset is, amikor valamilyen, a valóságban hosszabb műveletsort igénylő tevékenységet a játék – dramaturgiai megfontolásból – egy lépésbe sűrítve hajt végre. Például megfizetünk egy kocsist, hogy fuvarozzon el minket, s erre a program tényleges utaztatás helyett mindössze pár mondatban ecseteli számunkra hosszú utunk viszontagságait – aztán a következő lépésben már éppen kiszállunk a kocsiból a célnál. Jellegéből adódóan ezt a legkönnyebb megvalósítani.


Következő: „Lakberendezővé változunk”

 

 

A kalandjáték fogalmának tisztázása

Kalandjáték és mitológia

A számítógép beszélni tanul

A szavaktól a mondatok felé

Helyiségek összefüggő labirintusa

Barangolás a térképen

Lakberendezővé változunk

Hogyan találjunk meg valamit

„Sokasodjatok és növekedjetek”

Az idő kerekéhez kötve

Néhány jótanács és további lehetőségek

A program működésének leírása

Használati útmutató