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.