Enterprise Forever
:HUN => Programozás => BASIC => Topic started by: szipucsu on 2019.February.09. 21:16:05
-
Írtam nem olyan régen a fórumon, hogy milyen nehéz lehet soronként más videolapot használni. Tomato77 írta erre, hogy csak a PRINT #102,AT X,Y: helyett PRINT #X, AT 1,Y-t kell írni. Erre ráeszmélve neki is láttam a Hamika kiszínezésének. Akik voltak legutóbb a klubban, kérdezték is, mit csináltam a laptopon az emulátoron basicben - hát ezt kezdtem el akkor.
Zzzippel van lefordítva a program, így akár fergeteges sebességre gyorsulhat kukacunk. Gondoltam, ha már lúd, legyen kövér, tettem még a programba ezt-azt-amazt.
A menüben három nehézségi fokozat közül választhatunk. A könnyű fokozatban az idő múlásával párhuzamosan nem gyorsul a kukac. A közepes fokozatban ahogy telik az idő, a kukac is egyre gyorsabb. A nehéz fokozatban is, csak ott még nagyobb a gyorsulás.
A pályán különféle powerupok jelennek meg. A nagy T betűre hasonlítani próbáló a hátralevő időt duplázza vagy felezi meg véletlenszerűen. A többi poént nem lövöm le. Még annyit, hogy egyes powerupoknak akkor van pozitív hatása, ha a kígyó hossza minimum 16 karakter, különben negatívan hatnak. A sebesség az idő múlásától függetlenül is változtatható a powerupoknak köszönhetően.
Játék közben egyelőre két paletta váltakozik, az egyik a Treasure Cave első pályájának a palettája, pontosabban az első 4 színt használja belőle, a másik saját paletta. Pályánként három zene váltja egymást, a zenéket lehet akár módosítani, mást tenni be majd helyettük, ha lesz jobb ötlet.
Nagyjából késznek tűnik a program, még az összeszedendő bogyók eloszlását lehetne valahogy optimalizálni, mert néha pillanatok alatt teljesíteni lehet a pályát, mert nincsenek nagyon elszórva. Egyelőre 17 pálya van, még lehet bővíteni, vagy több zenét/palettát tenni be. Endi (vagy bárki), ha van ötleted más palettákra vagy a pályaelemek áttervezésére, ne fogd vissza magad!
Endi tervezett egyszer gracha betűket és számokat, azokat használja a program. Eszméletlen, hogy így a betűk is három színt tartalmazhatnak.
A hangeffektekkel sem spóroltam, van gyűrűmoduláció, szűrők, torzítások, kicsit sztereó is.
A mellékelt zip fájlban a source mappában van a basic program, és van még egy palettaszerkesztő is. A palettaszerkesztő kicsit kezdetleges, soronként beállíthatjuk a négy színt, a háttérszín kódját a Q és A billentyűkkel lehet állítani, az Y-ra pedig beírni egy színkódot. Ugyanígy működik a többi három palettaszínre a W, S, X, az E, D, C és az R, F, V billentyűk. Az "m" billentyűvel el lehet menteni a palettát fájlba. Úgy tárolja a program is a palettát, hogy először soronként a 27 háttérszín kódja van megadva, utána az 1. szín soronként és így tovább.
[attach=1]
[attach=2]
-
Jó lett, bár csak a 2. pályáig sikerült eljutnom :D
-
Ügyes és gyors.
-
Nagyon klassz lett! Nagyon feldobja, hogy ilyen színes és tök jók a hangok is.
-
jó az ötlet, hogy ilyen mozgalmas az egész, teli van a pálya mindenféle dologgal.
ami zavaró, hogy néha nem érzékeli a gombnyomást, illetve hogy lelassul-megáll néha egy pillanatra, és emiatt sokszor meghaltam.
a hangok, hangzás, zene tök jó, sokat dob rajta.
-
Azt elfelejtettem írni, hogy a tűzgombra kulturáltan kilép a programból, a fejlesztés miatt jó ez egyelőre.
Megy külső botkormánnyal is, attól függően, melyik tűzgombbal indítjuk.
Igen, az a megállás időnként nem biztos, hogy jó ötlet. Amikor a kapu kinyílik vagy bezáródik, direkt áll meg. De végülis ki lehet venni belőle. De ha kapunyitás után egyből felveszünk valamit, akkor a kapunyitás hangját megszakítja, esetleg nem vesszük észre, hogy nyitva a kapu.
Még a kígyó gerezdjein gondolkoztam, hogy máshogy nézzenek ki, függőleges vonal is legyen rajta. Próbálkoztam a Gracha szerkesztővel átszerkeszteni, de szerintem nem mutatott túl jól. Mellékelem a gracha szerkesztővel, a bal alsó karakter az.
[attach=1]
-
Ebben a változatban most nincs várakozás a kapu kinyitásakor és becsukásakor, vagy legalábbis jóval rövidebb. Ez is sok? FOR ciklussal adja ki a hangeffektet, ez visz el kis időt. Meg lehetne csinálni envelope-pal is, akkor nem telne semennyi időbe szinte, csak nem lenne olyan "szép" a hangja.
[attach=1]
[attach=2]
-
A különböző dolgok (számok, gomba, villogó-, nem villogó pötty) jelentenek valamit?
-
A különböző dolgok (számok, gomba, villogó-, nem villogó pötty) jelentenek valamit?
A számok akkorára állítják a sebességet, ahányas a szám (1 a leggyorsabb, 9 a leglassabb). Az alap 7-es sebesség NEM áll vissza még elhalálozás után sem, tehát észnél kell lenni, 1-es sebességen maradhat a kígyó akár, amíg game over nem lesz.
A gomba a felfelé néző kígyófej lenne, az a plusz élet.
A villogó pöttyöket össze kell gyűjteni, csak ezek adnak pontszámot. A nem villogó pötty újabb összeszedendő villogó pöttyöket szór el, látszólag nem előnyös, viszont ha több pötty van, többet is tudunk összeszedni, így előbb érjük el a 16 hosszt, aminek vannak előnyei.
Az az ágas-bogas valami 16 hossz alatt csak új bogyókat szór szét és bezárja a kaput, ha nyitva van. Viszont ha 16 a kígyó hossza legalább, akkor kinyitja a kaput, de az időt is csökkenti, szorult helyzetben így hagyhatjuk el életvesztés nélkül a szintet. (Azért nem lehetne bármilyen kicsi hosszal ezt, mert akkor ha rögtön az elején odarak egy ilyen powerupot, pillanatok alatt mehetnénk a következő szintre.)
Van a kis kártyához hasonlító bonus, az a sebességet változtatja meg, ha jól emlékszem, teljesen véletlenszerű értékre.
A T betűhöz hasonló cucc pedig az időt vagy felezi, vagy duplázza, véletlenszerűen. Ha 100 felett van időnk, akkor nem dupláz semmiképp.
A fűből kiálló kis bütyökszerű valami 16 hossz alatt azt okozza, hogy a kígyó falat húz maga után, nagyon előnytelen. 16 hossz felett pedig villogó bogyókat húz maga után, ez rendkívül jó. Ennek hatása bizonyos más powerupok felvételével szüntethető meg (ha jól emlékszem, a sebességet változtató powerupok felvételével), vagy ha az idő eléri a nullát, akkor is megszűnik.
Kicsit módosított verzió, csak a képernyőváltások lettek gyorsabbak:
[attach=1]
[attach=2]
Találtam egy hibát, a kaput nem zárja be néha, amikor kapunyitogató poweruppal nyitottuk ki, és letelt az idő, ezt ki kellene majd javítani.
Az utolsó (17.) pálya a Hamikából van, azon talán könnyíteni kéne, mert ezzel a sebességgel kegyetlen. Nem tudom, valaki eljutott-e már oda. Össze lehet szedni akár 20-30 életet is, úgy már el lehet kísérletezni az utolsó pályával is.
-
Végigjátszás demo, de most eléggé fáradt voltam, ez meg is látszik a végigjátszáson:
[attach=1]
-
Ne felejtsem el, majd a stop gombot le kell tiltani a zzzippelt változathoz.
-
Icipicit továbbfejlesztett változat: kis hibajavítások, az utolsó szint kicsit másmilyen lett (talán könnyebb), és van még egy szint, meg még egy kis apróság.
Időnként még mindig kicsit belassul, főleg a szintek elején, ennek okára nem jöttem rá. Mivel sokkal nagyobb sebességgel is lazán tud száguldani a kígyó, ezért sem értem, mi lassíthatja be. Talán valami hiba lehet a képletben, amivel kiszámolja az aktuális sebességből és a hátralevő időből, hogy mennyit várakozzon a lépések között?
[attach=1]
[attach=2]
-
Kicsit pofozgattam rajta. Oldalt ki lehet menni a pályán, a végén nagy csinnadrattával leszámolja a kukac hosszát a pontszámhoz. Talán még valamit módosítottam, már nem emlékszem.
Most másképp oldottam meg a lassítást, de így is néha belassul, főleg az elején kanyarodásnál, rejtély, miért.
[attach=1]
[attach=2]
-
A színeket kicsit módosítottam, beletettem még egy palettát, meg még ezt-azt. A legcukibb, amikor megfordítja a játékteret, és a "fel" lesz a "le", a "le" meg a "fel".
Kezd közelíteni a végleges változathoz.
Nem vagyok benne biztos, hogy a színek most teljesen jók, néha talán nem annyira látszik jól a kígyó a háttérben. Háromféle paletta váltja egymást pályánként. Ha valakinek nincs kedve több pályát teljesíteni, mellékelek demót is, az alapján lehet véleményt mondani a színekről. De ha nem jók a színek mégsem, akkor se hiszem, hogy módosítok rajtuk (hacsak Endi nem vállalja), így is a színezéssel ment a legtöbb idő.
Most 20 pálya van benne.
8-nál több életet nem lehet összeszedni. Ha mégis felveszünk még egyet, közepes nehézségnél 5-re ugrik vissza az életek száma. Ez talán kicsit túlzás, elég lenne, ha csak egy életet vonna le, vagy csak nem nőne az életek száma.
Az irányítással lehetne talán még csinálni valamit, nem mindig úgy reagál, ahogy kéne, de én már teljesen megszoktam így.
Legyen esetleg még pontszámtábla mentés és töltés?
[attach=1]
[attach=2]
[attach=3]
-
Elemeztem.
Látom a progi 27 sort a maximumot használ a display-ből.
Viszont csak 40 oszlopot a 42 helyett.
Esetleg ha javasolhatok, esztétikailag szebb.
4501 LET WIDE=1900:GOSUB 7030
4502 SET CHARACTER 0,0,0,0,0,0,0,0,0,0
Irányításnál javitási javaslat:
1290 CASE 4
...
1320 CASE 8
A DEF BEIR -ban inkább #1-24
5460 FOR I=1 TO 24
...
5491 PRINT #5,AT 1,14:" GAME OWER "
Köszi progit legalább tornáztatom az agyam.
-
Ez a végleges változat is lehet:
[attach=1]
[attach=2]
- Ferro73 javaslatait is beletettem, kivéve az irányítással kapcsolatosat. Azért nem CASE 4 és CASE 8 van, mert így ha nyomva tartjuk jobbra/balra az irányt, átlósan fel/le is lehet navigálni egy karakternyit.
- A game overnél esztétikusabb lett a képernyő.
- Eddig a szintek közötti váltásnál előbb a palettát váltotta át, utána törölte le a pályát, ez esztétikátlan volt.
- 16 bogyó összeszedése után a keret színe megváltozik. Ilyenkor egyes powerupoknak más (kedvezőbb) hatása van.
- Tűzgombra a basic változat visszatér basicbe, visszaállítva az alapbeállításokat. (A zzzippelt változat nem szakítható meg.)
- 8-nál nem lehet több életünk. Ha még egyet felveszünk, egy életet von le.
- Balra és fel más a kígyó feje, mint jobbra és le
- A 20. pályán lehet csalni.
- Az egyik háttérzenének kétféle hangzása lehet, véletlenszerűen dől el, melyik lesz.
- A bogyókat külön szórja el a képernyő egyik és másik felén, így egyenletesebben oszlanak el. A legalsó sorba, ahonnan a kukac indul, nem rak bogyót.
Az első pálya palettája kevesebbszer jön elő, mint a másik kettő, mert utólag tettem be, és sajnáltam a pályák régi palettáját feláldozni. Még talán a 10. és 20. pálya között 1-2-szer be lehetne tenni azt a palettát, de a korábbi nekem jobban tetszik azokon a pályákon. Így most 4-gyel kevesebbszer fordul elő az új paletta, mint valamelyik másik.
Amit még lehetne fejleszteni:
- Irányítás érzékenysége, de én már megszoktam így.
- Pontszámtábla töltés-mentés
- Több animált karakter játék közben (pl. kígyó gerezdjei, falak)
- Zene a menüben is
- Esetleg színek tökéletesítése
Meglepett, hogy az egész belefért a Zzzip-be, és nem volt túl sok címke.
-
Az irányításnál nem ugy írtad a progit ,hogy átlósan tudjon menni.
Ugyan is csak 4 irányt állítottál:
X+1, Y=0 le v jobb
X-1, Y=0 fel v bal
X=0, Y-1 bal v fel
X=0, Y+1 jobb v le
Ha mégis tud ilyet akkor valami fordítási baki van a zzzip-ben.
Mert nincs beprogramozva az átlohoz:
X+1 Y+1
X-1 Y+1
X+1 Y-1
X-1 Y-1
LIST 1200-
-
Az irányításnál nem ugy írtad a progit ,hogy átlósan tudjon menni.
Nem tud átlósan menni. Csak annyit tud, hogy ha jobbra megy és csak egy karaktert akarsz feljebb lépni és tovább menni jobbra, akkor a "jobbra" gombot nyomva tartva meg kell nyomni a "fel" gombot egy pillanatra, közben a jobbra gombot sem engedni el. Ez működik akkor is, ha balra mész éppen, és felfele vagy lefele akarsz menni egy karaktert.
Ha felfele vagy lefele megy a kígyó, akkor nem működik az egy karaktert jobbra/balra.
Jó lenne az átlós irány is? A Hamikában talán benne volt eredetileg. Azóta sokat bütyköltem azzal a játékkal és valamiért kivettem belőle az átlós irányt, talán még 25 évvel ezelőtt.
-
Hát ezért nem jó.
Vagy működik minden irányban vagy nem.
Szerintem.
-
Hamika sose ment átlósan, így ennek se kell.
-
Hamika sose ment átlósan, így ennek se kell.
Csak a 4 fő irány.
Lehetne nehezíteni, hogy csak 2 irány változtatás lenne.
Előre alapból megy.
Jobbra vagy balra fordítani lehessen persze csak a menetiránynak megfelelően.
Ez már nehezebb irányítás lenne.
-
Lehetne nehezíteni, hogy csak 2 irány változtatás lenne.
Attól tartok, a gyors sebesség miatt nem lenne jó, mert egy gombnyomásra akár tenne egy 270 fokos fordulatot és saját magába harapna. Ha nem lenne nagy sebesség, még talán jó is lenne úgy. De ha gondolod, megcsinálhatod, kíváncsi lennék.
A pontszámtábla mentés-töltés csak magnós gépnél ne működjön? Vagy működjön minden konfiguráción? (Nem tudom, ki olyan elszánt, hogy magnóval kimenti és betölti a legjobb eredményeket.) Emulátorban én file: eszközt használok és talán legjobb, ha minden konfigurációban működik.
-
Még egy hiba visszafelé is megy ez azonnali halál.
Ezt is orvosolni kell majd.
Elemzem, hogy megoldható-e
GET #X:A$ helyett SPEEK-et használni
-
Még egy hiba visszafelé is megy ez azonnali halál.
Ezt is orvosolni kell majd.
Ez direkt van így. Én életemben először a TVC Gombócfalójával találkoztam, mint kígyós játékkal, ott is így volt, úgy emlékszem. Azóta az furcsa nekem, ha nem így van. Szerintem logikus, ha saját magába harap, akkor annyi. De meg lehetne csinálni, hogy ne így legyen, ha mások szerint is úgy lenne jobb. Nekem ez eddig eszembe se jutott.
Elemzem, hogy megoldható-e
GET #X:A$ helyett SPEEK-et használni
Szerintem megoldható. Pár éve a Dot Collector remake-ben is így írtad át. De az sima karakteres képernyőn futott, nem ilyen grafikus karakteres képernyőn.
De itt a GET-tel is elég gyors. Nem akartam lelőni a poént, de vannak terveim más, bonyolultabb kígyós játékokra is, ott talán érdemesebb lenne SPEEK-et használni GET helyett. De itt is megnézheted, csak nyerhetünk vele.
-
Az idő számláló "TIME" nem lehetne lépés vagy mozgás számláló?
Vagy akkor bele kellene rakni egy a másodperc számlálót.
A DISPLAY-ek text 40 4 szin
Így lehet SPEEK-elni.
Kicsit bonyolultabb mivel mindegyik sornak külön címe van, de átültethető.
Egyellöre ennyi.
-
Az idő számláló "TIME" nem lehetne lépés vagy mozgás számláló?
A hátralevő időt mutatja, ami hol gyorsabban, hol lassabban telik. Ha eléri a nullát, több bogyót kell összeszedni. Ennyiből az idő a logikus. De TIME helyett lehetne éppen STEPS is odaírva.
A sebességet befolyásolja, hogy milyen powerupokat veszünk fel, és eleve is gyorsul a sebesség (easy fokozatnál nem), ahogy telik az idő.
-
A hátralevő időt mutatja, ami hol gyorsabban, hol lassabban telik. Ha eléri a nullát, több bogyót kell összeszedni. Ennyiből az idő a logikus. De TIME helyett lehetne éppen STEPS is odaírva.
A sebességet befolyásolja, hogy milyen powerupokat veszünk fel, és eleve is gyorsul a sebesség (easy fokozatnál nem), ahogy telik az idő.
Csak azért mert minden lépés után a TIME egyel kevesebb.
És ha 1 másodpercben 3-mat lép akkor 3-mal kevesebb az idő.
Leforditani maj neked kell.
Az elképzelés jó megvannak a speek elérések.
Már csak integrálni kell. De még frissíteni kell a BASIC tudásomat.
-
Csak azért mert minden lépés után a TIME egyel kevesebb.
És ha 1 másodpercben 3-mat lép akkor 3-mal kevesebb az idő.
Szerintem logikusabb, ha time van odaírva (mert ha az idő letelik, akkor történik valami általában egy játékban), de végülis mindegy. Tőlem lehet steps (lépések) is. A játékokban általában a TIME az konkrét időegységben jelzi ki az időt? Most ezt fejből nem tudom.
-
Mindegy nekem.
megcsináltam a SPEEK et
Működik de nem 100-as valami miatt. teszteld.
Van e gyorsulás?
-
SPEEK-eléshez ugye kiszeditek az aktuális videócímet az LPT-ből?
-
SPEEK-eléshez ugye kiszeditek az aktuális videócímet az LPT-ből?
Másképp hogyan lehetne pontosan megtudni 27 csatorna változóit "EXOS" kompatibilisen.
-
megcsináltam a SPEEK et
Működik de nem 100-as valami miatt. teszteld.
Van e gyorsulás?
A basic program megfelelően fut, kicsit próbálgattam. Ami nem olyan gyorsítva sem, mint zzzippelve, az azért van, mert a lassítás többet lassit basicben, ami a Zzziphez pedig ideális (elhalálozásnál). Az egyik powerupra megfelezi az összeszedendő bogyók számát és az időt is elosztja talán 3-mal, ilyenkor tört értékek jöhetnek ki, végtelen tizedesek, ezeket a basic rondán írja ki, de a Zzzip kerekíti. A gyorsulás is okénak tűnik.
Viszont Zzzippel nem fordul le, túl nagyok lehetnek a SPEEK-nél megadott értékek:
[attachimg=1]
Ezek a sorok a ludasak:
[attachimg=2]
A Zzzip ismertetője alapján (http://www.ep128.hu/Ep_Util/Zzzip.htm) 32767 lehet a legnagyobb megadható szám, itt meg 32768 is van, de a 49152 az első két hibásnak kiírt sorban még nagyobb.
-
Viszont Zzzippel nem fordul le, túl nagyok lehetnek a SPEEK-nél megadott értékek
Viszont ha az a cél, hogy legyen egy Zzzip nélkül, basicben is használható szép színes kígyós játék, akkor jó módszer lehet ez a SPEEK-elés. De ehhez pár dolgot ki kéne majd venni a programból, főleg a gyorsító-lassító powerupokat. Ha a várakozást kivesszük, ami a Zzzip miatt van, akkor basic-ben is elfogadható lehet a sebesség. Más gépekkel úgyse lehet ilyen színes kígyós játékot csinálni basicben. :D
Csináljunk egy direkt basic-es "turbó Hamikát"?
-
Esetleg meg lehetne próbálni a Zzziphez írt változatban áttérni a kritikus helyeken előjeles számok használatára. Például a
GETA(X)>=49152
helyett meg lehetne próbálni a
GETA(X)<0 AND GETA(X)>=-16384
kifejezést.
Ugyanígy a
GETA(X)<49152
helyett lehetne a
GETA(X)>=0 OR GETA(X)<-16384
kifejezéssel próbálkozni.
GETA(X)<32768
helyett jó a
GETA(X)<=32767 AND GETA(X)>=0
A 32767-nél nagyobb értékek kivonását meg egynél több lépésben kellene végrehajtani.
Más gépekkel úgyse lehet ilyen színes kígyós játékot csinálni basicben. :D
Ez biztos? Próbáltad már? Nem tudom, ezért kérdezem.
-
másként próbálom
már alakul.
-
Ez biztos? Próbáltad már? Nem tudom, ezért kérdezem.
Nem biztos. Nem tudom, más gépeknél el lehet-e érni basic-ből, hogy ennyi szín legyen a képernyőn. Eddig nem láttam, hogy más gépeknél próbálnák kihasználni a soronként változó palettát pl. színátmenetekhez, amit Endi emleget mindig.
-
Bakker van egy sor ami kettő szegmensen van jelen.
Ezért nem biztos, hogy gyorsabb lenne speek-el.
mivel ott másképp ellenőrizni.
De zzzip vel elképzelhető.
Még meglátom.
Alszom rá egyet.
addig meg kéne nézni így meg eszi a ZZZIP?
Köszi
-
addig meg kéne nézni így meg eszi a ZZZIP?
Megeszi!
[attach=1]
[attach=2]
Hogy gyorsabb lett-e, nem tudom, de látszólag működik, kicsit játszottam vele. Talán gyorsabban megeszi a bogyókat, a korábbi verzió mintha picit leállt volna arra a pillanatra. Csak a Zzzippel fordított verziót teszteltem. Lehet, hogy basicben jobban érzékelhető gyorsulás.
Az irányítást látom, módosítottad. Szerintem jobb volt, amíg reagált az átlós irányokra is, legalábbis én megszoktam úgy, és könnyebben lehetett 1 sornyit fel/le menni.
-
Nem biztos. Nem tudom, más gépeknél el lehet-e érni basic-ből, hogy ennyi szín legyen a képernyőn. Eddig nem láttam, hogy más gépeknél próbálnák kihasználni a soronként változó palettát pl. színátmenetekhez, amit Endi emleget mindig.
A Plus4world fórumába írta be valaki az alábbi BASIC programot10 SCNCLR
20 FORI=12*256TO12*256+999:POKEI,160:NEXT
30 Z=0
40 FORY=8*256TO8*256+15*40STEP40
50 FORX=0TO7
60 POKEY+X,X*16+Z
70 NEXTX
80 Z=Z+1
90 NEXTY
100 GETKEYA$:SCNCLR
Ha bekalapálod István plus4emu-jába és futtatod, akkor elvileg megjeleníti a képernyőn a pluszi teljes palettáját. Ebből az egyszerű eszemmel azt gondolnám, hogy igenis lehetséges sokszínű játékok írása más gépen, bár nyilván vannak az egyes gépekre jellemző korlátok, amiket nem lehet átlépni. Mondjuk az endi által emlegetett színátmenetek valószínűleg nehezen, vagy egyáltalán nem megvalósítható részletek.
-
A Plus4world fórumába írta be valaki az alábbi BASIC programot
Nekem ezt rajzolta ki:
[attachimg=1]
Hogy ezeket a színeket lehet-e úgy variálni, hogy ennyire színes legyen a pálya, mint az Entersnake-ben, nem tudom. Azt sem, hogy egy karakteren belül lehet-e több színt használni. A Squirm játékra visszagondolva ott is elég sok szín van a képernyőn, de nem ennyi. Igaz, ez már kicsit túlzás, amiket mi (én) művelünk a soronként változó paletta kihasználásának jegyében.
-
A harmadik verzió sem megfelelő
Megkezdem a 4.-et
Az irányítást vissza állíthatód.
Az még nem bolygattam meg.
Még a SPEEK-el bajlodom.
-
Na elméletileg jó a speek
a finalxx.bas ban csak azt módosítottam ami ehhez kellet minden más maradt.
2 sor REM
1+4+2+5
Össz 12 új sor
ZZZIP -elni kellene tesztelni majd folytatni az egyebeket.
file tartalmak
es42.bas speekelt
es42t.bas speekelt + timer
est.bat eredeti + timer
-
es42.bas speekelt
es42t.bas speekelt + timer
est.bas eredeti + timer
Mindegyik lefordul Zzzippel, de csak az est.bas működik. A másik kettőnél indulás után rögtön elhalálozik. Talán olyan karaktert azonosít be a kukac pozíciójában, ami halálos. Viszont Zzzip nélkül is megnéztem, ott a basic változat nem csinálja ezt, érdekes. Nem lehet, hogy 32767-nél nagyobb érték jön ki, és a Zzzip azt kezeli egy teljesen más (negatív előjelű) számként?
Az es42t lefordítva például ilyen:
[attach=1]
-
Most próbáld lefordítani.
most nincs 32767 nél nagyobb érték.
-
Most próbáld lefordítani.
Látszólag működik:
[attach=1]
[attach=2]
-
es43.bas.zip
Ezt kicsit továbbfejlesztettem, most a személyi igazolványtól is megfordul a képernyő, ha 16-nál kevesebb bogyót szedtünk még csak össze.
[attach=1]
Snaphot nincs, mert úgyse tölti le senki. (Az előzőt is én töltöttem le egyszer.)
-
Ebben van már pontszámtábla töltés és mentés:
[attach=1]
Töltésnél ilyen a WHEN blokk, hogy a töltéshibát kiküszöbölje:
[attachimg=2]
És így kezeli:
[attachimg=3]
Ez így jó? Amikor nem találta a fájlt, akkor a beépített toplista jelent meg, szóval látszólag működik. Nem tudom, az egyéb betöltéssel kapcsolatos hibákat mennyire kezeli.
Névbeírás után menti a toplistát mindig, de azt nem tettem hibakezelő eljárásba.
Lehetne ezt ennél szakszerűbben megcsinálni?
-
Ha jól látom ez csak a pont számokat olvassa be.
Mi van a nevekkel?
-
Ha jól látom ez csak a pont számokat olvassa be.
Mi van a nevekkel?
Egy stringbe van összefűzve a pontszám és a nevek. Csak kiírásnál szétszedve írja ki. Nézd meg az entsnak.hi fájlt, jegyzettömbbel is simán megnyitható, mint egy txt fájl. Benne van a pontszám és a nevek. Az első 5 karakter a pontszám, elején nullákkal. A többi karakter a név, a végén pontokkal. Minden ilyen stringnek 15 karakter hosszúnak kell lennie. Ez a sorbarendezés miatt fontos, mert ha nem egyforma hosszúak, akkor a rövidebbek kerülnek előre.
Azt meg bonyolultabb lett volna megcsinálni, hogy külön tárolja a pontszámot és külön a nevet, mert ha a pontszámot sorba rendezi, hogy a jó eredmények legyenek elől, akkor a hozzájuk tartozó neveknek is mellettük kell maradnia, azt meg macerás lett volna megcsinálni, egyszerűbb így.
-
Ha maradt volna a név elöl az sem gond.
490 LET MYN=VAL(TOP$(10)(16:20)):...
Így maradhatott volna név elől szám utána.
És már csak PRINT TOP$(X) nem kell újra bontogatni újra összetenni.
-
Ha maradt volna a név elöl az sem gond.
490 LET MYN=VAL(TOP$(10)(16:20)):...
Ez igaz. Eredetileg sima karakteres képernyőre (TEXT 40) íródott az egész. Ott azért is volt jó szétszedni, mert külön a pontszámot más színnel lehetett kiírni.
Ahogy most van, így is működik, ennyiből nem variálnám már. Kivéve, ha helyet lehet megspórolni vele. Ahogy emlékszem fejből, nem kell több sorszám hozzá most sem, mert egy sorba van összezsúfolva több PRINT utasítás. Vagy lehet ennek jelentősége, pl. múlhat ezen nagyobb programnál, hogy emiatt nem fordítja le a Zzzip, mert túl nagy a program? Amennyire tudom, a Zzzipnek a túl sok változónév és a túl sok sorszám az, ami betehet. Ezért is igyekeztem az átmeneti változóknak ugyanazt a nevet adni, pl. van az I és van a MITYI, amik ilyen változók.
-
Akár hogyan nézem a név és a szám is azonos színű.
Bár nekem a es433.bas rögtön meghal direkt?
A DEF FOCIM ben 4860-4820 hiányzik esetleg 2 db SET INK x utasítás
FOR MITYI=1 TO 9
PRINT #MITYI+4:TAB(8);MITYI;TAB (11);TOP$(MITYI)(6:20);TAB(26);TOP$(MITYI)(1:5)
NEXT
PRINT #MITYI+4:TAB(7);MITYI;TAB (11);TOP$(MITYI)(6:20);TAB(26);TOP$(MITYI)(1:5)
Ö a mostani javaslat
Amúgy meg
FOR MITYI=1 TO 9
PRINT #MITYI+4:TAB(8);MITYI;TAB (11);TOP$(MITYI)
NEXT
PRINT #MITYI+4:TAB(7);MITYI;TAB (11);TOP$(MITYI)
-
Akár hogyan nézem a név és a szám is azonos színű.
Igen, azonos színű. Régen a sima karakteres TEXT 40-es módban írtam játékot (lásd Hungry Creature, vagy akár a Dot collector turbo edition), ott külön színe volt a névnek és a pontszámnak. Ahhoz a videomódhoz írtam ezt a toplistás megoldást, nem írtam újra a gracha módhoz, csak felhasználtam ezt a régi programrészt.
Bár nekem a es433.bas rögtön meghal direkt?
Nekem nem hal meg, rendesen működik a basic és a zzzippelt változat is. Milyen konfigurációt használsz? Nálam exos 2.1, basic 2.1 és epfileio.rom van bent.
A többit, amit írtál, majd megnézem.
-
Újra indítottam az emut leellenőriztem az es42.bas működik.
Lás csodát most ez is.
A "Dot collector turbo edition"-ná is szerintem írtam, hogy át kellene írkálni jó pár dolgot.
Ezek szerint a sorba rendezőt is kellene.
-
Ezek szerint a sorba rendezőt is kellene.
Baj nem lehet belőle, ha normálisabban van megcsinálva. :D
Át akarod írni a sorba rendezőt? Átírhatod.
-
A jelenlegi rendező 329 bájt és 12 sor (9 sor)
ezt 186 bájt és 7 sorra (5 sor) redukáltam
Bár nem tudom a zzzip elfogadja-e lehet felkuszhat 200 bájtra is.
demó progi:
-
ezt 186 bájt és 7 sorra (5 sor) redukáltam
Hm, ez jóval rövidebb, mint az eredeti. Mindenféle pontszámokkal működik, helyesen rendez sorba? A 290-350 sorok meg is oldják a rendezést? Ügyes!
Akkor nincs is szükség a korábbi VALT, SZAM, MYX változókra?
Megpróbálom kicserélni a régit erre, de lehet, csak holnap. (6 perc nem elég rá. :D )
-
Szerintem felesleges még további memória szabadul fel plusz a NUMERIC bejegyzés is kevesebb.
-
A 290-350 sorok meg is oldják a rendezést?
Azt nem.
De a lista rendezett.
Program szerint ha 10. helyezett pontszámánál nagyobb akkor kerül be a listába.
-
Program szerint ha 10. helyezett pontszámánál nagyobb akkor kerül be a listába.
Tényleg, ez jó ötlet! Felesleges sorba rendezni az egészet, mert úgyis rendezett. Elég csak az új pontszámot belőni az utolsó helyére, ha annál nagyobb, és csak azt rendezni a megfelelő helyre.
-
Felesleges sorba rendezni az egészet, mert úgyis rendezett.
Amúgy is lusta vagyok olyan sok kódot meg írni.
Mennyivel egyszerűbb pár tiz sort megírni mint több százat.
-
A sorbarendezős részt lecseréltem az újra. A toplistát kiíró rész is egyszerűbb lett így.
Majd még talán próbálok zenét betenni a főmenübe, meg talán az életek elfogyásakor és a játék teljesítésekor is lehetne valami zene, csak nem tudom, belefér-e még a zzzippelhető változat méreteibe.
[attach=1]
-
Hol a határ ZZZIP nél?
A felesleges sorokat ki szedhetők majd.
Esetleg rendezni kellene.
Például:
a DEF ... rutinokat a program végére helyezni
a DATA sorokat eléjük
vagyis:
INI rész
Főprogram
DATA rész
DEF ... rész
-
Javaslatok:
a DEF FOCIM-ben:
SET BORDER,0
áthelyezése 300-400 sorba úgyis csak egyszer használod.
a DO ... LOOP sorokba be lehetne rakni zenét.
Esetleg a kukacfejeket változtatni másodpercenként?
A 4900,4910,4920 sorokban a DIF$="..." mi célt szolgál?
Esetleg a sorban levő PRINT-nél lehetne még használni.
Így helyet spórolhatunk. PRINT #16,AT 1,18:DIF$
-
a DEF ... rutinokat a program végére helyezni
a DATA sorokat eléjük
A Hetedhéten túl című könyvben is meglepő módon a DEF blokkok egyik fele a főprogram előtt van, a másik fele meg utána. Nem tudom, miért.
SET BORDER 0
áthelyezése 300-400 sorba úgyis csak egyszer használod.
Játék közben is változik a keret színe, ha megvan a 16 bogyó összeszedése. Később visszaáll 0-ra a keret színe. Ezért kell mindig 0-ra állítani a menühöz, mert a játék teljesítése vagy az összes élet elvesztése után is vissza kell állítani.
A 4900,4910,4920 sorokban a DIF$="..." mi célt szolgál?
Három nehézségi fokozatot lehet állítani. Az elsőnél nem gyorsul a kukac, ahogy fogy az idő. A második fokozatban gyorsul (ez az alapbeállítás). Nehéznél még gyorsabban gyorsul, ha jól emlékszem.
A DIF$-ba írja a nehézségi fokozat nevét. Ez azért jó, mert játék közben is ott van a játéktér felett. Könnyebb nehézségi fokozaton kevesebb pontot kapunk egy bogyó elfogyasztásáért, a legnehezebb fokozatban meg a legtöbbet. (A DIF változó értékét is figyelembe veszi bogyó megevésekor a pontszám növelésénél.)
Esetleg a sorban levő PRINT-nél lehetne még használni.
Így helyet spórolhatunk. PRINT #16,AT 1,18:DIF$
Ennek lehet jelentősége? Pl. "EASY " helyett DiF$-t használni? Az a baj, a menüben a szóközök a végén vannak, a játékban az elején. Különben a játékban nem lenne teljesen középen, a menüben meg elé rakná a szóközöket, ami ronda lenne. A végükre azért kell szóköz, mert különben ott maradna a "MEDIUM" utolsó két betűje az EASY és a HARD után.
-
Ennek lehet jelentősége? Pl. "EASY " helyett DiF$-t használni? Az a baj, a menüben a szóközök a végén vannak, a játékban az elején. Különben a játékban nem lenne teljesen középen, a menüben meg elé rakná a szóközöket, ami ronda lenne. A végükre azért kell szóköz, mert különben ott maradna a "MEDIUM" utolsó két betűje az EASY és a HARD után.
És ha
" EASY "
"MEDIUM"
" HARD "
Használnál ?
Akár az "easy" és a "hard" nál PRINT AT 1,17:
Ez nem szőrszál hasogatás. Felőlem maradhat. Ezek csak javaslatok. Építő kritikák.
A Mester-től sem az alapokat kapod.
-
Ez nem szőrszál hasogatás.
Nincs ezzel gond, jó ezekre is kitérni. Megcsináltam, bár nem pont olyan lett, mint gondoltam, de nincs igazán jelentősége (beljebb rakja a menüben az easy-t és a hard-ot, de kb. mindegy).
[attach=1]
A program elején van sok NUMERIC sor. Azokat nem lenne érdemes egyetlen sorba összevonni? Meg egy DIM-es sort is betettél:
360 DIM GETAN(1 TO 27)
Itt szerintem:
360 DIM GETAN(27)
is jó lenne. Vagy még jobb, valamelyik NUMERIC sor végére tenni be, hogy GETAN(1 to 27). Úgy tudom, a DIM és a NUMERIC helyettesíthetők egymással.
A STRING soroknak külön kell maradniuk, mert az elejükön mindegyiknek más hossz van megadva (Pl. STRING *6), és ezt csak soronként lehet, ahogy tudom. Még a sorbarendezős programodban (rendez.bas) volt egy sor: DIM TOP$(10). Ehelyett célszerűbb lenne: STRING *20 TOP$(1 to 10). Így eleve meghatározza, hogy csak 20 karakter lehet a hossza, és ezzel helyet lehet megtakarítani állítólag, mert alapból 256 karaktert foglalna le egy szöveges változó bedobásakor.
-
Ez a sor így jó lesz?
6230 IF PONT>=VAL(TOP$(10)(16:20)) THEN
Vagyis a játék végén, ha az elért pontszám nagyobb vagy egyenlő a toplista legutolsó pontszámával, akkor... (akkor lesz névbeírás és sorba rendezés, különben átugorja azt a részt).
-
Ez a sor így jó lesz?
6230 IF PONT>=VAL(TOP$(10)(16:20)) THEN
Vagyis a játék végén, ha az elért pontszám nagyobb vagy egyenlő a toplista legutolsó pontszámával, akkor... (akkor lesz névbeírás és sorba rendezés, különben átugorja azt a részt).
Nem
6230 IF PONT>VAL(TOP$(10)(16:20)) THEN
Nagyobbnak kell lennie.
mert csak így előzheti meg a 10. helyezettet.
-
Nagyobbnak kell lennie.
mert csak így előzheti meg a 10. helyezettet.
Ezen én is gondolkoztam. Szerintem általában a játékok is eltérően kezelik ezt. Ha pont ugyanannyi pontszámot ér el valaki, mint egy korábbi játékos, akkor melyik kerül be a toplistába? Mindkét játékost megilletné. De hirtelen belegondolva logikusabbnak tűnik, amit írsz.
-
Logikus.
Ha ugyan annyit érsz el akkor csak beállsz a sorba aki előbb érte el az áll a sor elején.
Akkor hogy oldanád meg a top 10. listát lenn 2 1. helyezett 4 db 2. 1db 3. ......?
-
Akkor hogy oldanád meg a top 10. listát lenn 2 1. helyezett 4 db 2. 1db 3. ......?
Igen, ez szerintem örök probléma, szerencsére nem túl gyakori. Úgy kell a programot megírni, hogy sokszor adjon pontszámot, de ne sokat, így kisebb az esély, hogy többen érnek el ugyanannyi pontszámot. De ha mondjuk az utolsó 4 játékosnak a toplistában mindnek ugyanannyi a pontszáma, és a következő játékos is pont annyit ér el, akkor nem igazságos, hogy nem kerül be, de erre nincs jó megoldás. Meg az sem igazságos, hogy ha az 1. és a 2. helyezettnek is ugyanannyi a pontszáma, mégis csak az egyik lehet az 1. helyen. De ezzel nem nagyon lehet mit kezdeni.
Valamelyik játékban az alapból beépített pontszámok is olyan magasak, hogy eleve a pontszámtáblára felkerülni is nehéz. Ennél még mindig sokkal jobb, ahogy mi csináltuk meg itt. :D
-
Nem baj ha azonos a pont szám.
Azért top 10 mert nem az első 10. helyezést ítja ki.
Hanem az elő 10 helyezettet ebbe bele tartozik a holt verseny
Így voltam budapesti matematikai versenyen a 22. pont helyen végeztem de csak 72-73 voltam az idő rendezésben.
-
Ez a sor így jó lesz?
6230 IF PONT>=VAL(TOP$(10)(16:20)) THEN
Vagyis a játék végén, ha az elért pontszám nagyobb vagy egyenlő a toplista legutolsó pontszámával, akkor... (akkor lesz névbeírás és sorba rendezés, különben átugorja azt a részt).
6230 IF PONT>VAL(TOP$(10)(16:20)) THEN
És akkor az MYN változó már nem is kell.
Meg akkor a MITY$ változó is felesleges, helyette A$ használhatsz 460-470 sor
Nem találkoztam máshol vele.
-
Kivettem belőle a MYN, MITYI$ változót, meg amik már nem kellettek, meg kicsit szépítettem rajta. A képernyőtörlés érdekesebb lett kicsit, pl. a pályák végén.
[attach=1]
-
valami labirintus játékot csináljatok mert én azt szeretem.
ha platform játék, az még jobb :)
-
Kivettem belőle a MYN, MITYI$ változót, meg amik már nem kellettek, meg kicsit szépítettem rajta. A képernyőtörlés érdekesebb lett kicsit, pl. a pályák végén.
(Attachment Link)
Javaslatok:
1580 előbbre
290 az írtad, hogy elég a *20. ?
320 KUKACX(1 TO 25) ,KUKACY(1 TO 42) esetleg még két oszlopnyi szélesség.
6570,2030,2040,2070,2080 törölni
6440 csak 10 karakter lehet a név? akár 14 is lehetne plusz még a szóközt is alkalmazhatnád.
450-480 sorok 8160 és 8170 közé, elég akkor feltölteni ha nem lehet beolvasni a fájlt.
A CALL FELAD lehetne a EXT "BASIC"
-
Javaslatok:
1580 előbbre
Ez a Hamikában a Hetedhéten túl könyvben is itt volt, én is csodálkoztam rajta. Miért raknak egy NUMERIC utasítást a DEF blokk elejére, miért nem a program elejére teszik? Rejtély... Most az elejére raktam és ugyanúgy működik.
290 az írtad, hogy elég a *20. ?
Fejből írtam. Nem tudom fejből pontosan, a név milyen hosszú lehet és maga a string, amiben a név és a pontszám van együtt.
320 KUKACX(1 TO 25) ,KUKACY(1 TO 42) esetleg még két oszlopnyi szélesség.
Ez nem jó, maradnia kell mindkettőnek úgy, hogy 1 TO 79. Ez a kukac maximális hosszát jelenti karakterekben, nem a képernyő méretét. Bár nem tudom, miért pont 79-et adtak meg eredetileg a Hamikában, nem olyan kerek szám. Lehetne a kígyó maximális hossza 200 karakter is akár, nem? Legfeljebb a játékos kimenekül a szobából a nagy vipera miatt. Most egyelőre 99-re megnöveltem a kígyó maximális hosszát, így is működik a program.
6570,2030,2040,2070,2080 törölni
Megvan. De ahol a PRINT #akármennyi és GET #akármennyi van, azt meghagytam ! után, hogy ha később még valami más kígyós játékot is akarok ebből még csinálni, tudjam, hogy mit csinálnak a misztikus SPEEK cuccok.
6440 csak 10 karakter lehet a név? akár 14 is lehetne plusz még a szóközt is alkalmazhatnád.
Lehet. De nem tudom, mire jó olyan nagyon hosszú nevet adni meg. Lehetnének számok és szóközök is a névben. De fontos, hogy 10 karakternél is hosszabb lehessen a név? Egyes játékokban 10 karakternél is rövidebb lehet csak.
450-480 sorok 8160 és 8170 közé, elég akkor feltölteni ha nem lehet beolvasni a fájlt.
Igaz, át is tettem oda. Előtte is tudtam ezt, amit írtál, de gondoltam, úgyis működik így is. Viszont, ha már úgyis fájlból tölti be a toplistát, akkor nem lenne célszerűbb a beépített neveket teljesen törölni? Például mindegyik név lenne WRIGGLER.......00005, nem kellenének DATA sorok sem a neveknek. Ha nem olvasható be a toplista fájlból, akkor lenne ez.
A CALL FELAD lehetne a EXT "BASIC"
Az nem jó. Azért van a FELAD, hogy ha basicben tesztelgetem a programot, a SPACE-szel vissza tudjak lépni könnyen a szerkesztéshez (eredeti fontkészlet visszaállítása, hogy el is lehessen olvasni, videolapok bezárása, stb.) A FELAD eljárást teljesen törölni is lehetne majd, ha teljesen kész lesz a program.
[attach=1]
-
Igaz, át is tettem oda. Előtte is tudtam ezt, amit írtál, de gondoltam, úgyis működik így is. Viszont, ha már úgyis fájlból tölti be a toplistát, akkor nem lenne célszerűbb a beépített neveket teljesen törölni? Például mindegyik név lenne WRIGGLER.......00005, nem kellenének DATA sorok sem a neveknek. Ha nem olvasható be a toplista fájlból, akkor lenne ez.
(Attachment Link)
Most van így a progi ha nem olvasható a fájl akkor tölti fel a DATAkbol.
Esetleg mind a 10 helyre NEV$="WRIGGLER.......00005" úgy is 10 játék után felül íródik.
-
Most van így a progi ha nem olvasható a fájl akkor tölti fel a DATAkbol.
Igen.
Esetleg mind a 10 helyre NEV$="WRIGGLER.......00005" úgy is 10 játék után felül íródik.
Én is erre gondoltam. Majd ezt is megcsinálom, meg hogy számokat és szóközöket is elfogadjon névbeírásnál, és lehessen 14 karakter hosszú is a név, mert belefér.
A kukac maximális hosszát esetleg még jobban meg lehetne növelni. Csak vannak a végefelé olyan pályák, ahol a teljesítés emiatt sokkal nehezebb lehet. Én sokszor játszottam úgy, hogy a maximális 79 karakternyi hosszal száguldoztam körbe-körbe a képernyőn, de annál hosszabb kukac már húzós lehet.
-
Az nem jó. Azért van a FELAD, hogy ha basicben tesztelgetem a programot, a SPACE-szel vissza tudjak lépni könnyen a szerkesztéshez (eredeti fontkészlet visszaállítása, hogy el is lehessen olvasni, videolapok bezárása, stb.) A FELAD eljárást teljesen törölni is lehetne majd, ha teljesen kész lesz a program.
Én is úgy gondoltam ha kész a program.
Bár én mindig STOP-olok.
Csinálhatnál egy ~6000 REM-------DEF XXX
És ami CALL rutint rendben találsz oda helyezed.
Így nem lesz össze vissza.
De lehet egyéniség is.
-
És ami CALL rutint rendben találsz oda helyezed.
Így nem lesz össze vissza.
Utólag már sok munka áthelyezni a program elejéről a DEF blokkokat a program végére, a sorszámok átírása miatt. Én sokszor txt-be kilistázom a programot és úgy szerkesztem, de még így is bonyolult lenne. Ha nem lennének sorszámok, akkor copy-paste módszerrel pillanatok alatt meglenne.
A Hetedhéten túl könyvben volt így a program, ők csinálták így! :D Na, nem mintha én jobban meg tudtam volna csinálni az alapokat.
-
Ha lesz egy fix változat meg próbálok javítani, rendezni egy kicsit esetleg.
Javítottam a BEIR rutinba való programon. "Hasznos kis BASIC programok"
-
Utólag már sok munka áthelyezni a program elejéről a DEF blokkokat a program végére, a sorszámok átírása miatt.
RENUMBER parancs erre való!
Tudsz blokkot is átsorszámozni, vagy megadott tartományt.
-
RENUMBER parancs erre való!
Tudsz blokkot is átsorszámozni, vagy megadott tartományt.
igen, de tartomány áthelyezést nem
-
Megcsináltam, hogy szóközt és számokat is elfogadjon a névbeírós rész, és 14 karakterből is állhat a név. Névbeírásnál van ott egy "kurzor" is. Volt egy kis bonyodalom, mert kiderült, hogy ha szóközzel kezdem a nevet, akkor azt kimenti a toplistába, de betöltésnél lehagyja az elejéről a szóközöket, így rövidebb lesz az egész név. Úgy oldottam meg, hogy az első karakternek nem fogad el szóközt.
Megnöveltem a kígyó maximális hosszát. Ha jól emlékszem, most max. 139 karakter hosszú lehet. Apró bökkenő, hogy amikor a pálya teljesítésekor kitessékeli azt a hatalmas kígyót a kapun, akkor az aláfestő hangeffekt nem maradhat a régi, mert egyre magasabb hangok jöttek, és ugye csak 0 és 127 között lehet a PITCH érték, a 139 pedig több ennél. Így azt találtam ki, hogy nem egyre magasodnak a hangok, hanem a kígyó aktuális gerezdjének a függőleges és vízszintes koordinátája adja a hang aktuális magasságát. Lehet, hogy az előző hangeffekt jobb volt, de azt hosszú kígyónál nem lehet megoldani. Vagy olyasmit lehetne, hogy a legmagasabb hang szól már végig, ha nagyon hosszú volt a kígyó. Kérdezném, melyik lenne a jobb, vagy esetleg egy teljesen más módszerrel adja a hangeffektet a pálya végén.
-
Olyasmit lehet ?
127/139 ~.9 PITCH .9*kukac hossz
-
127/139 ~.9 PITCH .9*kukac hossz
Az .9 törtet a Zzzip 1-re kerekíti.
De ha 1 PITCH értékről indulna és úgy haladna a 127 felé, az se lenne a legjobb, mert a 20 alatti PITCH értékek nem szólnak szépen, rövid kukacnál (ami gyakoribb) pedig ezek szólnának, mert először ezek szólnak.
-
Az .9 törtet a Zzzip 1-re kerekíti.
De ha 1 PITCH értékről indulna és úgy haladna a 127 felé, az se lenne a legjobb, mert a 20 alatti PITCH értékek nem szólnak szépen, rövid kukacnál (ami gyakoribb) pedig ezek szólnának, mert először ezek szólnak.
PITCH (9*kukac hossz)/10
(127-20)/139 ~.77
PITCH ((77*kukac hossz)/100)+20
-
- Most maximum 200 karakter lehet a kígyó hossza, talán elég lesz minden megszállott játékosnak is. Egyszer végigvittem így is, tehát teljesíthető a játék.
- Tettem be egyszerű zenét az összes élet elfogyása után ill. az összes pálya teljesítése után. (Ugyanaz, ami játék közben szól, csak más hangzással.)
- Névbeírásnál a gombok lenyomását vicces hangeffektek kísérik.
- Még a menübe lehetne zenét tenni és szerintem kész is lenne.
- Az irányítást én már megszoktam, hogy nem úgy és akkor reagál a gombokra, de ha ez zavaró, ezzel lenne érdemes kezdeni valamit. Hogy mit, arra ötletem nincs.
- A toplistába lehetne érdekesebb neveket kitalálni, pl. Enterprise-szal kapcsolatosakat. A végleges verzió majd betöltés közben ki fogja írni mindenki nevét, aki valahogy segített a program írásában, javításában.
[attach=1]
-
- Az irányítást én már megszoktam, hogy nem úgy és akkor reagál a gombokra, de ha ez zavaró, ezzel lenne érdemes kezdeni valamit. Hogy mit, arra ötletem nincs.
A baj az időzítés.
Mármint a lassítás.
Az 1480-1530 sort helyed át 1491 és 1499 közé.
Akár RENAMBER is.
És lás csodát.
-
Az 1480-1530 sort helyed át 1491 és 1499 közé.
Ma már nem foglalkozom vele, vasárnap csak késő délután jutok hozzá. Ha van kedved, megcsinálhatod addig.
-
Ma már nem foglalkozom vele, vasárnap csak késő délután jutok hozzá. Ha van kedved, megcsinálhatod addig.
Be írtam. Plusz előre vittem a programot ás pár DEF et hátra már rendezettebb a program.
Teszteld. Ha jónak tartod akkor maradhat fővonalnak.
-
Egy ilyesmihez mit szólnál?
A BEIR rutinban.
Csak az ötletet nézd ne a kialakítást.
-
Egy ilyesmihez mit szólnál?
A BEIR rutinban.
Jó ez is. Ha Isten is úgy akarja, lesznek még színes basic játékok, azokban is lehet toplista és névbeírás, kicsit más, mint ebben a játékban, de az alapja ugyanaz lenne.
Ami még szerintem fontos, a kurzor, sokkal kulturáltabban néz ki névbeírásnál, ha ott van. A legutóbb feltöltött kígyós verziómban (439) már az is volt. Karakteres animmal villogósra is meg lehene csinálni, vagy egyéb animánciót rakni bele.
Még egy lehetőség, a key click-et bekapcsolni, és alig hallhatóan egy másik csatornán megszólaltatni egy hosszú hangot, ami gyűrűmodulál/szűrőzik a key click-es csatornával.
A 440-es kukacos verziód még nem néztem meg, talán majd most.
-
Én a zenére gondoltam beírás közben.
-
Én a zenére gondoltam beírás közben.
Persze, értettem. Most maradnék a vicces hangeffekteknél névbeírás közben, majd egy másik játékban lehetne a zenés változatot használni.
-
A 440-es kukacos verziód még nem néztem meg, talán majd most.
Így irányíthatóbb?
-
Így irányíthatóbb?
Na, most néztem meg. Számomra nincs túl nagy különbség a másikhoz képest, kicsit más, de most szokatlan, mert az előzőt szoktam meg. Nem tudom, másoknak milyen most:
[attach=1]
Még az jutott eszembe, hogy ahol ez a várakozás van (a WADE változóval), ott a várakozás közben is figyelhetné a joystickot. Csak ez megnyújtaná a várakozást is, újra kéne akkor írni, hogy mennyit várakozzon egyes értékeknél. Erről mit gondolsz?
-
Szerintem nem kell.
Az volt a baj, hogy mikor a kukacfejet ki írod rögtön leellenőrzi a joyt a következő irányt és utána várakozik.Ilyenkor már nem változtathatsz irányt.
Vagyis már a kukac lépése/kiírása/ előtt el kell döntened mi lesz a "2." lépése. Mert nem tudod, hogy elfogadta-e ez előző irányt.
Most kiírja a kukacfejét várakozik majd ellenőrzi a joyt és előröl.
-
Az volt a baj, hogy mikor a kukacfejet ki írod rögtön leellenőrzi a joyt a következő irányt és utána várakozik.
Azért volt így eredetileg, mert a fejet hamar felülírná a következő karakter, a kígyó gerezdje. Ha van egy kis várakozás ott, akkor hosszabb ideig látható a feje. De még a basic (nem zzzippelt) programhoz volt így.
-
Akkor valamit rosszul terveztél.
Itt az IRANY rutinban
GET JOY
WAIT
most
WAIT
GET JOY
Ennyi volt a bibi.
Minden maradt a megszokott időben.
->PRINT FEJ -> GET JOY -> WAIT ->
->PRINT FEJ -> WAIT -> GET JOY ->
-
A programban ez a rész az, amikor életvesztéskor összeomlik a kukac:
5070 !SET CHARACTER 0,96,240,240,246,246,246,240,240,96 ! gerezd
5080 !LET WADE=1900:GOSUB 7030
5090 SET CHARACTER 0,0,96,240,240,246,246,246,240,240
5100 LET WADE=1900:GOSUB 8080
5110 SET CHARACTER 0,0,0,96,240,240,246,246,246,240
5120 LET WADE=1900:GOSUB 8080
5130 SET CHARACTER 0,0,0,0,96,240,240,246,246,246
5140 LET WADE=1900:GOSUB 8080
5150 SET CHARACTER 0,0,0,0,0,96,240,240,246,246
5160 LET WADE=1900:GOSUB 8080
5170 SET CHARACTER 0,0,0,0,0,0,96,240,240,246
5180 LET WADE=1900:GOSUB 8080
5190 SET CHARACTER 0,0,0,0,0,0,0,96,240,240
5200 LET WADE=1900:GOSUB 8080
5210 SET CHARACTER 0,0,0,0,0,0,0,0,96,240
5220 LET WADE=1900:GOSUB 8080
5230 SET CHARACTER 0,0,0,0,0,0,0,0,0,96
5240 LET WADE=1900:GOSUB 8080
5250 SET CHARACTER 0,0,0,0,0,0,0,0,0,0
5260 LET WADE=8000:GOSUB 8080
Ezt érdemes lenne rövidebben megcsinálni? Zozónak volt már a BASIC topikban (https://enterpriseforever.com/programozas/basic/msg75085/#msg75085) erre egy rövidebb ötlete:
4210 NUMERIC C(9)
4220 C(1)=102:C(2)=255:C(3)=255:C(4)=159:C(5)=15:C(6)=159:C(7)=255:C(8)=255:C(9)=102
4230 FOR I=1 TO 9
4240 SET CHARACTER 0,C(1),C(2),C(3),C(4),C(5),C(6),C(7),C(8),C(9)
4250 FOR J=9 TO 2 STEP -1
4260 C(J)=C(J-1)
4270 NEXT J
4280 C(1)=0
4290 NEXT I
Ez jobb lenne ide? Kevesebb sor kell hozzá. (A sorszámok a két példában eltérnek!)
-
Zozónak volt már a BASIC topikban (https://enterpriseforever.com/programozas/basic/msg75085/#msg75085) erre egy rövidebb ötlete
Lecseréltem Zozo ötletére a régi kukacösszeomlasztós effektet. Így egy picivel rövidebb lett a program. Addig rövidítgetünk benne mindenfélét, míg egyszer csak majd negatív számokkal lehet kifejezni a program hosszát.
-
Rejtett hiba.
Valahol a program elejére egy TEXT 40 sort betehetsz.
Mert ha valaki TEXT 80 ban indítja nem működik.
-
Mert ha valaki TEXT 80 ban indítja nem működik.
Kipróbáltam, nekem működik TEXT 80-as módban elindítva is. A zzzippelt és a basic változat is. Nem is lenne szabad ennek problémát okoznia, mert nem foglalkozik a szöveges képernyővel a program egyáltalán, más videólapokat nyit meg és azokra ír csak.
Talán ki lehetne adni egy CLOSE #0 és CLOSE #102 utasításokat a program elején, hátha kicsit boldogabb lesz tőle a Z80, hogy az nem lesz ott. :D
-
Linux
ep128emu 2.0.11.2
128 RAM
0-3 exos24uk.rom
04-05 asmon15.rom
10 epfileio.rom
20-21 exdos13.rom
nekem meg hal ilyenkor.
-
nekem meg hal ilyenkor.
Mit csinál pontosan? El sem indul? Mi lehet a hiba oka? Lehet, hogy a speek-elés miatt van, mert valami címek máshova kerülnek?
-
Mit csinál pontosan? El sem indul? Mi lehet a hiba oka? Lehet, hogy a speek-elés miatt van, mert valami címek máshova kerülnek?
Elhalálozik.
A kukac nem indul el.
Ingen a SPEEK miatt van.
Ha TEXT 80 módban indítód.
Akkor lentebb teszi az új video buffer tárat FC szegmenst is használ.
A program minél egyszerűbb és gyorsabb legyen.
Csak az FF FE video ramot címeztem meg.
Akkor még nem került elő ez a lehetőség.
Bár korábbi verzió valamelyikében megvan csinálva mind a 4 szegmensre FF FE FC FB.
De hosszadalmas számítás volt.
-
Elhalálozik.
A kukac nem indul el.
Ez ismerős, nem olyan rég is volt ilyesmi.
Ma valószínű csak este fogok hozzájutni. Ha gondolod, beteheted a TEXT 40-et a legfrissebb verzióba. De akár a CLOSE #0 és CLOSE #102 is lehetne helyette, nem? Mert a TEXT is ilyesmit csinál, hogy bezárja a videólapokat, csak megnyit újat helyette, csak ugye itt megnyitni is minek, mert úgyse kell, hiszen teljesen más videolapokat nyitunk meg a gracha mód miatt.
Még 3 dolgot akarnék majd megcsinálni/kipróbálni:
1. Program indítása után POKE 56,201, hogy ne kelljen annyit várni a menü megjelenéséig.
2. Névbeírásnál az ENTER lenyomásakor van egy hang és képernyőtörlés. A hangot a toplista kimentése utánra tenni, mert nem fileio.rom-mal igazi gépen máshogy jöhet ki a hang és a képernyőtörlés egyszerre.
3. Menübe zene.
-
Ha gondolod, beteheted a TEXT 40-et a legfrissebb verzióba. De akár a CLOSE #0 és CLOSE #102 is lehetne helyette, nem? Mert a TEXT is ilyesmit csinál, hogy bezárja a videólapokat, csak megnyit újat helyette, csak ugye itt megnyitni is minek, mert úgyse kell, hiszen teljesen más videolapokat nyitunk meg a gracha mód miatt.
Beleraktam. TEXT 40
A CLOSE #0 még engedi.
De a CLOSE #102 már később hibát okoz.
Gondolom az "EDITOR:" csatornával van kapcsolatban.
Még 3 dolgot akarnék majd megcsinálni/kipróbálni:
1. Program indítása után POKE 56,201, hogy ne kelljen annyit várni a menü megjelenéséig.
Megoldható de akkor addig még zene sem lesz.
Még az időt sem tudom mérni.Mennyivel lenne gyorsabb.
2. Névbeírásnál az ENTER lenyomásakor van egy hang és képernyőtörlés. A hangot a toplista kimentése utánra tenni, mert nem fileio.rom-mal igazi gépen máshogy jöhet ki a hang és a képernyőtörlés egyszerre.
A hangot át raktam a kimentés leg végére.
3. Menübe zene.
Gondolom a Főcím zene.
Ehhez először meg kéne komponálni a zenét. Amihez 1. nem értek 2. "gally hallókám" van.
De ha meglesz akkor segíthetek be építeni. Vagy mint valahol már mutattam egy lehetőséget megpróbálhatod beépíteni.
-
Beleraktam. TEXT 40
A CLOSE #0 még engedi.
De a CLOSE #102 már később hibát okoz.
Gondolom az "EDITOR:" csatornával van kapcsolatban.
Lehet, a CLOSE #0 a 102-es csatornát is bezárja, nem tudom pontosan. De elég a CLOSE #0 akkor.
Megoldható de akkor addig még zene sem lesz.
Csak a legelejére gondoltam, ahol beállítja pl. a videocsatornákat, set character-eket, stb. De nagy jelentősége nincs, így sem nehéz kivárni, hogy megjelenjen a menü.
A hangot át raktam a kimentés leg végére.
Köszi!
Gondolom a Főcím zene.
De ha meglesz akkor segíthetek be építeni.
Amikor játék vége van, akkor a játék közbeni zenék szólnak más hangzással. A menübe ezért lehet, új zene kéne. Lehet, jó lenne valami extrémebb gitáros hangzású, vidám, pörgős. Még kitalálom, de ha van javaslata valakinek, jöhet!
A zenelejátszó rész lehet, bonyolultabb lesz, ha több paramétert is kezel, és közben még figyeli, váltunk-e nehézségi fokozatot vagy a tűzgombbal elindítjuk-e a játékot. Ezért a késleltetésre kell majd figyelni, hogy a hangbuffer ne teljen be, de ne is szaggasson a zene.
-
Amikor játék vége van, akkor a játék közbeni zenék szólnak más hangzással. A menübe ezért lehet, új zene kéne. Lehet, jó lenne valami extrémebb gitáros hangzású, vidám, pörgős. Még kitalálom, de ha van javaslata valakinek, jöhet!
A zenelejátszó rész lehet, bonyolultabb lesz, ha több paramétert is kezel, és közben még figyeli, váltunk-e nehézségi fokozatot vagy a tűzgombbal elindítjuk-e a játékot. Ezért a késleltetésre kell majd figyelni, hogy a hangbuffer ne teljen be, de ne is szaggasson a zene.
Akkor három zene javasolt.
Főcím/ Menű
Játék közben
Toplista beírásnál.
A játék zenéhez valami egyszerűbb lejátszó kellene.Olyasmi mint amit legutóbb pötyögtél nekem.
Könnyebb volt vegyíteni.De lehet a ZZZIP javít, hogy ne akadozzon a hang/zene.
-
De lehet a ZZZIP javít, hogy ne akadozzon a hang/zene.
Zzzippel lazán meglesz az, hogy ne akadozzon. Lehet négycsatornás is akár. De a menübe max. 3 csatornásra gondolok, mert 1 csatorna kell a nehézségi fokozat váltásával járó hangnak (már ha tényleg kell, most van). De inkább nem írogatok róla, az kicsit értelmetlen, inkább majd elkezdem megcsinálni, csak ez sosem megy egyből, meg ihlet, ráhangoltság is kell.
-
Ezért vannak külön zene, hang effekt, karakter tervező, látvány tervező, programozó, ötlet gazda.
Én max programozás, látvány.
Mára már szinte nincs semmi egyéni ötlet.
Annyi kódot láttam, hogy már nem lehet biztosan megmondani én találtam ki vagy csak láttam már valahol vagy nem csak én jöttem rá.
Főleg ha ilyen kevés lehetőség áll a rendelkezésre.BASIC utasítás készlet.
-
Beleraktam a menübe az egyik zenét. Találomra belőttem valami időzítést. Látszólag szól a zene, és a gombokra is jól reagál.
Kicsit hangos volt a játék közbeni hangokhoz képest, halkabbra állítottam. De lehet, most meg túl halk, vagy a két csatorna hangereje nem jól van beállítva egymáshoz képest. Az a baj, máshogy szól laptopon, hangszóról és fejhallgatón is.
[attach=1]
[attach=2]
-
A FOCIM rutinban. 4955-4957 sorok azok ZZZIP lassító?
-
A FOCIM rutinban. 4955-4957 sorok azok ZZZIP lassító?
Igen. Eredetileg nem így akartam megcsinálni, de FOR ciklussal nem akart jól működni. Valami ilyesmi volt:
DO
FOR I=1 to 92
zene
FOR I1=1 to 20
billentyűzetfigyelés, tűzgombfigyelés
időzés, várakozás
Ha tűzgomb lenyomva: EXIT DO
NEXT I1
NEXT I
LOOP
képernyőtörlés, játék indítása.
Hát, a világért sem akart az EXIT DO megfelelően működni. Látszólag a LOOP utánra ugrott, mert elvégzett ott utasításokat, de az END DEF-re furamód visszaugrott a ciklus belsejébe. Azt hiszem, pont ilyen probléma volt már egy korábbi programmal, a Snamberrel, amit ezért nem tudtam Zzzippel megcsinálni.
De most így legalább működik, legalábbis úgy tűnik.
-
Persze, hogy nem.
az EXIT DO a NEXTek után kellet volna rakni
A NEXTek elé EXIT FOR
-
Persze, hogy nem.
az EXIT DO a NEXTek után kellet volna rakni
A NEXTek elé EXIT FOR
Akkor mindegyik EXIT FOR és EXIT DO elé kell egy IF, hogy tényleg a tűzgomb volt-e megnyomva, tehát valami változó értékét kéne átadnia több ciklusvég után. Az nem túl bonyolult?
-
Akkor mindegyik EXIT FOR és EXIT DO elé kell egy IF, hogy tényleg a tűzgomb volt-e megnyomva, tehát valami változó értékét kéne átadnia több ciklusvég után. Az nem túl bonyolult?
De Igen.
De akkor úgy működne ahogy elképzelted.
Kérdés a ZZZIP
PASS 2 után sorszám nélkül "Douple reference" hiba üzenettel végez.
Valahol hiba magyarázat hol olvashatok?
-
De Igen.
De akkor úgy működne ahogy elképzelted.
Van erre egyszerűbb, jobb módszer, mint amit elképzeltem? Hogy a legelegánsabb ilyesmit megcsinálni?
Kérdés a ZZZIP
Nekem lefordítja a legutóbbi verziót. Módosítottál benne vvalamit?
Double reference olyasmi lehet, hogy már megvolt egy tömb, és még egyszer definiálták. Vagy a lokális-globális változók problémájával függhet össze. Vagy ugyanaz a DEF blokk kétszer is megvan.
Itt van ismertető a Zzzipről. (http://ep128.hu/Ep_Util/Zzzip.htm) A Double reference üzenetet pont nem találom az ismertetőben.
-
Próbáltad már IF-fel kiváltani a FOR-t?
-
FOR X=A TO B STEP C
...
NEXT X
L000 LET X=A
L010
...
Lxxx IF X<=B THEN X=X+C:GOTO L010
BASIC-ben lassabb a FOR-nál viszont valamikor FOR a probléma.
ZZZIP-ben elenyésző a különbség.
-
BASIC-ben lassabb a FOR-nál viszont valamikor FOR a probléma.
Ez is jó, most is valami ilyesmi van a programban. Csak azt mondják, a GOTO használatáért strukturált programozásnál irgum-burgum, de hát ha máshogy nem működik? :D
PASS 2 után sorszám nélkül "Douple reference" hiba üzenettel végez.
Kiderült már, mi a probléma? Néha fura a Zzzip, nem is az a hiba, amit jelez. Volt, hogy módosítottam a programot, mielőtt lefordítottam, és teljesen más hibát jelzett, mint amit módosítottam benne, pedig az volt a rossz.
-
Ja.
A zene DATA-t beleraktam G(1 TO 93), H(1 TO 93), J(1 TO 93)
Ezért jeleznem kellett NUMERIC vagy DIM révén más különben hiba a változóban.
Nem jöttem rá hol a hiba.
Raktál NUMERIC G,H,J valahová?
Mindegy a Változókat M,N,O ra cseréltem és így már elfogadta a ZZZIP.
Bár nem indul el a ZZZIP-s fordítás "kevés a memória"
-
Bár nem indul el a ZZZIP-s fordítás "kevés a memória"
Én már abban is kételkedtem, hogy a legutóbbi változatomat le fogja fordítani.
A megoldás az lenne talán, hogy kevesebb változónevet használunk. Talán túl sok a tömb. Most egy régebbi verzió txt-be menteséből idézek:
310 NUMERIC MUSS(1 TO 128),GETAN(1 TO 27)
320 NUMERIC X,Y,VX,VY,ADD,DOOR,ZENE,KUKACX(0 TO 99),KUKACY(0 TO 99)
340 NUMERIC C0(1 TO 27),C1(1 TO 27),C2(1 TO 27),C3(1 TO 27)
350 NUMERIC MT,KAPUX,KAPUY,AKADSZ,HOSSZ,IDO,PLUSIDO,STICK,FEJ,S1,S2,UMT
A menüben például a MUSS tömb nem használatos, így ezt is lehetne az általad használt G,H,J egyike helyett használni. A C0, C1, C2, C3-ban a paletta tárolódik, a képernyő kirajzolása után elvileg már nincs rájuk szükség. Így lehetne azt is, hogy a C0, C1, C2 ne 1 TO 27, hanem 1 TO 93 legyen, és akkor ezeket a zenéhez is fel lehetne használni. Így talán belefér a memóriába. Mit szólsz?
Másik megoldás, hogy most már úgyis lassan kész lesz a végleges verzió, így a SET CHARACTER és ENVELOPE NUMBER adatokat át lehetne tenni egy betöltőbe, annyival több hely maradna a program számára. A ZZZIP által generált basic betöltő elejére lehetne tenni ezeket akár. a SET CHARACTER helyett mehetne az is, hogy a karakterkészetet egy fájlba menteni el és onnan tölteni be, ez lenne mondjuk az ENTSNAK.CHR, vagy ilyesmi.
-
A menüben például a MUSS tömb nem használatos, így ezt is lehetne az általad használt G,H,J egyike helyett használni. A C0, C1, C2, C3-ban a paletta tárolódik, a képernyő kirajzolása után elvileg már nincs rájuk szükség. Így lehetne azt is, hogy a C0, C1, C2 ne 1 TO 27, hanem 1 TO 93 legyen, és akkor ezeket a zenéhez is fel lehetne használni. Így talán belefér a memóriába. Mit szólsz?
Nem tökéletes mert használod. Minden egyes pálya megrajzolásakor.
DEF PALETTE_SET
Bár ha a DATA sorok nem így írtad volna meg. Memóriát ás sebességet nyertél volna.
Másik megoldás, hogy most már úgyis lassan kész lesz a végleges verzió, így a SET CHARACTER és ENVELOPE NUMBER adatokat át lehetne tenni egy betöltőbe, annyival több hely maradna a program számára. A ZZZIP által generált basic betöltő elejére lehetne tenni ezeket akár. a SET CHARACTER helyett mehetne az is, hogy a karakterkészetet egy fájlba menteni el és onnan tölteni be, ez lenne mondjuk az ENTSNAK.CHR, vagy ilyesmi.
A fájl nem rossz ötlet :
Valami ilyesmi?
WHEN EXCEPTION.....
open file
köv READ ch0,ch1,ch2...
CALL CHAR_DEF
goto köv
END WHEN
if WHEN.. nincs több adat
close file
goto folytatás
és akkor nem kell töprengeni mennyi karaktert készíts.
-
Nem tökéletes mert használod. Minden egyes pálya megrajzolásakor.
DEF PALETTE_SET
Igen, viszont a menü kirajzolása után már nem kellenek ezek az értékek, amik a C0(), C1() tömbökben vannak, egészen a játék indításáig. A menü kirajzolása után fel lehet tölteni más értékekkel (pl. a menü zenéjével) ezeket a tömböket. A játék indítása után persze megint feltölti más értékekkel, de addigra meg már a menü közbeni zene nem kell. Ha újra jön a menü, újra fel kell tölteni a tömböt a menü zenéjének adataival.
Nyilván játék közben nem illik piszkálni a MUSS() tömböt, mert a játék közbeni zene ebben van, de a menü zenéjéhez simán fel lehetne használni.
Valami ilyesmi?
WHEN EXCEPTION.....
open file
Nem erre gondoltam. Arra gondoltam, hogy azt a memóriaterületet menteni el először, amiben a karakterek alakjai vannak. Majd a betöltő ezt olvasná be és SPEEK-elné át. Ehhez van egy rutin, CALL USR, CODE, HEX$ van benne, majd előásom, és akkor a karakterkészletet kimentő és betöltő rutin is mehet a hasznos kis basic programok közé is.
De ahogy most van a sok SET CHARACTER a programban, az is maradhat. Szerintem a tömböknek nem lenne több hely, ha azokat a sorokat kötörölnénk a programból.
-
Akkor a teljes memória mint a ZX-nél xxx.CHR.
128kar.*9 sor 1152 bájt
open file
FOR X=1 TO 1152
READ A
SPOKE(255,xx+X,A)
NEXT
CLOSE file
-
128kar.*9 sor 1152 bájt
Igen, erre gondoltam. Majd előásom a rutint ehhez, már használtam korábban.
Van az a varázsszer a játékban, ami a hátralevő időt vagy megduplázza, vagy megfelezi, véletlenszerűen. Ebbe lehetne valami mást építeni, hogy ne véletlenszerű legyen. Bár nagy jelentősége talán nincs. Akkor bosszantó, ha a kijárattól nem messze pont ott van egy ilyen varázsszer, és felvesszük, emiatt telik le az idő és nem jutunk ki, és csak a szerencsén múlott. Van valami ötlet, mitől függjön, hogy megduplázza vagy megfelezze az időt ez a cucc? (Pl. kígyó hossza, még összeszedendő bogyók száma, esetleg e kettő összegének a gyöke/logaritmusa/deriváltja határozza meg, hogy felező vagy duplázó legyen-e? vagy kis sebességnél felezzen, nagy sebességnél duplázzon?)
-
Ötlet:
Ha megjelenik ez a tárgy a BORDER zöld és piros között pulzálna minél világosabb annál nagyobb a szorzó /zöld/ vagy osztó /piros/ 1-1.5-2.
Így van vizuális segítség mikor kapja be.
Lehet elötte tekeregni.
Pulzálás 2-2 másodperc.
-
Ötlet:
Talán meg is lehetne csinálni. A gond, hogy a keretszínnek már van funkciója. Illetve, ez a tárgy sokszor megjelenik, több is lehet belőle a képernyőn, tehát folyamatosan lenne a legjobb az a pulzálás, csak nem a kereté.
De nem tudom, van-e jelentősége. Nem feltétlen az a jó, ha plusz időt ad, és az sem feltétlen rossz, ha megfelezi az időt. Ha kevés bogyó van a pályán, akkor csak jó, ha elfogy az idő és újabb bogyók kerülnek a pályára.
Azt a tömbös megoldást nem próbálod ki? A C0 és C1 tömb tartományát megnöveled 27-ről 93-ra, a menüben a zenéhez pedig a G, H, J helyett MUSS, C0 és C1 tömböket használhatsz fel. Persze csak miután kirajzolta a menü hátterét, azután töltöd fel a C0 és C1 értékeit.
-
De nem tudom, van-e jelentősége. Nem feltétlen az a jó, ha plusz időt ad, és az sem feltétlen rossz, ha megfelezi az időt. Ha kevés bogyó van a pályán, akkor csak jó, ha elfogy az idő és újabb bogyók kerülnek a pályára.
Akkor a dupla/felező nagy érvágás. Főleg ha több is van belőle.
Azt a tömbös megoldást nem próbálod ki? A C0 és C1 tömb tartományát megnöveled 27-ről 93-ra, a menüben a zenéhez pedig a G, H, J helyett MUSS, C0 és C1 tömböket használhatsz fel. Persze csak miután kirajzolta a menü hátterét, azután töltöd fel a C0 és C1 értékeit.
Nem mert úgy nem nyernénk plusz időt. Sok volna a csend.
Azt szerettem volna ha már a főmenü kirajzolásától kezdve menne a zene.
-
Akkor a dupla/felező nagy érvágás. Főleg ha több is van belőle.
Játék közben sokszor eltörpül a jelentősége, mert a játék sokszor gyors, dinamikus. Ha sokáig húzza az ember egy pályán, tele lesz már mindenféle tárggyal és gombóccal a képernyő. Ilyenkor, ha le is telik az idő, nincs nagy jelentősége, mert annyi gombóc van, hogy pillanatok alatt össze lehet szedni, amennyit kell.
Nem mert úgy nem nyernénk plusz időt. Sok volna a csend.
Azt szerettem volna ha már a főmenü kirajzolásától kezdve menne a zene.
Nem tudom, mennyire lenne érzékelhető ez Zzzippel. A pályák közötti váltáskor is beolvas egy csomó adatot, a palettát és a zenét is. Szerintem nem tűnik fel, hogy ez lassítana. Ha mégis lassítana, arra az időre a POKE 56,201-gyel lehet gyorsítani, az adatok beolvasása után pedig visszaállítani a POKE 56,245-tel.
(Na, pl. ezt a POKE-ot is rá lehetne írni az EP-s bögrére, mert sose tudom megjegyezni, most is utána kellett néznem a Wikin. Érdekes módon az OUT 191,12-t fejből tudom már. :D )
-
A várakozások közé belehetne rakni karakteres animációkat.
-
A várakozások közé belehetne rakni karakteres animációkat.
Mármint a menüben? Ott milyen karaktert lehetne animálni?
Esetleg a szóköz karaktert lehetne animálni, vonal mozoghatna pixelenként, a színe is változhatna közben. Itt most grafikus karaktereket kellene definiálni hozzá. De vonal helyett lehetne valami fantáziadúsabb alakzat is, pl forgó + jel, vagy növekvő-csökkenő kerületű négyszög, ilyesmik.
-
Közben fejlesztettem kicsit a legutóbbi verzión. Amikor varázsszer hatására bogyót vagy falat húz maga után, azt hangeffekt is kíséri. Valamit nem folyamatosan húzza ilyenkor a bogyót vagy falat, hanem kis megszakításokkal. Nem olyan megszakítással, ami a programozásban van. Szóval a LEPES eljárásba piszkáltam bele kicsit.
-
Kérdés amikor a kígyó mászkál a szélek felé csak nekem szól a "trapolás" a másik oldalon?
Csináltam egy CHR betöltőt, de mivel kevés volt a memória kitöröltem a DEF CHAR rutint.
-
Kérdés amikor a kígyó mászkál a szélek felé csak nekem szól a "trapolás" a másik oldalon?
Ha felvettél egy menet nélküli csavarnak álcázott objektumot, akkor a kígyó vagy falat, vagy bogyókat pakolgat le maga után. Ennek van most már hangja, szerintem ezt hallod. Ahol éppen lerakja a tárgyat a képernyőn, a sztereó térben onnan jön a hang. A zene meg onnan jön, ahol a kígyó feje van.
Pont ezt írtam az előző hozzászólásban.
-
Nem.
El indítom a játékot alul végig megy a kukac a jobb oldali falig és a bal oldalon hallom a "trappolást"
Más
A 930. sort nem értem pontosan
-
El indítom a játékot alul végig megy a kukac a jobb oldali falig és a bal oldalon hallom a "trappolást"
Megnéztem, én nem hallottam ilyesmit. Ez csak most, ennél a verziónál jött elő? Snapshotot tudnál róla feltenni?
A 930. sort nem értem pontosan
IF VEGE THEN EXIT FOR
Ez még a Hamikában volt így. Ha akadálynak ütközik a kígyó, akkor a VEGE változó értékét átírja a VIZS eljárás 1-re, ezt a főprogram megnézi, és ha 1, akkor kilép a ciklusból. Utána még ellenőriz ezt-azt, hogy az idő telt-e le vagy ilyesmi, újra megnézi, hogy VEGE értéke egy-e, és akkor van elhalálozás. Kapásból most így emlékszem.
-
Már az es443.ep128s is ilyen. amit felraktál.
-
Már az es443.ep128s is ilyen. amit felraktál.
Abban csak a menübe tettem be zenét. Az megzavart volna valami mást is? Ha a játék indításakor ki van adva a CLEAR SOUND, akkor nem lenne szabad bezavarnia.
-
Valami nem kerek.
Fel cserélődött a két kimenet.
Szoftveresen. Remélem.
Vagy az átalakítok nem szabványosak.
-
Ezért kérdeztem, hogy csak nálam?
Hiba elhárítva. USER ERROR
-
es446.zip
Legyen ez a végleges verzió? Vagy akad még valami szépíteni való benne?
Szerintem a paletták nem tökéletesek, de nekem így is a színezéssel telt el a legtöbb idő. Nekem az zavaró, hogy ha sok minden van a képernyőn és a bogyók mellett ott a hosszú kígyó is, nem lehet ránézésre megkülönböztetni a kígyó gerezdjeit és a bogyókat. Pedig direkt azt a színt használja a kígyó, amit a pályaelemek ritkábban.
A bogyók villogása lehetne más még. Ha pillanatképet készítünk a játékról, vagy a bogyók néznek ki épp bénán a villogás fázisa miatt, vagy a kígyó feje nem látszik, mert pont felváltva rajzolja ki a kettőt.
-
Szerintem a paletták nem tökéletesek, de nekem így is a színezéssel telt el a legtöbb idő. Nekem az zavaró, hogy ha sok minden van a képernyőn és a bogyók mellett ott a hosszú kígyó is, nem lehet ránézésre megkülönböztetni a kígyó gerezdjeit és a bogyókat. Pedig direkt azt a színt használja a kígyó, amit a pályaelemek ritkábban.
A paletta színek végül is maradhat.
Csak kár hogy így csináltad.
DATA 0.SZÍN 1.2.3.4... SOR
DATA 1.SZÍN 1.2.3.4... SOR
DATA 2.SZIN 1.2.3.4... SOR
DATA 3.SZÍN 1.2.3.4... SOR
Lehetett volna
DATA 1,2,3,4 1.sor
DATA 1,2,3,4 2.sor
DATA 1,2,3,4 3.sor
DATA 1,2,3,4 x.sor
És kevesebb lett volna a FOR.
A bogyók villogása lehetne más még. Ha pillanatképet készítünk a játékról, vagy a bogyók néznek ki épp bénán a villogás fázisa miatt, vagy a kígyó feje nem látszik, mert pont felváltva rajzolja ki a kettőt.
most mivel van INK vagy CHARACTER.
-
A paletta színek végül is maradhat.
Csak kár hogy így csináltad.
Tudom, így nem annyira célszerű. De a szerkesztés, színezés szempontából így volt könnyebb soronként belőni a színeket, pl. minden sorban beállítani a háttér színét. Ha soronként az összes szín egymás mellett lenne, nehezebb lenne átlátni.
most mivel van INK vagy CHARACTER.
Set character-rel villogtatja a bogyókat a főprogramban. Máshogy nem is lehetne, hogy az összes egyszerre villogjon. Próbáltam másmilyenre is megcsinálni a villogás két fázisát, de úgy nem volt szembetűnő, ha mindkettőben a bogyó ugyanakkora, és csak benne a "csíkok" mások kicsit. Lehet, olyat kéne kipróbálni, hogy ugyanazok a pixelek mindkét fázisban a bogyókban, csak a színek vannak jól összecserélve. De lehet, hogy ezzel is próbálkoztam, már nem tudom.
De lehetne még ügyeskedni, hogy pl. a LEPES, VIZS, stb. eljárásba is betenni különböző fázisokat, így pl. forognának a bogyók vagy hasonló.
-
Tudom, így nem annyira célszerű. De a szerkesztés, színezés szempontából így volt könnyebb soronként belőni a színeket, pl. minden sorban beállítani a háttér színét. Ha soronként az összes szín egymás mellett lenne, nehezebb lenne átlátni.
Te tudod, hogy a legjobb neked.
Csak ötlet volt. Majd egyszer.
Set character-rel villogtatja a bogyókat a főprogramban. Máshogy nem is lehetne, hogy az összes egyszerre villogjon. Próbáltam másmilyenre is megcsinálni a villogás két fázisát, de úgy nem volt szembetűnő, ha mindkettőben a bogyó ugyanakkora, és csak benne a "csíkok" mások kicsit. Lehet, olyat kéne kipróbálni, hogy ugyanazok a pixelek mindkét fázisban a bogyókban, csak a színek vannak jól összecserélve. De lehet, hogy ezzel is próbálkoztam, már nem tudom.
De lehetne még ügyeskedni, hogy pl. a LEPES, VIZS, stb. eljárásba is betenni különböző fázisokat, így pl. forognának a bogyók vagy hasonló.
Igen én is ilyesmire gondoltam.
És akkor már beépíthető lenne a DEF CHAR_DEF rutin ami gyorsabban változtatja a karaktert.
-
Ha esetleg segít, itt vannak régebbi próbálkozásaim a bogyó alakjának megtervezéséhez, Endi gracha editorával. A négy közül az első karakter az, de valamelyik snapshotban a második is. A többi karakter a képernyőn nem feltétlen az, ami most van a játékban, mert azóta többször áttervezgettem. Van kedved próbálkozni a bogyó alakjának és fázisainak szerkesztésével? Esetleg Endi?
Gondoltam már arra is, hogy poénból a Treasure Cave valamelyik pályaelemét poénból be lehetne tenni a játékba. Például azt az oszlopot, csak úgy, és nem szabad nekimenni. De még lehet 2. része is a játéknak, újabb pályákkal, új palettákkal, új zenékkel, kicsit más hangeffektekkel. Endi szerintem brutál palettákat és pályaelemeket tudna tervezni ehhez.
-
sajnos 4 pixel szélességgel nem igazán lehet jó dolgokat csinálni...
-
Kicsit pofoztam még a programon. Például indulásnál várakozásjelző akarna lenni, értelme nincs túl sok, csak érdekesebb így kicsit. Próbáltam a kígyó gerezdjeibe is betenni karakteres animot, szerintem nem annyira jó.
[attach=1]
[attach=2]
Itt vannak a karakteres anim fázisai. A bal oldali két karakter az:
[attach=3]
Ha valakinek van kedve kísérletezni vele esetleg, a basic programként exportált valami.bas programban a 97. sor környékén kezdődnek azok a karakterek, azt hiszem. De még én is próbálkozom jobb kígyógerezdes animmal.
A karakteres anim karaktereit a 9715 és a 9075 sorokba tettem be, ez változtatható.
-
Összedobtam egy egészen elviselhető karakteres animációt a kígyóhoz. Részemről ez a végleges változat, kész a program:
[attach=1]
[attach=2]
Folyt. köv. a második részben, új pályákkal, új zenékkel és extrém új pályaelemekkel! :D
(Ferro73, a karaktereket tartalmazó fájl egy bájttal több, mint kellene, de jelentősége nincs.)
A betöltő elejére még teszek majd egy betöltőképet, benne lesz, hogy enterpriseforever.com, meg ez-az.
-
specy izometrikus snake, scrollos pályával. mondjuk brutál lassú...
https://youtu.be/FayCXtYCuZ8?t=157
-
Valami csoda folytán sikerült belegyömöszölni a Zzzip betöltőjébe a kiegészítést, hogy betöltés közben szép feliratokban gyönyörködhessünk. Így itt van a teljesen kész változat. Snapshot nincs hozzá, mert ahhoz úgyis ki kéne csomagolni a fájlokat, hogy be lehessen tölteni.
[attach=1]
Még az egyik sor végére odaírtam, hogy OUT 191,12, és ettől az egyetlen utasítástól már nem működött, betöltötte a játékot teljesen, de nem indult el. De talán nem baj, ha kicsit lassan irkálja ki a szöveget.
A status sor a képernyő aljára került betöltés közben. Nem tudtam tesztelni, hogy milyen, ha magnóról tölt be, de akkor ott lent kéne lennie a töltésjelzőnek is. Azért tettem fentről lentre, mert fent bénán mutatott a feliratokkal együtt a status sor.
-
A status sor a képernyő aljára került betöltés közben. Nem tudtam tesztelni, hogy milyen, ha magnóról tölt be, de akkor ott lent kéne lennie a töltésjelzőnek is. Azért tettem fentről lentre, mert fent bénán mutatott a feliratokkal együtt a status sor.
Ha csinálsz egy tap-ot a fájlokból, akkor Tape configgal be is sípoltathatod :)
-
A következő projektbe már lehetne POKE pár helyen a PRINT helyett.
Talán még tovább gyorsulhat.
És a sok várakozó ciklus helyett mást is csinálni pl SOUND: puffer feltöltést.
-
És a sok várakozó ciklus helyett mást is csinálni pl SOUND: puffer feltöltést.
Ezt hogy érted? Ez mire lenne jó?
Egyelőre nem volt gond a gyorsasággal. Talán inkább a billentyűkre reagálás problémás kicsit, de eddig még senki nem panaszkodott, csak az előző verziónál, amit végül módosítottál. Én az előzőt és ezt is végig tudom játszani. :D
Tettem fel a Youtube-ra videót a játékról. (https://www.youtube.com/watch?v=v-RUeBPy_zo) Az EP128emu nem bírta a strapát, és két részletben tudta csak felvenni a videót, olyan nagy lett, így csak az első felét tettem fel, de az elég is. Sajnos most kivételesen nem sikerült végigjátszani, hanem a 18. szint környékén kinyiffantam. Nem tudom, miért tesznek ilyen nehéz szintet a játékba...
-
A leggyorsabb kígyó mozgásnál mennyi a GOSUB wait ciklusa. 100-200?
Na ezt az időt lehetne felhasználni valamire.
A többiből levonni ezt az értéket és az új értékkel használható GOSUB wait, hogy a kígyót lehessen lassítani.
-
A leggyorsabb kígyó mozgásnál mennyi a GOSUB wait ciklusa. 100-200?
Ez jó kérdés, már nem emlékszem. Ha 1-es sebességgel mozog a kígyó és az idő is már nem sokára letelik, akkor lehet, már a 0 felé közelít ez a várakozás. De a leggyorsabb sebesség lehet, hogy most is túl sok, a pár hozzászólással ezelőtt linkelt videón pont elég sokszor gyorsul fel a kígyó nagyon. Úgy már a játszhatóság is kicsit kritikus.
Megnéztem a lassító részt (végül nincs is itt gosub, hanem egyből elintézi FOR ciklussal a várakozást is) :
[attachimg=1]
Majd amikor két kígyó lesz egyszerre a képernyőn, ott jól jön a kevesebb várakozás. Már elkezdtem ezt a verziót is csinálni, de ez majd a scrollos változatban lesz. Egyelőre ott tartok, hogy megjelenik a két kígyó két külön videolapon, lehet is irányítani őket, de egy idő után valami gond lesz, meg át is megy egymáson a két kígyó, ha szembe mennek egymsással. Ez utóbbira majd a VIZS eljárásban kéne a programot felkészíteni.
-
Én a gosub 6400 re gondolok.
De lehet azok csak zene kitöltésére van?
Végül is ott csak kihasználatlanul van a processzor idő.
-
Én a gosub 6400 re gondolok.
Elmentettem txt-be a végleges változatot és rákerestem, hol van benne GOSUB 6400. Ez csak arra van, ahol feltétlen kell várakozni, hogy ne ugorjon el a képernyő, pl. szintek között.
Amit korábban írtam, az a játék közbeni lassítás. Ott azért nincs gosub, mert picit néha belassul a játék, és kísérleteztem, hogy ha nem ugrik el gosubbal, hanem ott helyben oldja meg az egészet, nem lesz-e gyorsabb. Előtte nem gosub, hanem valami DEF WAITING(valamennyi) volt, azt is azért cseréltem le gosubra, hátha nem lassul be.
A menü közbeni zene+várakozás (hogy ne teljen be a hangpuffer) is ott helyben van megoldva, gosub nélkül.
De ezeket mind lekezelhetné egy DEF WAITING eljárás, picivel kisebb lenne a program.
-
Na majd a következő már még jobb lesz.
-
Amit itt (https://enterpriseforever.com/programozas/entersnake-gracha-kigyos-jatek/msg77267/#msg77267)írtam a várakozásról, hogy hogyan számolja ki, mennyit kell várakozni, mit gondolsz? Nem lehetne egyszerűsíteni?
7340 LET WADE4=100*SPEED
7350 LET WADE3=(120+PLUSIDO)-IDO
7360 LET WADE2=DIF*WADE3
7370 LET WADE1=WADE4-WADE2
7380 FOR GIF2=1 TO WADE1
7390 NEXT
A SPEED a sebesség, amit a varázsszerekkel lehet megváltoztatni. A PLUSIDO az a plusz idő, ami szintenként változik, amit mindig hozzáad az elején a rendelkezésre álló időhöz. Az IDO az idő, ami lépésenként csökken eggyel. A DIF a nehézségi fokozat (a menüben állítható), a legkönnyebb fokozatnál 1 a DIF értéke, tehát akkor az idő múlásával párhuzamosan nincs gyorsulás. Szerintem belassít, mire mindezt kiszámolja, azért is szedtem szét 4 sorba egy helyett, meglepő módon így gyorsabb lett.
-
egyébként lehetne valami status sorba kiírni hogy mi az amit épp felvettünk, mert szerintem senki se tudja rajtad kívül :)
persze, leírtad, de hát ki jegyzi azt meg?
-
egyébként lehetne valami status sorba kiírni hogy mi az amit épp felvettünk, mert szerintem senki se tudja rajtad kívül :)
persze, leírtad, de hát ki jegyzi azt meg?
Gyakorlással belejön az ember. A kijelzők lent mutatják, ha történik valami, pl. megváltozik a sebesség, csökken az összeszedendő bogyók száma, vagy épp növekszik. Ha a képernyő megfordul 180 fokkal, az eléggé észrevehető. :D A border színe is megváltozik 16 bogyó után, akkor néhány varázsszer máshogy hat. Ha meg bogyókat vagy falat húz maga után a kígyó, az is feltűnő, hangeffekt is kíséri.
-
egyébként lehetne valami status sorba kiírni hogy mi az amit épp felvettünk, mert szerintem senki se tudja rajtad kívül :)
persze, leírtad, de hát ki jegyzi azt meg?
Vagy mint a SlapFight-ban ha kell akkor space és aktivizálódik.
7340 LET WADE4=100*SPEED
7350 LET WADE3=(120+PLUSIDO)-IDO
7360 LET WADE2=DIF*WADE3
7370 LET WADE1=WADE4-WADE2
7380 FOR GIF2=1 TO WADE1
7390 NEXT
A SPEED értékét alapból lehetne *100 és printnél SPEED/100
A PRINT úgyis csak változáskor módosul ami több tíz lépést is meghaladhat.
Mivel a DIF egész pálya alatt változatlan lehetne kezdeni valamit.
-
Azon gondolkoztam, lehetne-e játék közben "hullámoztatni" a hátteret. Mivel soronként változik a paletta, a háttér színe "hullámozhatna", tehát a különböző sorok hátterének a színei váltogatnák egymást. Ehhez mind a kb. 23-24 sorban a háttérszínt állandóan váltogatni kéne, pl. SET #1:COLOR 0,P1(A):SET #2:COLOR 0,P2(A)...:SET #24:COLOR 0,P24(A). Nem tudom, ez mennyit lassítana a játékon, még Zzzippel fordítva is. Esetleg lehetne akár 4 részre osztani a képernyőt, és egyszerre csak egy részen végezni ezt a színváltoztatást.
-
Az Entersnake nem működött EP64-en, több okból is. Régen a Zzzip betöltőjébe betettem töltés közbeni feliratokat, ami EP64-nek sok volt. Ezeket kivettem, de még a játék közbeni karakteres anim sem volt jó, mert csak EP128-ra volt belőve. Továbbá, a lassabb sebesség miatt EP64-en a zene is akadozott a menüben. Ezeket helyreállítottam, itt van az EP128-on és EP64-en is futó változat. Pontosabban EP128-on fut, EP64-en inkább "kocog":
[attach=1]
Sajnáltam kihagyni a korábbi szép feliratokat, amik töltés közben voltak, így a Zzzip betöltője elé tettem még egy betöltőt, ami ezeket kiírja, de ezek a feliratok hamar eltűnnek. Ez a start című fájl. Ez átugorható, és tölthető a játék az entsnak.zip-pel egyből.
A korábbi verzióban induláskor GET-tel olvasta fájlból a karaktermátrixot, így csöppet lassú volt, ezt is átírtam a Dots and Gems-ben alkalmazott CODE, HEX$, USR módszerre.
A korábbi verzió csak EP128-on fut és végig ott vannak a feliratok töltés közben, az ebből a hozzászólásból (https://enterpriseforever.com/programozas/entersnake-gracha-kigyos-jatek/msg77221/#msg77221) letölthető.
-
Milyen kiterjesztést kellene adni a betölthető fájlnak? "Hagyományosan" .zip kiterjesztésű a Zzzippel fordított fájl betöltője.
Milyen kiterjesztés a legcélszerűbb? Van az a programbetöltő menü, de az nem tudja a basic programokat betölteni, úgy tudom. Vagy ha valaki játszani akar vele, úgyis valami mappába teszi bele és onnan indítja el? Ha például lemezen lennének a fájlok más játékokkal együtt, akkor ott hogy lenne a leghasználhatóbb?
-
szerintem a .bas kiterjesztes lenne celszeru.