Karácsonyra nem sikerült kész lennem vele, csak most. Biztos nem fogja használni már 2012-ben senki, talán én sem, de érdekes volt megírni. Biztos lehetne még tökéletesíteni rajta, pl. a színeken változtatni, stb.
Character Definer 2012
A program a demokazettán található Character Definer továbbfejlesztett változata. Míg az eredeti programban csak adott karaktereket szerkeszthetünk át, itt bármelyik karaktert átszerkeszthetjük, az átszerkesztett karakterkészletet elmenthetjük, karakterkészleteket betölthetünk, vagy az átdefiniált karaktereket tartalmazó definíciókat önálló basic programként elmenthetjük. Mivel a mûveletek az összes karaktert érinthetik, a program nem tartalmaz saját karakterdefiníciókat, így a karakterek szerkesztésére alkalmas rács is másképp jelenik meg.
A program hangeffekteket is használ, amivel üdítõbbé (esetleg idegesítõvé?) teszi a munkát, felhasználói programok között ez üdítõ színfolt. De ha üdítõt viszünk a gép mellé és azzal véletlenül leöntjük gépünket, akkor a gépen is lesz egy üdítõ színfolt. A programban egy "szintetizátor" is el van rejtve.
A N=NEXT és R=RECALL mûveletnél nem input utasítással kéri be a karakter kódját, hanem a képernyõ tetején külön ablakban megjelenik az összes karakter, amibõl kiválaszthatjuk a nekünk megfelelõt. (A "hagyományõrzés" miatt a karakterszerkesztõ mezõ mellett is megtalálható néhány karakter, a képernyõ közepe táján, ahogy az eredeti programban.) A kurzort a botkormánnyal irányíthatjuk, space-szel választhatjuk ki a karaktert. A képernyõ közepe táján az ASCII: felirat alatt kijelzi az aktuális karakter kódját, amin a kurzor éppen áll.
A program rögtön azzal kezdõdik, hogy ki kell választanunk azt a karaktert, amit át kívánunk szerkeszteni. Miután a karaktert kiválasztottuk, bal oldalon lent a CURRENT ASCII felirat alatt megjelenik a karakter kódja és maga a karakter. Az N (Next) gombbal kiválaszthatjuk a következõ átszerkesztendõ karaktert. Az átszerkesztett karakterek természetesen a fenti ablakban is megváltoztatják alakjukat.
Az R (Recall) egy meglévõ karakter alakját hívja le, akárcsak az eredeti programban. Viszont itt nem a karakter kódját kell megadni, hanem a fenti ablakból választhatjuk ki a karaktert. Jobb oldalon lent a LAST RECALLED felirat alatt kijelzi a legutoljára lehívott karakter kódját és magát a karaktert.
A demokazettáról megszokott mûveletek mellett egy új mûvelet is megtalálható, amikrõl a jobb oldali felirat is tájékoztat: F=FILE MENU - belépés a file menübe. Itt karakterkészletet menthetünk, tölthetünk, vagy basic programként elmenthetjük az átrajzolt karakterek definícióit. A basic program mentése tokenizálatlan formában történik, ezt az IS-BASIC-be minden probléma nélkül betölthetjük, vagy saját programunkkal összemerge-elhetjük, vagy (akár PC-s) szövegszerkesztõben is megnézhetjük. Azok a karakterdefiníciók kerülnek mentésre, amiket a D (Define) gombbal átdefiniáltunk.
A képernyõ tetején az összes karaktert tartalmazó ablak alatti világoskék mezõben a felirat tájékoztat az aktuális mûveletrõl: átdefiniálandó karakter kiválasztása, lehívandó karakter kiválasztása, kiválasztott karakter szerkesztése, file menüben választás.
A programot ki lehet listázni és el lehet szörnyedni azon, hogyan oldottam meg.
A program nem csinál nagy ügyet a file kezelésbõl, hiba esetén leáll, és nem ellenõrzi, hogy a mentendõ fájl létezik-e már, felülírja. Továbbá, kicsit lassú az egész, ami különösen a karakterkészlet betöltésekor figyelhetõ meg. Zzzip biztos jót tenne a programnak, de akkor meg kezelhetetlenül gyors lenne.
Érdekes lenne megvalósítani, hogy basic programokban megkeresse a karakterdefiníciókat, és azok szerint definiálná át a karaktereket.
Egyes játékok a karakterkészletet külön fájlban tárolják, érdemes lenne ezek betöltésével is próbálkozni. A lényeg, hogy 1152 bájt hosszúnak kell lennie a fájlnak. A Sorcery régebbi (gyári) változatát megnéztem, ott sajnos egyik fájl sem 1152 bájt.
Néhány fura megoldást alkalmaztak az eredeti programban:
- Az alapértelmezett, 0-ás csatornát használja kiírásra, ami kicsit lassabb, mint a 102-es csatorna lett volna.
- A H=HORIZONTAL, V=VERTICAL nem mûködik helyesen. Feltételezhetõleg az lett volna a funkciójuk, hogy megfordítsák a karaktert függõleges ill. vízszintes tengelye körül. Inkább tükrözés ez, mint forgatás. (De lehet, hogy direkt van ez így?) Nem javítottam, akinek van kedve, kijavíthatja. Az I=INVERT helyesen mûködik.
- Kurzor mozgatásának figyelése (ne lépjen ki a szerkesztõterületrõl) hosszadalmasan van megoldva.
[ Guests cannot view attachments ]
[ Guests cannot view attachments ]