A kirakós ikonra kattintva (vagy F4) felhozza a térkép szerkesztőt. Itt egy térképen helyezheted el a szprájtokat.
Az itt összerakott térképet (vagy egy részét) a [map] illetve a maze paranncsal tudod megjeleníteni a képernyőn.
Térkép Szerkesztő
A térkép különleges abból a szempontból, hogy egyszerre csak 256 különböző szprájtot képes megjeleníteni a összes rendelkezésre álló 1024 szprájtból. Minden szprájtbank esetén a legeslegelső szprájt fenn van tartva a "nincs térképelem" számára, így a 0-ás, 256-os, 512-es valamint a 768-as szprájt nem használható a térképen.
Felül a nagy részen láthatod és szerkesztheted a térképet (1). Egy nagy térképként látszik, 320 oszloppal és 200 sorral. Használhatod a nagyítás és kicsinyítés gombokat az eszköztáron, vagy az egérgörgőket is a nagyításhoz. A jobb egérgombot lenyomva tartva és az egeret mozgatva tologathatod a térképet, vagy használhatod a görgetősávokat is jobbra illetve alul.
A balklikkel szprájtokat helyezhetsz el a térképen. A legelső szprájt kiválasztásával lehet törölni a térképen (a jobb egérgomb itt nem töröl, hanem mozgatja a térképet).
Ha lenyomjuk a Shift-et, akkor vonalat húzhatunk a legutóbb módosított pontból.
A térképszerkesztő mező alatt található az eszköztár (2), ugyanaz, mint a [szprájt szerkesztő] képernyőn, ugyanazokkal a funkciókkal és ugyanazokkal a gyorsgombokkal (csak itt van még egy Wang csempe eszköz és használhatók szprájtminták is, lásd alább). Az eszközgombok mellett vannak a nagyítás és kicsinyítés gombok, ezek után pedig a szprájtbankválasztó a szprájtpaletta választáshoz (de csak a szerkesztőben. Amikor a programod fut, akkor a 0007F címen lévő bájtot kell állítani a bankok váltásához, lásd [Grafikus Feldolgozó Egység]).
A gomboktól jobbra helyezkedik el a szprájtválasztó paletta (3), ahol kiválaszthatod, melyik szprájttal akarsz rajzolni. Amint korábban már megjegyeztük, a paletta legelső eleme minden 256-os szprájtbankból nem használható, az a "nincs térképelem" számára van fenntartva. Ha törölni szerenél a térképen, akkor válaszd ezt az első elemet, és "rajzolj" azzal.
A szprájtszerkesztővel ellentétben (ahol csak egyetlen színt választhatsz a palettáról), itt, a térképen több, egymásmelleti szprájt is kiválasztható a palettáról egyszerre. Festéskor mindet rá fogja tenni a térképre, (pont úgy, mintha a beillesztést használnád), ezen kívül a kitöltés is ecsetként fogja használni őket, egy nagy, többszprájtos mintával kitöltve a kijelölt területet.
Sőt, mi több, a kitöltésnél Shift+-el kattintva, véletlenszerűen fog választani a kijelölt szprájtok közül. Például, tegyük fel, hogy van 4 féle különböző szprájtod fákkal. Ha kijelölöd öket, majd kitöltöd az erdőnek szánt részt a térképen, akkor ezek a szprájtok libasorban, egymásután ismételve kerülnek elhelyezésre, ami nem néz ki túl jól erdőként. Viszont ha lenyomva tartod a Shift-et, miközben a kitöltéssel kattintasz, akkor minden mezőhöz véletlenszerűen választ egyet a kijelölt 4 fa-szprájt közül, ami már sokkal inkább néz ki igazi erdőnek.
Amikor a Wang csempe eszköz van kiválasztva, akkor a Wang csempekészlet terület (4) aktívvá válik. Ezzel a szerszámmal könnyedén lehet utakat, folyókat, várfalakat, stb. rajzolni.
Wang csempe eszköz
Azonban mielőtt használhatnánk, előbb be kell konfigurálni. Összesen 64 különfélé csempekészlet adható meg (pl. egy a folyónak, egy az útnak, stb.), és mindegyik készlet 16 különböző szprájtot tartalmaz, minden kombinációhoz egyet.
A csempekészletet úgy kell beállítani, hogy előbb a szprájtpalettán kiválasztunk egy szprájtot, majd a Wang csempe gombjára kattintva megadjuk, hogy melyik kombinációt ábrázolja. Amennyiben több szprájt is ki van választva, úgy egyszerre több csempe is beállítódik (attól a gombtól kezdve, amelyikre kattintottunk).
NOTE: A Wang csempekészletbeállítások megőrződnek, el lesznek mentve a flopira.
Ha már van egy Wang csempekészlet beállítva, akkor a szerszám pontosan ugyanúgy használható, mint a ceruza, csak épp automatikusan fogja kiválasztani, hogy melyik csempére van épp szüksége ahhoz, hogy folyamatos mintákat rajzoljon a térképre.
A térkép 3 dimenziós labirintusként is megjeleníthető a [maze] funkcióval. Ehhez a teknőc pozícióját és irányát használja fel, mint a játékos nézőpontját az útvesztőre, de hogy a csempén belüli pozicíókat is kezelni tudja, a teknőc koordinátái ilyenkor 128-al fel vannak szorozva (eredetileg 8-at használtam, hogy egyezzen a térkép pixelszámával, de a mozgás túl darabos volt úgy). Tehát például a (64,64) a térkép bal felső mezőjének közepét jelenti, a (320,192) pedig a harmadik oszlop második sor közepe.
Itt a scale
nagyítás paraméter is másképp értelmeződik: amikor 0, akkor a labirintus 32 x 8 csempét tud használni, ahogy az a
szprájtpalettán látszik, csempénként egy szprájt, 8 x 8 pixel méretben. Ha 1, akkor viszont 16 x 16 csempét, ahol minden csempe
2 x 2 szprájt, tehát 16 x 16 pixel méretű. 3 esetén 4 x 4 fajta csempéd lehet, azaz összesen 16 féle, mindegyik 64 x 64 pixeles.
Ebben az esetben a térkép ezeket a nagyobb csempéket választja, ezért a csempe sorszáma és a szprájt sorszáma csak akkor egyezik
meg, ha a nagyítás értéke 0. Például ha a térképen az 1-es id van és a nagyítás is 1-es, akkor az 1-es szprájt helyett ez a 2-es,
3-as, 34-es, 35-ös szprájtokat jelenti.
Csempe id 1 scale 0 esetén Csempe id 1 scale 1 esetén
+---+===+---+---+- +---+---+===+===+-
| 0|::1| 2| 3| ... | 0| 1|::2|::3| ...
+---+===+---+---+- +---+---+===+===+-
| 32| 33| 34| 35| ... | 32| 33|:34|:35| ...
+---+---+---+---+- +---+---+===+===+-
Ettől függetlenül a térképre az 1-es szprájtot kell a palettáról elhelyezned, hogy ezeket a szprájtokat kapd. Szokás szerint a 0-ás csempe a nincs térképelemet jelenti.
Ha a sky
(ég) paraméter meg van adva, akkor az a csempe, mint a labirintus mennyezete lesz megjelenítve. Másrészről a grd
(ground, föld) csak ott jelenik meg talajként, ahol nincs térképelem megadva. A csempeazonosítókat zónákra oszthatod híváskor,
ettől függ, hogy az adott csempe miképp jelenik meg (talaj, fal vagy szprájt). Minden olyan csempe, ami a wall
-nál nagyobb
vagy azzal egyenlő, nem lesz átjárható, és olyan kockaként jelenik meg, ahol a csempe szprájtjai kerülnek a kocka
oldalaira, átlátszóság nélkül. Azok a csempék, amik nagyobbak vagy egyenlőek az obj
-ban (tárgy) megadottnál, szintén
átjárhatatlanok lesznek, de ezek megfelelőre méretezett 2D-s szprájtként jelennek meg, arccal mindig a játékos (a teknőc
pozíciója) felé fordulva, és ezeknél értelmezett az alfa csatorna, szóval a falakkal ellentétben a tárgyak lehetnek átlátszóak.
Csempe id | Leírás |
---|---|
0 | Mindig járható, grd talajként jelenik meg helyette |
1 <= x < door |
Járható, talajként jelenik meg |
door <= x < wall |
Falként jelenik meg, mégis átjárható (ajtó) |
wall <= x < obj |
Nem átjárható, falként jelenik meg |
obj <= x |
Nem átjárható, tárgy szprájtként jelenik meg |
Hozzáadhatsz nem játékos karaktereket (illetve további tárgyakat) is a labirintushoz a térképtől függetlenül (egy int tömbben, ami
x, y, csempe id hármasokat tartalmaz, a koordináták 128-al felszorozva). Ezek mind átjárhatóak lesznek, és pont úgy jelennek meg,
mint a tárgy szprájtok; az ezekkel való ütközést, mozgatásukat és minden egyebet neked kell implementálni a játékodban. A maze
parancs csupán megjeleníti ezeket. Annyi szívességet azonban megtesz neked, hogyha az adott NJK direktben látja a játékost akkor
a tömbben a csempe id legmagasabb 4 bitjét beállítja. Hogy melyiket, az a kettejük távolságától függ: a legmagasabb bit
(0x80000000) azt jelzi, közelebb vannak, mint 8 térképmező, a következő bit (0x40000000) azt, hogy közelebb, mint 4 mező, a
következő (0x20000000) azt, hogy közelebb, mint 2 mező, és végül a legutolsó bit (0x10000000) azt, hogy ugyanazon vagy szomszédos
térképmezőn állnak.
Mindezeken felül ez a parancs gondoskodik a labirintusban való navigálásról is, a ▴ / △ előre mozgatja a teknőst, a
▾ / ▽ hátra; a ◂ / ◁ balra fordul, a ▸ / ▷ jobbra fordul (a játékpad billentyűzetkiosztása
megváltoztatható, lásd [memóriatérkép]). Az összes többi játékpad gomb lekezelése és az interakciók kivitelezése a játékodtól
függ, így a Te feladatod leprogramozni ezeket, a maze
csak a játékos mozgatásában és a falakkal való ütközésben segít.
NOTE: Ne feledd, hogy a teknőc pozícióját mindig 128-al le kell osztani, hogy megkapd, a térkép melyik mezőjén tartózkodik épp a játékos.