Enterprise Forever

:HUN => Programozás => BASIC => Topic started by: szipucsu on 2020.May.27. 12:34:35

Title: Dots and Gems
Post by: szipucsu on 2020.May.27. 12:34:35
Össze kell szedni az összes drágakövet és legalább 200 bogyót, hogy le tudjuk győzni a szörnyeket.
A drágakövek az energiánkat is növelik (maximum 4 lehet). Ha legalább 4 az energiánk, újabb drágakő felvétele kinyitja a kaput, hogy a maradékot is fel tudjuk venni. Azonban vigyázni kell, mert ha nyitva a kapu, újabb drágakő felvétele becsukja a kaput. Így ha érintkezünk a szörnyekkel és 4 alá megy újra az energia, amikor a kapu már nyitva volt, taktikáznunk kell, hogy ki tudjuk nyitni a kaput és teljesíteni tudjuk a pályát. Ebben a tűzgomb is segíthet végszükség esetén, ettől egy egységgel csökken az energia, szorult helyzetben harakirit követhetünk el.
Ha drágakövet felveszünk, a hangeffekt jelzi, hogy a kapu éppen kinyílik-e vagy becsukódik, vagy épp semmi nem történik vele.
Érdemes végigjátszani, vannak benne meglepetések.
Nem vagyok benne biztos, hogy az utolsó pályákon is jól sikerült a palettát belőni, de vagy ötször lecseréltem másikra.
A pár éve Ferro73-mal itt közösen fejlesztett Dot Collector Turbo Edition (https://enterpriseforever.com/programozas/dot-collector-turbo-edition/) folytatása ez. A Dot Collectorra próbál épülni az egész, ez lehet, hogy hátrány, és attól a játéktól elszakadva kellene majd átdolgozni például a kijelzőket.
[attach=1]
[attach=2]
Title: Re: Dots and Gems
Post by: geco on 2020.May.27. 16:27:26
Jók az effektek, meg a kezdőzene is egyszerű, de tök jó hangzása van, ami engem idegesít egy kis idő után, a játék közbeni alap prüncögés, nem a mozgás hangja, hanem a másik állandó hang.
Szerintem a játék is jó :)
Title: Re: Dots and Gems
Post by: Zozosoft on 2020.May.27. 16:43:56
Tök jó! :smt038
Title: Re: Dots and Gems
Post by: szipucsu on 2020.May.27. 16:53:28
a játék közbeni alap prüncögés
Ezen én is gondolkodtam, hogy nem hangzik jól. Minél lejjebb vannak a szörnyek, annál magasabb a hang, és nagyobb pályáknál ez tényleg nem hangzik szépen. Majd valami más háttérzajt ki kéne találni. Kisebb pályánál jó ötletnek tűnt, hogy a szörnyek koordinátájából számolja ki a háttérzajt, de itt lehet, valami más kéne...
Title: Re: Dots and Gems
Post by: geco on 2020.May.27. 16:58:49
Lehet szerintem háttérzaj nélkül is jó lenne, a többi effekt tök jó, nézzük meg úgy, néha a kevesebb a több :)
Title: Re: Dots and Gems
Post by: Lacika on 2020.May.27. 17:17:46
Esetleg egy kicsit sötétebb kék, hogy nagyobb legyen a kontraszt?
Title: Re: Dots and Gems
Post by: szipucsu on 2020.May.27. 17:27:28
Most nincs háttérzaj. De lehet, hogy így túl nagy a csönd (a 1250-es sort kellett törölni). :D De lehetne valami zenét is betenni háttérnek, vagy valami más alapján pittyegéseket, pl. amikor a szörnyek irányt váltanak, akkor szólalna meg valami hang.
[attach=1]

Esetleg egy kicsit sötétebb kék, hogy nagyobb legyen a kontraszt?
Mármint a háttér színe lehetne sötétebb kék? Most a 44-es színkód (2Ch) a háttér színe az 1. pályán. Az első hozzászólásban mellékletben a source mappában van egy gemsdev.bas nevű fájl, ebben a tűzgombra megáll a játék, és az 1, 2, 3, 4 gombokkal lehet a négy palettaszínt állítani, gombnyomásra véletlenszerűen lő be egyet a 256 szín közül, a 9-es gombra egy szöveges fájlba kimenti az éppen beállított palettát, enterrel folytatható a játék. Az 5830-as sorban kezdődnek a pályaadatok, első szám a szint száma, utána a 4 szám a 4 szín. De ez csak a kísérletezős verzió, a kikísérletezett színeket majd a kész verzióban kellene módosítani, és Zzzippel lefordítani.
Az 1. és 2. szinten még egész jók a színek szerintem, a többi pálya színbeállítása eléggé vitatható.
Nem tudom, a 44-es milyen kék és hol van az árnyalatok között, majd megpróbálom megnézni, van-e sötétebb.
Title: Re: Dots and Gems
Post by: szipucsu on 2020.May.27. 17:52:37
Itt most sötétebb kék a háttér az első pályán. Eddig 44 (2Ch) volt, most 100 (64h) lett. Szerintem az eredeti jobb volt, de igazi gépen és pl. tévén lehet, máshogy mutat az egész.[attach=1]
Title: Re: Dots and Gems
Post by: geco on 2020.May.28. 10:12:20
Nekem jobban tetszik az eredeti háttér (2ch), és nem érzem túl nagynak a csendet, egy jópofa zene mondjuk dobhat rajta :)
Title: Re: Dots and Gems
Post by: szipucsu on 2020.May.28. 11:33:33
Gondolom, nem ez lesz a végleges, de tettem be más hangot a mászkáláshoz.
[attach=1]
Title: Re: Dots and Gems
Post by: geco on 2020.May.29. 13:08:50
Pár fokkal jobb, mint az ellenség hang, lehet egy kis eccerű zene jobb lenne :)
Title: Re: Dots and Gems
Post by: szipucsu on 2020.May.29. 13:47:44
Pár fokkal jobb, mint az ellenség hang, lehet egy kis eccerű zene jobb lenne :)
Gondolkodtam rajta. A zene azért lenne nehezebb, mert egy ciklus a játék, és nagyon gyors, így menne a zene is. De lehet, pl. minden 10. ciklusban játszana le hangot. A bogyó és a drágakő felvétele kettő csatornán szól, azon kívül meg csak a szörnyek zaja volt, így maradhat a lépések hangja négyszögjelcsatorna és a zajcsatorna is egyszerre. Így maradna még két csatorna a zenének, ami elhallgatna, amikor felveszünk valamit, de ez talán nem baj. Lehetne gyűrűmodulációs zene is, amit a cuccok felvétele megszakítana. De a cuccok felvételének hangját nem kéne megszakítani a zenével, mert olyan jó kis hangzást sikerült találni a drágakő felvételéhez, főleg a hang vége olyan jól felmegy, azt kár lenne megszakítani. Szóval a cuccok felvételének hangjában lenne interrupt, a zenében nem.
Lehet a drágakő felvételéhez jobb lenne valami rövid dallam, de a mostani hangzásnak a vége tetszik.
Lehet, a lépések zaját minden irányba torzítani kellene, akkor nem veszne össze a zene hangjaival. Pl. kisszekund különbség keletkezik a lépések hangja és a zene között, mindenki kimenekül a szobából.
Title: Re: Dots and Gems
Post by: geco on 2020.May.29. 13:58:10
Szerintem minden effekt jó, egyedül az új extra lépéshanggal nem vagyok megbarátkozva, de sokkal jobb, mint az eredeti, a szörnyek mozgásának a hangja :)
Ha zene mellett döntesz, akkor a fő szólam akár szólhat az üres csatornán is, és csak a mellékzöngét kell akkor megszakítani effektkor, vagy lehetne akár egyszólamú csak az üres csatornán, vagy lehet az is, hogy nincs :D
Title: Re: Dots and Gems
Post by: szipucsu on 2020.May.29. 19:52:55
Tettem bele zenét játék közben, kétcsatornás, gyűrűmodulációs, egyelőre ilyen:
[attach=1]
[attach=2]
Lehetne a zenét tovább írni, lehetne más dallam is mellette, és véletlenszerűen tenné be valamelyiket pálya indításakor. Ha valaki tud valami pörgős, ismertebb dallamot, szóljon!
Mászkáláskor lelassul a zene, ez talán nem nagyon zavaró. Eddig is volt lassulás mászkáláskor és a bogyók felvételekor, csak talán annyira nem volt feltűnő.
Most egyelőre a gemstart nevű fájl a betöltője az egésznek, ezzel indul, mert a zene hangzása miatt olyan envelope kellett, amiben nem egész szám van, ezt meg a Zzzip lenyelte volna, így külön a betöltőbe raktam az összes envelope-ot.
Title: Re: Dots and Gems
Post by: szipucsu on 2020.May.30. 16:39:45
Kicsit módosítottam a lépések zaján, halkabbra is vettem. Próbáltam a várakozásokat jobban belőni, hogy ha mozgunk, ne lassuljon annyira. Ez jobb, de még nem az igazi. Majd még ezzel kell kísérletezni, meg Ferro73 pontszámtábla sorbarendezős egyszerű módszerét akarom belerakni, és még talán a pontszámtábla kimentése-betöltése jöhet.
Még a palettával lehetne kísérletezni a 2. pálya utántól. De lehetne olyat is, hogy az 1. és 2. pálya palettái váltakozzanak csak a későbbi pályákon is.
[attach=1]
Title: Re: Dots and Gems
Post by: szipucsu on 2020.May.31. 16:21:11
Mindent megcsináltam, amit csak akartam és ami eszembe jutott. Ha nincs más ötlet, javaslat, akkor lehet ez a végleges változat.
[attach=1]
[attach=2]
Title: Re: Dots and Gems
Post by: Ep128 on 2020.May.31. 20:53:31
Nekem így tetszik! :-)
Title: Re: Dots and Gems
Post by: Tomato77 on 2020.May.31. 21:59:33
Nekem is nagyon tetszik! Az irányítás nehézkes picit, amikor két fal közé kéne bemenni. Viszont nagyon jó nehezítés, hogy a pontszám megtekintéséhez fel kell menni a pálya tetejére a szörnyek között. Tök jók a hangok is, és a zene is jó lett.
Title: Re: Dots and Gems
Post by: szipucsu on 2020.May.31. 22:34:05
Az irányítás nehézkes picit, amikor két fal közé kéne bemenni.
Ez nekem is feltűnt. Lehetne lassítani rajta, akkor talán könnyebb lenne, de akkor az egész játék is lassulna. A legelső verzió talán még lassabb volt és nem volt ilyen probléma?
Azt hittem, inkább bosszantó lesz, hogy fel kell menni a pálya tetejére, hogy lássuk a kijelzőt, de akkor ez is inkább jó, ha nehezítés is.
Van egyébként két bug a játékban. Kíváncsi vagyok, rájön-e valaki. Ki hányadik szintig jutott el?
Title: Re: Dots and Gems
Post by: Tomato77 on 2020.May.31. 22:46:31
A harmadik szintig jutottam el, de kimentettem snapshot-ba és majd folytatom. Jó játszani vele. :)

Talán az segítene az irányításon, hogy amikor nem pontosan a nyílásnál van a játékos, pl. felfelé menne, de ott a fal van és csak a következő pozíción lenne nyílás felfelé, akkor egyet még vízszintesen lépne a figura. A Banana 2-ben is hasonló megoldás van, pl. a létrát nem kell telibe találni pixelre pontosan, elég a közelébe menni, és ha felfelé nyomjuk a gombot, addig mégis vízszintesen megy, amíg nincs pontosan rajta. Itt, mivel karakterenként megy, talán azt lehet, hogy megjegyezné az utolsó mozgást (pl. balra), és ha felfelé nyomjuk, fölötte fal van, de balra egy mezővel már szabad az út felfelé (és előtte balra mozogtunk), akkor egyet mégis balra lép és csak utána megy felfelé.
Title: Re: Dots and Gems
Post by: geco on 2020.May.31. 23:12:16
Így már tök jó :)
Title: Re: Dots and Gems
Post by: szipucsu on 2020.May.31. 23:34:32
de ott a fal van és csak a következő pozíción lenne nyílás felfelé, akkor egyet még vízszintesen lépne a figura.
Megpróbálom majd ezt is megcsinálni.

Addig itt van egy próbálkozás játék közbeni kétszólamú zenére. Nem tudom, ez a verzió mennyire jó... (Talán Plus/4-eseknek tetszeni fog. :D )
[attach=1]
[attach=2]
Title: Re: Dots and Gems
Post by: szipucsu on 2020.June.01. 00:05:42
Az eredeti zenéjű változat, kicsit lassabb. Itt is nehéz betalálni két fal között?
[attach=1]
[attach=2]
Title: Re: Dots and Gems
Post by: szipucsu on 2020.June.02. 19:17:56
Találtam egy hibát. A legutóbbi (lassított) verzió névbeírásnál leáll Invalid file attributes üzenettel. De lehet, hogy csak azért, mert átneveztem az aktuális könyvtárat, és az emulátor az User (Win7 rendszermappa?) mappába akarta menteni a legjobb eredményeket, de nem tudta. Na, most megnéztem: ha másik mappát választok, akkor jó.

Az indítóképernyőn a pontszámok és nevek talán egybefolynak. Talán elég lenne eggyel kevesebb számjegy is a pontszámnak, helyette pont lehetne a képernyőn. Én többször végigjátszottam, de nem értem el még 2000 pontot sem, így felesleges hat darab számjegy, még elvetemültebbek se valószínű, hogy pár ezernél több pontot érnének el.

Még azt megcsinálom, hogy betaláljon két fal között akkor is, ha arrébb áll. Ezt minden irányból kellene? Tehát függőleges és vízszintes irányokban is nézze, van-e arrébb kapu?

Még talán 1-2 játék közbeni zene lehetne, és szintenként váltakozna a zene.

Olyanon gondolkoztam még, hogy ha tűzgombbal együtt nyomjuk az irányt, akkor teljes sebességgel megy, ami csak belefér. Erre az időre a zene is gyorsul, és a hangmagasság is lehetne magasabb, vicces lenne. Viszont önmagában a tűzgomb energiát vesz el, szóval óvatosan kellene használni.

A legelső verzióban még olyan szép volt a fal animációja, folyamatosan ment balról jobbra. Most mintha nem lenne olyan szépen követhető, talán még mindig túl gyors a játék.
Title: Re: Dots and Gems
Post by: Tomato77 on 2020.June.02. 23:36:16
Függőlegesen és vízszintesen is kéne a segítség a mozgásban. Félig Basicben leírva valami ilyesmit tennék bele (feltételezve, hogy az Y koordináta lefelé növekszik):

Code: [Select]
IRANY=JOY(n)
SELECT CASE IRANY
  CASE 1 ! Jobb
    IF PALYA(X+1,Y)<>" " THEN
      IF (ELOZOIRANY=4 AND PALYA(X+1,Y+1)=" ") OR
         (ELOZOIRANY=8 AND PALYA(X+1,Y-1)=" ") THEN IRANY=ELOZOIRANY
    END IF
  CASE 2 ! Bal
    IF PALYA(X-1,Y)<>" " THEN
      IF (ELOZOIRANY=4 AND PALYA(X-1,Y+1)=" ") OR
         (ELOZOIRANY=8 AND PALYA(X-1,Y-1)=" ") THEN IRANY=ELOZOIRANY
    END IF
  CASE 4 ! Le
    IF PALYA(X,Y+1)<>" " THEN
      IF (ELOZOIRANY=1 AND PALYA(X+1,Y+1)=" ") OR
         (ELOZOIRANY=2 AND PALYA(X-1,Y+1)=" ") THEN IRANY=ELOZOIRANY
    END IF
  CASE 8 ! Fel
    IF PALYA(X,Y-1)<>" " THEN
      IF (ELOZOIRANY=1 AND PALYA(X+1,Y-1)=" ") OR
         (ELOZOIRANY=2 AND PALYA(X-1,Y-1)=" ") THEN IRANY=ELOZOIRANY
    END IF
END SELECT
ELOZOIRANY=IRANY
SELECT CASE IRANY
  CASE 1
    X=X+1
  CASE 2
    X=X-1
  CASE 4
    Y=Y+1
  CASE 8
    Y=Y-1
END SELECT
Title: Re: Dots and Gems
Post by: geco on 2020.June.03. 08:17:11
Megpróbálom majd ezt is megcsinálni.

Addig itt van egy próbálkozás játék közbeni kétszólamú zenére. Nem tudom, ez a verzió mennyire jó... (Talán Plus/4-eseknek tetszeni fog. :D )
Sztem teljesen jó, mintha a bogyók felvételi hangja változott volna (egyszerűsödött), de lehet csak érzéki csalódás, másik gépen néztem.
Title: Re: Dots and Gems
Post by: szipucsu on 2020.June.03. 11:59:43
Sztem teljesen jó, mintha a bogyók felvételi hangja változott volna (egyszerűsödött), de lehet csak érzéki csalódás, másik gépen néztem.
Igen, itt a zene folyamatos a két csatornán. Az effektek nem szakítják meg, hanem a harmadik csatornán szólnak.
Title: Re: Dots and Gems
Post by: geco on 2020.June.03. 14:05:43
Igen, itt a zene folyamatos a két csatornán. Az effektek nem szakítják meg, hanem a harmadik csatornán szólnak.
Akkor az eredeti bogyózás hang jobb volt :D
Title: Re: Dots and Gems
Post by: szipucsu on 2020.June.03. 14:21:37
Akkor az eredeti bogyózás hang jobb volt :D
Szerintem is. Csak annyira jellegzetes ez az Exorcist zene, hogy muszáj volt megcsinálni, hogy folyamatosan szóljon játék közben. :D Amúgy béna, mert ahogy mozgunk a pályán, hol gyorsul, hol lassul, szóval még lenne mit finomítani rajta, bár ahogy játszik az ember, úgy nem zavaró. Gondolkodtam, hogy belövöm még a Lands of Havoc zenét is játék alatt, az is kétszólamú. Valószínű lesz egy 2. változata a játéknak, és ott kétszólamú folyamatos zenék lesznek.

A kijelző maradjon ott fent, ahol hol látszik, hol nem? Külön videolapra meg lehetne csinálni a kijelzőt, külön palettával, szép színekkel, de lehet, hogy pont a hol látható, hol nem látható kijelzőtől lesz még érdekesebb a játék.

Nem tudom, a képernyő alján a pályák neveit figyelte-e valaki. :D
Title: Re: Dots and Gems
Post by: geco on 2020.June.03. 14:34:18
Én csak az első pályán kóricáltam, The Úttörőház :D , nekem tetszik, hogy eltűnik a kijelző. A zene lassulása feltűnt nekem is, engem nem zavart, és nem tudom ,hogy Basicben ez mennyire elkerülhető.
Title: Re: Dots and Gems
Post by: szipucsu on 2020.June.03. 14:55:40
The Úttörőház :D
Úttörőáruház, ahol EP-t lehetett kapni. A második szint The Centrum Aruhaz. De vannak még ennél komolyabbak is. De nem lövöm le a poént, csak ha nagyon nem jutna tovább senki, de szerintem nem annyira nehéz.

Meg lehetne csinálni, hogy egyenletes legyen nagyjából a sebesség. Tele van SPOKE-kal a basic program is, így ha nem hívná meg mindig a lassító eljárást, eléggé gyors lenne. Egy változó értéke adja meg mindig, mennyit várakozzon, és mozgásnál kisebb a várakozás, főleg ha eszi a bogyókat vagy görgeti a képernyőt. Viszont elég nehéz belőni pontosan az értékét.
Title: Re: Dots and Gems
Post by: geco on 2020.June.03. 15:04:55
Úttörőáruház, ahol EP-t lehetett kapni. A második szint The Centrum Aruhaz. De vannak még ennél komolyabbak is. De nem lövöm le a poént, csak ha nagyon nem jutna tovább senki, de szerintem nem annyira nehéz.

Meg lehetne csinálni, hogy egyenletes legyen nagyjából a sebesség. Tele van SPOKE-kal a basic program is, így ha nem hívná meg mindig a lassító eljárást, eléggé gyors lenne. Egy változó értéke adja meg mindig, mennyit várakozzon, és mozgásnál kisebb a várakozás, főleg ha eszi a bogyókat vagy görgeti a képernyőt. Viszont elég nehéz belőni pontosan az értékét.
Bocs, elgépeltem, igen, arra gondoltam, hallani sokat hallottam róla, én a Miskolci rumba-rumba a Centrumba jártam programokért , a gép nem tudom honnan származik, lehet a szülők pont az Úttörőáruházban vették :D
Nem annyira nehéz, én nem szeretek sokat tölteni egy játékkal, ezért van az, hogy konvertálás közben is "megutálom" a programok nagy részét :D :D
Title: Re: Dots and Gems
Post by: szipucsu on 2020.June.05. 12:44:22
Egyelőre annyit csináltam meg, hogy nem figyeli, honnan jött, de ha a kapu mellett akarunk bemenni a kapun, akkor jobbra és balra mozgásnál figyeli, van-e arrébb kapu a fal mellett, és ha van, akkor odalép. Itt egy rövid demo, amin szemléltetem, hogyan működik ez:
[attach=1]
Egyelőre még csak jobbra és balra működik ez, fel le nem. És egyelőre csak akkor működik, ha üres a pálya a kapunál. Ha bogyó van ott vagy bármi más, már nem működik, azt még nem figyeli, csak a szóközt. Így milyen? Kicsit tesztelgettem, nekem pár helyen így jobb is volt, de valamikor meg pont nem jó, mert túlmegyek ott, ahol nem kéne.
Még a toplistát is megcsináltam, hogy eggyel kevesebb számjegyűek legyenek a pontszámok. Mást nem változtattam.
Title: Re: Dots and Gems
Post by: Tomato77 on 2020.June.05. 18:12:32
Szerintem sokkal jobb így. Fel-le irányban is meg kéne csinálni, és figyelje a bigyókat is, ne csak a szóközöket, akkor tök élvezetesen lehet majd száguldozni vele.
Title: Re: Dots and Gems
Post by: szipucsu on 2020.June.06. 12:36:16
figyelje a bigyókat is, ne csak a szóközöket
Egyelőre jobbra irányba csináltam meg teljesen, jó sok sorral hízott tőle a program, és ha a többi irányba is megcsinálom, még jobban meg fog hízni. Bár beleférni talán belefér, de ezen lehet, jobb lenne egyszerűsíteni. Így most a CASE ELSE után nem egyből az jön, hogy END SELECT, hanem még ott megnézi, hogy a fal mellett arrébb van-e kapu, a krapek mellett mindkét helyen.
Rendkívül sok az ismétlődés a sorokban, ezt valahogy meg kéne oldani, hogy csak egyszer adjuk meg a számokat, és utána hatja végre az utasításokat, amiket most itt minden CASE ág után végrehajt. Az az ötletem, hogy lesz egy OLDMAN és egy MAN változó, az előbbiben a krapek előző pozíciója lesz, és majd a számok megadása után külön fogja az OLDMAN pozícióban letörölni, az újban pedig kirajzolni, közben pedig a képernyőt is görgetni. Ha minden igaz, működni fog, de lehet, lesz ott valami nehézség, de majd kiderül, ha nekiállok megcsinálni.
Így néz ki egyelőre az ominózus "ha jobbra nyomjuk az irányt, mi történjen" eljárás teljes hosszában. Az nem baj, hogy GOTO-val kiugrunk a SELECT ágból, pl. a 650. és a 655. sorban, nem okoz hibát hosszú távon?
(A POSI változó az ablak függőleges léptetéséhez kell, a MAN változó a videomemóriában vagy hol a krapek pozíciója a 34 széles videolapon, a WWW a várakozás hossza.)
Code: [Select]
500 SELECT CASE JOY(ST)
510 CASE 1
520   SOUND SOURCE 3,ENVELOPE 10,INTERRUPT,STYLE 8,LEFT 127,RIGHT 64
530   SOUND PITCH RND(12)+49,INTERRUPT,ENVELOPE 4,SOURCE 1,STYLE 16,LEFT 64,RIGHT 127
540   CALL CHAR_DEF(112,96,116,228,192,128,192,224,112,96) !JOBBRA
550   LET K=SPEEK(255,MAN+1)
560   SELECT CASE K
570   CASE 32
580     SPOKE 255,MAN,32:LET MAN=MAN+1:LET WWW=37
590   CASE 120
600     SPOKE 255,MAN,32:LET MAN=MAN+1:LET WWW=37
610     CALL BONUSPILL
620   CASE 42
630     SPOKE 255,MAN,32:LET MAN=MAN+1:LET WWW=20:CALL NYAMM
640   CASE 37
650     GOTO 1660
651   CASE ELSE
652     SP=SPEEK(255,MAN+35)
653     SELECT CASE SP
654     CASE 32
655       LET WWW=30:LET POSI=POSI+1:SPOKE 255,MAN,32:LET MAN=MAN+35:DISPLAY #102:AT 3 FROM POSI-9 TO POSI+10:GOTO 688
656     CASE 120
657       LET WWW=30:LET POSI=POSI+1:SPOKE 255,MAN,32:LET MAN=MAN+35:DISPLAY #102:AT 3 FROM POSI-9 TO POSI+10:CALL BONUSPILL:GOTO 688
658     CASE 42
659       LET WWW=30:LET POSI=POSI+1:SPOKE 255,MAN,32:LET MAN=MAN+35:DISPLAY #102:AT 3 FROM POSI-9 TO POSI+10:CALL NYAMM:GOTO 688
660     CASE 37
661       GOTO 1660
662     CASE ELSE
663     END SELECT
664     SP=SPEEK(255,MAN-33)
665     SELECT CASE SP
666     CASE 32
667       LET WWW=30:LET POSI=POSI-1:SPOKE 255,MAN,32:LET MAN=MAN-33:DISPLAY #102:AT 3 FROM POSI-9 TO POSI+10
668     CASE 120
669       LET WWW=30:LET POSI=POSI-1:SPOKE 255,MAN,32:LET MAN=MAN-33:DISPLAY #102:AT 3 FROM POSI-9 TO POSI+10:CALL BONUSPILL
670     CASE 42
671       LET WWW=30:LET POSI=POSI-1:SPOKE 255,MAN,32:LET MAN=MAN-33:DISPLAY #102:AT 3 FROM POSI-9 TO POSI+10:CALL NYAMM
672     CASE 37
673       GOTO 1660
674     CASE ELSE
675     END SELECT
688   END SELECT
Title: Re: Dots and Gems
Post by: ergoGnomik on 2020.June.06. 19:22:57
A CALL-ok és GOTO-k helyett két jelzőváltozót (flag) lehetne alkalmazni. Például CFLAG és GFLAG. A CFLAG értéke legyen mondjuk 0, 1 vagy 2 aszerint, hogy nem kell hívni semmit, NYAMM-ot vagy BONUSPILL-t kell hívni. Hasonlóan GFLAG értéke legyen 0 ha nem kell a SELECT CASE szerkezet után ugrást végezni, vagy legyen az ugrás cél sorszáma.

Ha van egy kis szerencséd, akkor a négy irány szerint annyi lesz a különbség, hogy a koordináta változókhoz milyen értéket kell hozzáadni. (A kivonás negatív érték hozzáadása!) Ebben az esetben az irányok függvényében feltölthetsz kellő számú változót a megfelelő értékekkel egy első SELECT CASE szerkezetben, utána pedig a másodikban elvégzed a számolt koordináták alapján a pályaadatok ellenőrzését és a frissítést.
Title: Re: Dots and Gems
Post by: Tomato77 on 2020.June.07. 00:28:55
Ha ez a részlet csak egy irány megvalósítása (joy=1, azaz jobbra), akkor kicsit el van bonyolítva. ErgoGnomik meglátása is jó, hogy a koordináta változásokat el lehetne tárolni irányonként, és akkor nem kéne ugyanazt a kódot négyszer megírni. Meg ha az "SP=SPEEK(255,MAN-33)" a pálya egy adott eleme, akkor utána a 32 (szóköz?), 120, 42 esetekre nem kellene ugyanazt a kódot 3x megírni. Azért kéne a fal vizsgálatánál inkább megváltoztatni az irányt, mintha a játékos másfelé tolta volna a joyt, utána elég lenne egyszer elvégezni a mozgatást és a videolap megjelenítést. Az üres "case else" ág se kell, ha nincs ott semmilyen utasítás, valamint szerintem case szerkezetből "ki-goto-zni" se elegáns megoldás.
Title: Re: Dots and Gems
Post by: szipucsu on 2020.June.07. 00:40:24
Megcsináltam, látszólag működik mindegyik irányban:
[attach=1]
[attach=2]
Jelentősen egyszerűsítettem a programon. A joy figyelésénél csak meghatározza a változók értékét, hogy milyen irányba, mit hogyan mennyit. Majd a joy figyelést követően ezeknek a változóknak az értéke alapján arrébb is löki, amit kell.
Iderakom a programrészletet. Ilyenre gondoltatok, vagy még ennél is egyszerűbbre? Még talán az a DISPLAY is elég lenne egyetlen egyszer a végén, nem többször ott belül.
A K1 azt jelöli, hogy ha van út az adott irányba, abba menjen annyit.
K2: az egyik irányba nézi az arrébb lévő kaput
K3: a másik irányba nézi az arrébb lévő kaput
P0: ennyit görgesse a képernyőt, ha van út az adott irányban
P1: ennyit görgesse a gépernyőt, ha az arrébb lévő irányban van út.
P2: ennyit görgesse a gépernyőt, ha a másik arrébb lévő irányban van út.
Code: [Select]
500 SELECT CASE JOY(ST)
 510 CASE 1
 520   SOUND SOURCE 3,ENVELOPE 10,INTERRUPT,STYLE 8,LEFT 127,RIGHT 64
 530   SOUND PITCH RND(12)+49,INTERRUPT,ENVELOPE 4,SOURCE 1,STYLE 16,LEFT 64,RIGHT 127
 540   CALL CHAR_DEF(112,96,116,228,192,128,192,224,112,96) !JOBBRA
 550   LET K1=1:LET K2=35:LET K3=-33:LET P0=0:LET P1=1:LET P2=-1
 689 CASE 2
 690   SOUND PITCH RND(12)+49,INTERRUPT,ENVELOPE 4,SOURCE 1,STYLE 16,RIGHT 64,LEFT 127
 700   SOUND SOURCE 3,ENVELOPE 9,INTERRUPT,STYLE 12,LEFT 64,RIGHT 127
 720   CALL CHAR_DEF(112,96,226,114,48,16,48,112,224,96) !BALRA
 730   LET K1=-1:LET K2=33:LET K3=-35:LET P0=0:LET P1=1:LET P2=-1
 850 CASE 4
 860   SOUND PITCH 56+RND(12),ENVELOPE 4,SOURCE 1,INTERRUPT,RIGHT 64,LEFT 127,STYLE 32
 870   SOUND SOURCE 3,ENVELOPE 4,INTERRUPT,STYLE 16,LEFT 64,RIGHT 127
 890   CALL CHAR_DEF(112,0,96,240,240,248,248,144,144,144)
 900   LET K1=34:LET K2=33:LET K3=35:LET P0=1:LET P1=1:LET P2=1
1030 CASE 8
1040   SOUND PITCH 44+RND(12),ENVELOPE 4,SOURCE 1,INTERRUPT,LEFT 64,RIGHT 127,STYLE 48
1050   SOUND SOURCE 3,ENVELOPE 4,INTERRUPT,STYLE 16,LEFT 127,RIGHT 64
1070   CALL CHAR_DEF(112,144,144,144,144,248,248,240,96,0)
1080   LET K1=-34:LET K2=-33:LET K3=-35:LET P0=-1:LET P1=-1:LET P2=-1
1090 CASE 16
1100   GOTO 1660
1212 CASE ELSE
1213   LET WWW=60:GOTO 1270
1214 END SELECT
  ! tényleges mozgatás
1215 LET K=SPEEK(255,MAN+K1)
1216 SELECT CASE K
1217 CASE 32
1218   SPOKE 255,MAN,32:LET MAN=MAN+K1:LET WWW=37:LET POSI=POSI+P0:DISPLAY #102:AT 3 FROM POSI-9 TO POSI+10
1219 CASE 120
1220   SPOKE 255,MAN,32:LET MAN=MAN+K1:LET WWW=37:LET POSI=POSI+P0:CALL BONUSPILL
1222 CASE 42
1223   SPOKE 255,MAN,32:LET MAN=MAN+K1:LET WWW=20:LET POSI=POSI+P0:CALL NYAMM
1224 CASE 37
1225   GOTO 1660
1226 CASE ELSE
1227   SP=SPEEK(255,MAN+K2)
1228   SELECT CASE SP
1229   CASE 32
1230     LET WWW=30:LET POSI=POSI+P1:SPOKE 255,MAN,32:LET MAN=MAN+K2:DISPLAY #102:AT 3 FROM POSI-9 TO POSI+10:GOTO 1251
1231   CASE 120
1232     LET WWW=30:LET POSI=POSI+P1:SPOKE 255,MAN,32:LET MAN=MAN+K2:CALL BONUSPILL:GOTO 1251
1233   CASE 42
1234     LET WWW=30:LET POSI=POSI+P1:SPOKE 255,MAN,32:LET MAN=MAN+K2:CALL NYAMM:GOTO 1251
1235   CASE 37
1236     GOTO 1660
1237   CASE ELSE
1238   END SELECT
1239   SP=SPEEK(255,MAN+K3)
1240   SELECT CASE SP
1241   CASE 32
1242     LET WWW=30:LET POSI=POSI+P2:SPOKE 255,MAN,32:LET MAN=MAN+K3:DISPLAY #102:AT 3 FROM POSI-9 TO POSI+10
1243   CASE 120
1244     LET WWW=30:LET POSI=POSI+P2:SPOKE 255,MAN,32:LET MAN=MAN+K3:CALL BONUSPILL
1245   CASE 42
1246     LET WWW=30:LET POSI=POSI+P2:SPOKE 255,MAN,32:LET MAN=MAN+K3:CALL NYAMM
1247   CASE 37
1248    GOTO 1660
1249   CASE ELSE
1250   END SELECT
1251 END SELECT
1252 SPOKE 255,MAN,112
Title: Re: Dots and Gems
Post by: ergoGnomik on 2020.June.07. 09:40:04
A SOUND parancsokat is ki lehetne gyűjteni az első SELECT CASE utánra, a már alkalmazott minta szerint.

A K és SP értékét látszólag sehol sem használod, így az értéküket közvetlenül is betehetnéd a SELECT CASE paraméterének.

Érdekes módon a GOTO-k kiszervezésének mégsem kezdtél neki, pedig az volt a kiindulási alap, hogy tartasz tőle bajt okoznak.

Egyébként a GOTO 1251-eket ki lehet váltani azzal, hogy az 1227-be teszel egy SKIP = 0-t, az 1230, 1232 és 1234-be SKIP = 1-et, és az 1239-től 1250-ig sorokat beteszed egy IF NOT SKIP ... END IF blokkba. (Ha jól rémlik a szintaxis.)

A tegnapi GFLAG-es tippemet pedig át lehet alakítani úgy, hogy nulla legyen ha nem kell ugrani, 1..N az ugrási címek első előfordulási sorszáma, az ugrást meg IF GFLAG THEN ON GFLAG cím1, ... címN utasítással hajtod végre. (És még lehet, hogy az IF GFLAG THEN is felesleges!)

A példádban az 500-as sor elé betenni egy GFLAG = 0-t, az 1100-ba a GOTO helyett GFLAG = 1-et, az 1213-ba GFLAG = 2-t, majd az 1214-es sor után egy [IF GFLAG THEN] ON GFLAG GOTO 1660, 1270-et. (Vigyázni kell, hogy az esetleg kigyűjtött SOUND utasítások az ON GOTO után kerüljenek!)
Title: Re: Dots and Gems
Post by: szipucsu on 2020.June.07. 11:35:33
A SOUND parancsokat is ki lehetne gyűjteni az első SELECT CASE utánra, a már alkalmazott minta szerint.
Ennek lenne valami előnye? Újabb változóneveket kellene bevetni a sok sound paraméterhez. Maga a program nem lenne rövidebb tőle.

Quote
A K és SP értékét látszólag sehol sem használod, így az értéküket közvetlenül is betehetnéd a SELECT CASE paraméterének.
:smt045
 
Quote
Érdekes módon a GOTO-k kiszervezésének mégsem kezdtél neki, pedig az volt a kiindulási alap, hogy tartasz tőle bajt okoznak.
Gondoltam rá, hogy máshogy kéne megcsinálni, csak tegnap hirtelen nagyon megörültem, hogy működik a könnyebben irányítható változat, és feltettem úgy, ahogy már működik.

Quote
Egyébként a GOTO 1251-eket ki lehet váltani azzal, hogy az 1227-be teszel egy SKIP = 0-t, az 1230, 1232 és 1234-be SKIP = 1-et, és az 1239-től 1250-ig sorokat beteszed egy IF NOT SKIP ... END IF blokkba. (Ha jól rémlik a szintaxis.)
Megoldható.

Quote
A példádban az 500-as sor elé betenni egy GFLAG = 0-t, az 1100-ba a GOTO helyett GFLAG = 1-et, az 1213-ba GFLAG = 2-t, majd az 1214-es sor után egy [IF GFLAG THEN] ON GFLAG GOTO 1660, 1270-et. (Vigyázni kell, hogy az esetleg kigyűjtött SOUND utasítások az ON GOTO után kerüljenek!)
Lehet, hogy a 1100-as sorban inkább majd valami CALL-lal kéne meghívni az energialevonó rutint, azt meg DEF rutinná alakítani. Közben mindig nézné ez az eljárás után, hogy 0 lesz-e az energia, és ha igen, akkor életlevonós, kinyiffanós, pályaelölrőlkezdős vagy gameover eseményeket realizálna. :D Szóval csak akkor térne vissza a ciklus elejére, ha energia>0, különben továbbmenne az életlevonósdi felé.
Title: Re: Dots and Gems
Post by: ergoGnomik on 2020.June.07. 12:45:41
A SOUND utasításoktól elkezdett jojózni a szemem, szóval lehet hogy eléggé különböznek egymástól, hogy ne legyen érdemes külön sorokba kihozni őket és változókban paramétert átadni.

Viszont nem feltétlenül kell új változókat bevezetni! Ha vannak olyan egymástól független programrészletek, amik garantáltan nem tudják egymás működését megzavarni, azok használhatják közösen ugyanazokat a munkaváltozókat. Csak arra kell ügyelni, hogy ne tételezd fel ezekről, hogy a tartalmuk nem változik meg az adott programrészletre kerülő vezérlés két időpillanata között eltelt időben! Szóval ezzel csínján, mert globális változókkal nagyon meg tudja szívatni magát az ember! Viszont ez egy lehetőség memória használat optimalizálásra.
Title: Re: Dots and Gems
Post by: szipucsu on 2020.June.07. 13:39:48
lehet hogy eléggé különböznek egymástól, hogy ne legyen érdemes külön sorokba kihozni őket és változókban paramétert átadni.
Annyira nem különböznek. Mindegyik esetben a zajcsatorna és egy négyszögjelcsatorna szól egyszerre, csak a left, right, style, pitch paraméterek eltérnek mind a négy iránynál. Jobbra és balra alacsony torzítással szól a hangcsatorna, lefele közepes, felfele magas torzítást használ. A zajcsatornának meg fel-le ugyanaz a polinomszámláló értéke, jobbra és balra meg két különböző, ennyi a lényege. Hogy ez amúgy mennyire fontos és mennyire érezni a különbséget és mennyit dob a játékon, az más kérdés. Az alacsony torzításnak mindig más a hangszínezete véletlenszerűen, amiről István már írt itt párszor, hogy a hangmegszakítás meg a Dave állapota éppen milyen és a hangminta milyen lesz tőle, vagy valami ilyesmi. Szóval ez a változatosabb hangzás is érdekesebbé teszi talán.
Lehetne Atic Atac játékból ismert lépéshanghoz hasonló, vagyis egy magasabb, egy mélyebb hang, és ezek váltogatnák egymást. Lehet, hogy lesz egy újabb verziója a játéknak, abban talán ilyen hang lesz, ebben marad, ami van, hacsak nincs más javaslat.

Quote
Viszont nem feltétlenül kell új változókat bevezetni!
Erre én is szoktam gondolni, csak kicsit nehéz nyomon követni az egész programban, milyen változók vannak már,amik csak egy adott programrészhez kellenek, és máshol újra felhasználhatók. Mindig attól félek, hogy a továbbfejlesztett programot nem fogja a Zzzip lefordítani, mert Too many labels üzenet lesz, régebben jártam már így. A Zzzip leírása szerint spórolni kell a változónevekkel és a sorszámokkal, mert elfogyhat az ezeknek fenntartott hely. Ezért is zsúfoltam be annyi mindent egy sorba a CASE ágak után.

Nem túl hangos a bogyóevés hangja? Nekem a zenéhez képest hangosnak tűnik.
Title: Re: Dots and Gems
Post by: ergoGnomik on 2020.June.07. 13:47:12
Bocs! Elfuseráltam a mondatot. Igazából ez szeretett volna lenni: lehet hogy nem különböznek eléggé egymástól, hogy érdemes legyen külön sorokba kihozni őket és változókban paramétert átadni.
Title: Re: Dots and Gems
Post by: szipucsu on 2020.June.07. 13:51:46
Bocs! Elfuseráltam a mondatot. Igazából ez szeretett volna lenni: lehet hogy nem különböznek eléggé egymástól, hogy érdemes legyen külön sorokba kihozni őket és változókban paramétert átadni.
Megcsinálhatom, de annak mi lenne az előnye, miért lenne jobb úgy, mint most? A változóknak az értékadás kevesebb helyet foglalna, mint a SOUND utasítás a programban? Leírva a sound utasítás a paraméterekkel tényleg hosszú, de tokenizált formában vagy Zzzippel fordítva nem tudom, kisebb lenne-e úgy a program. De attól még lehet.
Title: Re: Dots and Gems
Post by: szipucsu on 2020.June.07. 14:15:07
Az üres "case else" ág se kell, ha nincs ott semmilyen utasítás, valamint szerintem case szerkezetből "ki-goto-zni" se elegáns megoldás.
A CASE ELSE szerintem kell, mert ha olyan eset lenne, amihez nincs CASE, akkor No case selected hibaüzenet lenne belőle. Így a case else minden egyéb esetről gondoskodik, amiről előtte nem volt szó. Ha nincs utána semmit, akkor nem csinál semmit az egyéb esetekben.

Na, ezt nem tudom, hogy ezt a GOTO-zást mikor lehet, mikor nem. Régebben volt szó valamilyen eljárásról, amiből nem szabad kiugrani, de már nem tudom, melyikről. Biztos, hogy a SELECT-CASE is ilyen? Nekem a DO-LOOP rémlik, hogy ha nem jut el a LOOP-ig, de elölről kezdődik a DO, akkor előbb-utóbb besokall és lefagy a program. De milyen eljárásoknál van ez így? Szerintem nem mindnél. Úgy emlékszem, DEF-ből sem ugrálhatunk ki.

Persze, GOTO-t használni csak legvégső esetben kéne, komoly programozó nem használ ilyet. Még ez a program is egy 20-30 évvel ezelőtti programom továbbfejlesztésének a továbbfejlesztése, így megvannak benne a tapasztalatlan programozásom maradványai, amiket már pár éve is folyamatosan irtottunk egy korábbi programban, de nehezen akarnak elfogyni. :D
Title: Re: Dots and Gems
Post by: szipucsu on 2020.June.07. 14:26:29
Frenetikus felfedezésem, hogy az ENVELOPE NUMBER-eket is ki lehet menteni fájlba:

CLOSE #103 ! sound: eszköz bezárása
OPEN #103:"env.env" ACCESS OUTPUT
ENVELOPE NUMBER 1;........
CLOSE #103
OPEN #103:"sound:"

A zenélő programban pedig ezt visszaolvassuk a fájlból:

OPEN #106:"env.env" ACCESS INPUT
COPY FROM #106 to #103
CLOSE #106

Ez olyan, mintha a programban adtuk volna meg az envelope-okat. Ilyet használok ebben a játékban is. Ez azért jó, mert az egyik burkológörbénél törtet kellett megadni, amit a Zzzip kerekít, így elrontaná  a hangot. Fájlból viszont beolvassa. Másrészt, kisebb a program, több hely marad, ha külön fájlban van az envelope.

Csak úgy kipróbáltam, ilyet is lehet:

OPEN #106:"chr.bin" ACCESS OUTPUT
SET #106:CHARACTER 33,.............
CLOSE #106

De hogy ezt hogyan lehet visszatölteni, az rejtély. COPY paranccsal biztos nem, mert nincs külön a karaktermátrixnak csatornája.
UI.: Most kipróbáltam. Működik a COPY FROM #106 TO #102, visszaolvassa a karakterdefiníciókat, és át is definiálja a karaktereket. Ez óriási, akkor lehet, nem is kéne gépi kódú részekkel tölteni be karakterkészletet.
Title: Re: Dots and Gems
Post by: ergoGnomik on 2020.June.07. 15:36:22
Megcsinálhatom...
Nem kellene szerintem sem megcsinálni. Az előbb csak még tovább rontottam az eredeti mondatomon. Ez egy ilyen nap. :(
Title: Re: Dots and Gems
Post by: szipucsu on 2020.June.11. 22:50:43
A BASIC topikban előjött a téma. Itt van az eddigi legfrissebb változat (remélhetőleg minden fájllal: .hi pontszámtábla, .env a hangokhoz, .chr a karakterkészlet. Még a CASE ágakban a GOTO-kat akarom máshogy megoldani, hogy ne legyenek GOTO-k ott. Ferro73, ha gondolod, beleteheted ebbe a karakterbetöltős eljárást, a DEF CHARS eljárásban a régit lecserélve. Ha megcsinálod, akkor most nem írom tovább egyelőre.
[attach=1]

UI: Ami még fontos, a CHAR_TAB változó neve maradjon ugyanaz, ami most, mert azt használja a CHAR_DEF(...) eljárás is, a játék közbeni karakteres animációhoz.
UI2: Ez nem a játszható változat, csak a basic. Hogy játszható is legyen, ahhoz Zzzippel le kell majd fordítani.
Title: Re: Dots and Gems
Post by: szipucsu on 2020.June.11. 23:35:43
Lecseréltem a CHARS eljáráson belül a fontbetöltő eljárást az újabbra:
[attach=1]
De most nem működik, mert a #1 csatornát már megnyitja előbb egy videolapnak a VIDEO_INI. Ha meg más számot adok meg, már nem működik. Meg kéne csinálni, hogy más csatornaszámmal is tudjon betölteni fontot. (Gondoltam, hogy a #1-es videocsatornát kéne másra átírni, de túl sok hivatkozás van már rá a programban.)

Most az új fontbetöltő eljárás ilyen:
[attachimg=2]
Az X változót az előző változatból hagytam benne. Nem tudom, mennyiben más az X és a FONT változó. A lényeg, hogy a CHAR_TAB nevű változó maradjon meg ugyanannak, ami most, mert azt máshol is használja a program.
UI: Az ALLOCATE a program legelejére került.
Title: Re: Dots and Gems
Post by: Zozosoft on 2020.June.12. 09:34:10
Frenetikus felfedezésem, hogy az ENVELOPE NUMBER-eket is ki lehet menteni fájlba:

Quote
UI.: Most kipróbáltam. Működik a COPY FROM #106 TO #102, visszaolvassa a karakterdefiníciókat, és át is definiálja a karaktereket. Ez óriási, akkor lehet, nem is kéne gépi kódú részekkel tölteni be karakterkészletet.
Minden ilyen utasítás vezérlőkód sorozatot generál ami aztán a SOUND: vagy VIDEO: eszközhöz megnyitott csatornára kerül kiírásra. Így nem csoda, ha fájlba elmentett kódsorozatot felhasználva is működik :-)
SOUND vagy PLOT utasítások sorozatát is el lehet így menteni.

Ez az Enterprise rendszerének a szépsége, hogy valódi operációs rendszert használ. Tehát pl egy SET CHARACTER nem áll neki direktben pókolni a memóriát, hanem vezérlő kódokkal utasítást küld VIDEO eszköznek, hogy végezze el a műveletet. Az EXOS-t használó programok hardver függetlenek.

Bruce írta valahol, hogy az IS-BASIC kezdetén még semmi nem létezett a gépből, PC-s Z80 kártyán futott, amihez volt írva videó meg billentyűzet driver, ami kommunikált a PC-vel, így már tudta tesztelni.

Ha pl készülne egy jobb videó vagy hangkártya, és ahhoz egy ROM amiben van VIDEO: / SOUND: EXOS periféria kezelő, akkor a BASIC már simán tudja használni. (grafika esetén pláne előrelátóak voltak, hiszen a logikai koordináta rendszer jóval nagyobb felbontású, mint amit a Nick tud, a távlati elképzelésekben gondolhattak nagyobb felbontású következő géptípusokra.)
Title: Re: Dots and Gems
Post by: szipucsu on 2020.June.13. 08:09:01
Minden ilyen utasítás vezérlőkód sorozatot generál ami aztán a SOUND: vagy VIDEO: eszközhöz megnyitott csatornára kerül kiírásra. Így nem csoda, ha fájlba elmentett kódsorozatot felhasználva is működik :-)
Olyat nem lehet, hogy ezt a kódsorozatot ne fájlba mentsük, hanem a programban pl. data sorokban tároljuk, és onnan használja fel a SOUND: vagy VIDEO: eszköz? Problémásnak tűnik, mert ott nem lehet COPY paranccsal másolni egyik csatornáról a másikra.
Akkor ezért gyorsabb, ha set character helyett spoke-okat használunk, mert az egyből a memóriát támadja meg, kihagyja a köztes utat.
Title: Re: Dots and Gems
Post by: Zozosoft on 2020.June.13. 13:39:32
Olyat nem lehet, hogy ezt a kódsorozatot ne fájlba mentsük, hanem a programban pl. data sorokban tároljuk, és onnan használja fel a SOUND: vagy VIDEO: eszköz? Problémásnak tűnik, mert ott nem lehet COPY paranccsal másolni egyik csatornáról a másikra.
Lehet, PRINT CHR$(A); utasításokkal kell kiküldeni a megfelelő csatornába.
Title: Re: Dots and Gems
Post by: Ferro73 on 2020.June.13. 19:47:31
Beleraktam LDCHAR rutint nekem most működik.

Title: Re: Dots and Gems
Post by: szipucsu on 2020.June.13. 20:50:21
Beleraktam LDCHAR rutint nekem most működik.
Köszi! Lefordítottam Zzzippel, úgy is működik.
Ha van kedved, megnézheted a basic programot, lehet-e valamit jobban, egyszerűbben megcsinálni benne.
Title: Re: Dots and Gems
Post by: Ferro73 on 2020.June.13. 22:06:36
A start menü résznél rengeteg a várakozási ciklus.
Oda valami grafikus demót nem lehet berakni?
Valami SET PALETTE X,Y  futó fény?

Integráltam a PRESJOY rutint. 2060-2080-ig
Title: Re: Dots and Gems
Post by: szipucsu on 2020.June.13. 23:10:01
Integráltam a PRESJOY rutint. 2060-2080-ig
Sajnos a Zzzip nem fordítja le. Nem sokkal az 5000. sor után syntax és double reference üzenettel leáll a fordítás. (Pontosan nem írja ki a sort, ahol a hibát érzékeli.) Pedig ott nem is módosítottál. Ott a KIMULT eljárás van. Hirtelen nem találtam benne olyan változónevet vagy hasonlót, ami máshol is előfordulna.
Lehet, hogy amit beírtál, ott túl hosszú lett a sor? Néha ilyen rejtélyes dolgok is előhoznak hibát a Zzzipnél.

Egyébként lehetne a menüben animációt. Amúgy is kicsit nehéz olvasni a betűket azokkal a színekkel. Lehet, színátmenetekkel lenne érdemes villogtatni az egyik színt, vagy akár mind a 3 színt más-más színátmenetekkel?
Title: Re: Dots and Gems
Post by: Ferro73 on 2020.June.13. 23:30:38
próbáld ezt
Title: Re: Dots and Gems
Post by: szipucsu on 2020.June.13. 23:32:42
Közben töröltem azt a három !-lel kezdődő sort, és így már lefordította a Zzzip.
De mindjárt megnézem az újabb verziódat is.
Title: Re: Dots and Gems
Post by: Ferro73 on 2020.June.13. 23:38:38
Egyenlőre nem találok mit javítani.
Némi kuszaság /DEF ../ a főprogramban
A főprogram meg darabokban.
De azért megy.
Title: Re: Dots and Gems
Post by: szipucsu on 2020.June.13. 23:40:57
próbáld ezt
Ezzel már lefordul.
UI: Látom, te is a ! jeles sorokat törölted. Rejtély, miért zavarták azok a Zzzipet.
Title: Re: Dots and Gems
Post by: Ferro73 on 2020.June.14. 11:01:56
A start menü résznél rengeteg a várakozási ciklus.
Oda valami grafikus demót nem lehet berakni?

Pl 2 db 1 soros alul felül és abban futkároznának a hamik.
abcd hami fázisai.
Code: [Select]
abcdabcdabcdabcdabcd...
a       b       c       d      ...
 b        c       d       a    ...
  c         d       a       b  ...
és akkor DISPLAY at ...  1 sor  1.sor... 2.sor... 3.sor...
???

Title: Re: Dots and Gems
Post by: szipucsu on 2020.June.14. 14:07:47
abcd hami fázisai.
Mármint hogy érted, miket ábrázoljon pontosan az a, b, c, d?
A bogyó és a kincs egy-egy karakter, azok karakteres animációval (set character, ill. spoke) váltogatják a fázisaikat. Tehát nincs a fázisoknak külön-külön karakter fenntartva.
Title: Re: Dots and Gems
Post by: Ferro73 on 2020.June.14. 16:52:58
Amikor halad előre és 3-4 fázis-ban
Mint egy pac-man induló menünél jobbra v. balra megy a pac-man figura.
Title: Re: Dots and Gems
Post by: szipucsu on 2020.June.14. 18:15:46
Nagyon picit módosítottam rajta. Most 70-et várakozik, ha nem mozgatjuk semerre, talán így kevésbé feltűnő a lassulás, amikor irányítjuk. Mást nem módosítottam.
[attach=1]
Azon gondolkozom, hogy a bogyóevés hangja lehetne kétféle, ahogy az igazi pacmanban. Egyszer felszökik a hang, a következőnél meg lefele. Csak ehhez egy változó mindig váltogatná az értékét, és kéne egy függvény, amiben a kétféle hangmagasság és kétféle envelope van, ez lehet, megint lassítana kicsit. Igaz, most van talán az A változó, mely 1-4-ig váltogatja az értékét, és ennek függvényében is meghatározhatná a bogyóevés hangját, akár négyféle hang is váltogathatná egymást bogyóevéskor. A Batmannél van ilyen mászkáláskor, hogy négyféle hang váltogatja egymást. Talán majd elkísérletezek ezzel is.
Title: Re: Dots and Gems
Post by: szipucsu on 2020.June.14. 20:01:51
Hogy egy helyen legyen minden:
A gems.chr és a gems.env előállítása:
chrsave - a játékhoz a karakterkészletet kimenti
envsave - a játékhoz az envelope-okat kimenti
(Ezek basic programok, itt tudjuk szerkeszteni is az karaktereket és az envelope-okat.)

Paletta tervezése a játékhoz:
gemsdev - játék közben tűzgomb=szünet, ilyenkor 1,2,3,4 gombokkal állítgathatjuk a palettát, a 9-es gomb kimenti az aktuális palettát (4 számot) egy gemspal.txt fájlba. Enterrel folytatható a játék.

[attach=1]
Title: Re: Dots and Gems
Post by: Ferro73 on 2020.June.14. 21:44:20
Nézegetem, 500- a játék irányítás van.
Úgy látom mintha minden irányba más hang van?!?

A SOUND résznél direkt van össze vissza INTER...,ENVEL...
Title: Re: Dots and Gems
Post by: szipucsu on 2020.June.14. 22:18:37
Nézegetem, 500- a játék irányítás van.
Igen, ezt majd át lehetne tenni DO-LOOP ciklusra, mert később ugrik vissza a GOTO 500-zal, ez így béna. Meg azt is meg kéne csinálni, hogy a játék magja FOR LEV=1 TO 7 és NEXT LEV közé kerüljön (1. szinttől 7. szintig tart). És akkor az innen kiugrató GOTO-kat is át kell írni másra. Nekikezdtem ennek a nagyszabású átalakításnak, most vagyok kb. a negyedénél. :D

Quote
Úgy látom mintha minden irányba más hang van?!?
Igen. Hogy ez mennyire jó, mennyire nem, jó kérdés. A zajcsatornának (SOURCE 3) lehet, hogy csak a STYLE 16-os értéke jó ide. De ha meg mindig csak az lenne, az talán monoton lenne egész játék alatt. A másik csatorna szerintem nagyjából jó: jobbra és balra alacsony torzítás a lépéshang, felfele magas, lefele közepes.

Quote
A SOUND résznél direkt van össze vissza INTER...,ENVEL...
Úgy írtam, ahogy eszembe jutott. Lehet más is a sorrend. Ilyenkor érdekesebb a Plus/4 vagy a CPC sound utasítása, mert ott a paraméterek sorrendje kötött, és nincs külön nevük, amit meg kell adni.

Most még egyelőre a nagyszabású átalakításon dolgozom. Ha kész lesz, akkor visszaadom, ha akarsz benne módosítani. Vagy megírhatod ide is, mit kéne átírni.

Láttam, a DATA sorokat kipakoltad a DEF blokkokból. Ez jogos, de egyelőre inkább visszapakolnám, mert lehet, át is lesznek helyezve, és jobb is ott helyben látni, hogy azokhoz a READ utasításokhoz milyen adatok tartoznak. (Néha a DATA utáni számokból leszek benne biztos, hogy az a programrész mit csinál, pl. pálya teljesítéséhez a zenét tudom fejből, és ott látom, ha az az.)
Title: Re: Dots and Gems
Post by: szipucsu on 2020.June.14. 22:57:38
Vicces, hogy van egy LOST nevű eljárás. Ha ezt akarjuk kilistázni, ahhoz ez kell: LIST LOST. Ha az utolsó sor kell, akkor LIST LAST. Ha a LOST eljárás és az utolsó sor is kell, akkor az LIST LOST,LAST. Kellene még egy LUST vagy LEST eljárás is.
Title: Re: Dots and Gems
Post by: szipucsu on 2020.June.15. 12:39:43
Megcsináltam a nagyszabású beavatkozást.
A bogyóevés hangját lecseréltem, most egészen olyan, mint a pacman. Geco direkt megnézte a CPC-ról konvertált Pacmanben a hangot, és ahhoz hasonlót próbáltam előállítani. Így jobb szerintem.
Eddig a 2. és 3. pályán ritkábban jelentek meg a bogyók a pályákon, mert elsőre soknak tűnt, de visszaállítottam, itt is 1:2-höz a valószínűsége, hogy a szörny mikor hagy bogyót maga után, ha RND(2)=1, akkor igen, ha RND(2)=0, akkor nem. Eredetileg létrehoztam egy BOGYO() függvényt, ahol 2-nél több lehetőség is van, hogy ne legyen mindig olyan könnyű és be lehetne állítani, hogy mekkora valószínűséggel hagyjon maga után ott bogyót a szörny, de lehet, erre nem is lenne szükség.
[attach=1]
[attach=2]
[attach=3]
Talán még megcsinálom, hogy ahogy eszi a krapek a bogyót, a szája becsukódjon, de lehet, lassítana, mert az irányt is figyelnie kéne, hogy merre megy.
A menübe még jó lenne valami animáció, de nem tudom, mit, hogyan lehetne.
Title: Re: Dots and Gems
Post by: Ferro73 on 2020.June.15. 17:55:03
Talán még megcsinálom, hogy ahogy eszi a krapek a bogyót, a szája becsukódjon, de lehet, lassítana, mert az irányt is figyelnie kéne, hogy merre megy.
A menübe még jó lenne valami animáció, de nem tudom, mit, hogyan lehetne.
Ha megcsinálod 3-4 fázisban akkor  4irány*3,4 szabad karakter /kisbetűk , grafikus karakter/ vagy SET CHARACTER...
Esetleg folyamatosan harapna állva, járva.
SET CHARACTER ... felhasználva lehet, hogy mellőzhető a FOR wait.
Title: Re: Dots and Gems
Post by: szipucsu on 2020.June.15. 19:37:23
SET CHARACTER...
Azzal fogom szerintem. Eddig is, ahogy mozog a krapek, ugyanaz a karakter marad, csak set characterrel átírja az alakját. De lehetne külön karakter is, talán kicsivel gyorsabb lenne.
Bár ahogy ezt írtam, elgondolkoztam, lehetne külön 4-4 karakter is a krapeknak, nyitott szájjal és csukott szájjal is, és akkor csak a spoke 255,man,X-ben kéne az X helyére beírni a karakter kódját. Nekem is tátva marad a szám, miket lehet ezzel az Enterprise-szal.
Title: Re: Dots and Gems
Post by: Ferro73 on 2020.June.15. 21:14:36
Idáig nem így csináltad?

Az inspiráció nem árt.

Meg a versenyszellem.

Várom a változtatásokat.

Esetleg a 4x4 karaktert + 4 karakter /a halálozás/
Title: Re: Dots and Gems
Post by: szipucsu on 2020.June.16. 11:26:12
Nem tudom, az 5. pályáig elvitte-e valaki. A pálya neve The Nyugati Oktatasi Centre, a klub kapcsán ismerős lehet. Maga a pálya is a klubnak helyet biztosító ingatlanra próbál hasonlítani felépítésében. Fentről jönnénk be az ajtón a lakásba. A pályán van egy "vészkijárat" oldalt, ami valójában nincs, ott kimehetünk az ingatlanból egészen a Nyugati Pályaudvarig, ahol az Orient Express kerekénél is van egy drágakő, amit kicsit trükkösen lehet csak felvenni.
A Révay úti ingatlanra nem emlékszem olyan pontosan, meg Laciék lakásának sem ismerem minden zugát, de majd azok alapján is lehetne egy-egy pálya. Remélem, Laciéknál van spájz, kis helyiség, ahol jót lehet kergetőzni a szörnyekkel.
Korábbi klubokban nem voltam, de ha valaki azok alaprajzát elküldi, azokból is lehetne pályát rajzolni.
De azok majd a következő részben lesznek benne. Ebben a részben az Ameko Ltd és a Zsiroshegyi Street pályája nem valószínű, hogy hasonlít a valódihoz, és Mr Kopácsy's Hall pályának is csak odakanyarítottam valamit.
Jöhetnének majd ötletek korábbi, EP-vel kapcsolatos helyekhez.
Title: Re: Dots and Gems
Post by: szipucsu on 2020.June.16. 20:02:07
Most már használja az állkapcsát is a pacman kajálás közben. Viszont nagyon rövid időre csukódik be a szája, vízszintesen alig látni, függőlegesen meg mintha nem nyílna ki mindig és vibrálna is. Több variációt kipróbáltam, hogy hol legyen a programban a szájbecsukó rész, hogy elég ideig is legyen zárva, de azért nyitva is legyen két bogyó között. Még lehetne tovább kísérletezni, mikor rakja ki a krapekot az új pozícióba lépésnél, ezen kívül mikor váltson másik karakterre az alakja, de kicsit nehéznek tűnik úgy beállítani, hogy látványos is legyen.
[attach=1]
[attach=2]
[attach=3]
Title: Re: Dots and Gems
Post by: Ferro73 on 2020.June.16. 21:59:42
A következő proginál próbáld a garfikus karaktereket elsőként használni majd a kisbetűk és végül a nagy betűket.

Title: Re: Dots and Gems
Post by: szipucsu on 2020.June.17. 09:18:24
* Gems x 004.ep128s (52.16 kB - letöltve 2 alkalommal.)
* gems x 004 game.zip (11.74 kB - letöltve 3 alkalommal.)
* gems x 004 work.zip (21.03 kB - letöltve 3 alkalommal.)
Ügyesen kifelejtettem a work-os zip-ből azt a néhány fájlt, ami kell a működéshez, de a game-es zip-ben benne vannak. Legközelebb majd egy zip-ben töltök fel mindent.

A következő proginál próbáld a garfikus karaktereket elsőként használni majd a kisbetűk és végül a nagy betűket.
Meg lehetett volna úgy is csinálni, hogy az alt-os karaktereket írjuk át grafikus karakterekre, a kisbetűk meg maradnak. A nagybetűket azért kellett áttervezni, mert gra-cha képernyőn jelenik meg szöveg is a pályán, ill. a kijelzők a pálya mellett ugyanazon a videolapon vannak. Elvileg szebb is, ha nagybetűkon belül is három szín van.
UI.: A pályaelemek azért a kisbetűket használják, mert eredetileg még a GET paranccsal olvastam ki, mi van a képernyőn, az meg nem csípte az alt-os karaktereket.
A menü szépítésére nekem alkotói válság állt be, de tényleg fel lehetne még dobni ezzel-azzal. Át lehetne rajzolni akár soronként váltakozó attribútum képernyőre, de akkor a pályaelemek ugrottak, mert azok csak gracha képernyőre valók. De tényleg lehetne valamit csinálni, mert az a 3 szín, ami a menüben van, elég bénán is oszlik el és máshogy nem is nagyon lehetne. Viszont a pontszámtáblának mindenképpen gracha képernyő kell a grafikus betűkarakterek miatt.
Title: Re: Dots and Gems
Post by: Ferro73 on 2020.June.17. 17:29:04
De tényleg lehetne valamit csinálni, mert az a 3 szín, ami a menüben van, elég bénán is oszlik el és máshogy nem is nagyon lehetne. Viszont a pontszámtáblának mindenképpen gracha képernyő kell a grafikus betűkarakterek miatt.
Esetleg egy 16 színű 32x20 kar. SCREEN kép lehetne.
Ha nincs mozgás oly mindegy mit nézünk.
És ha alul felül 1-1 sor villog.
Title: Re: Dots and Gems
Post by: szipucsu on 2020.June.17. 17:45:47
Esetleg egy 16 színű 32x20 kar. SCREEN kép lehetne.
Az a baj, azon a gracha karakterek nem lennének olvashatóak, az meg a pontszámtábla miatt kellene.
Legközelebb az alt-os karakterek lesznek a pályaelemek, a nagybetűk gracha módúak lesznek, a kisbetűk meg sima "kétszínű" nagybetűk. Így az utóbbiak jók lesznek karakteres képernyőre, attribútum képernyőre is.
Arra gondoltam még, játék közben jó lenne több szín. Valami trükkel meg lehet csinálni, hogy bizonyos karaktereknek más legyen a színe, amit én nem tudok. A bogyók és a drágakövek lehetnének más színűek. Igaz, mire a 4 színhez belőttem a palettát, az is eltartott egy darabig, és a bogyóknak is megtalálni a jó színeket se lenne olyan könnyű.
Title: Re: Dots and Gems
Post by: Ferro73 on 2020.June.17. 20:24:39
Ha a SPOKE ...112 helyett 240 et írsz valami változik.
Azaz ha a kiírandó karakter+128 /SET 7,karakter/
Title: Re: Dots and Gems
Post by: szipucsu on 2020.June.19. 14:39:46
Általában hogyan működik a pontszámtábla mentés és töltés a játékoknál? Pl. az átiratoknál? Megnézi mindig a gép, van-e EXDOS, és csak akkor menti-tölti, ha van? Nem emlékszem olyanra, hogy magnós rendszernél a pontszám beírása után elfütyüli a legjobb eredményeket magnóra. Lehet, itt is valahogy így kéne.
Gondolkozom olyan díszítésen, hogy egy 256 színű egyetlen soros grafikus-karakteres videolapot nyitunk meg, és ott függőlegesen és vízszintesen is lehetne színátmenet. Ez mehetne felülre és alulra is. Igaz, ebben nem lenne animáció. De talán ezt is lehetne animálni set characterrel, és akkor pl. hullámoznának benne a színátmenetek. Egymás alatt lehetne több sor is, úgy még jobb.
Mindig azok a fránya színátmenetek... egyszer már összegyűjtöm az összes elérhető színátmenet-színcsoportot és a színkódokkal együtt elmentem valahova.
Title: Re: Dots and Gems
Post by: geco on 2020.June.19. 14:54:04
Hát, van olyan átiratom ,ami el is fütyüli :D, a régebbiek között előfordul, az újabbak figyelik, hogy file handling eszköz-e a default, ha nem, akkor nincs mentés.
Ha jól emléxem LGB honlapján van kép számokkal együtt.
Title: Re: Dots and Gems
Post by: szipucsu on 2020.June.19. 15:38:10
figyelik, hogy file handling eszköz-e a default, ha nem, akkor nincs mentés.
Azt hogyan lehet figyelni? Gondolom, valami SPEEK-kel le kell kérdezni egy címet, és aszerint ment vagy nem ment.

Quote
Ha jól emléxem LGB honlapján van kép számokkal együtt.
Igen, meg tőled is van egy tuti módszer, azt is szoktam használni. Csak még szebb lenne szépen összegyűjtve, egyszer talán megcsinálom.
Title: Re: Dots and Gems
Post by: geco on 2020.June.19. 16:14:23
Hát lehet , hogy azt csak gépi kód meghívásával lehetne, de ha van Basicből előrhető módszer, azt Zozó biztos tudja.
lehet Basicből lehetne figyelni hogy az EXT hibával száll-e el
10 EXT "HELP EXDOS"

Ha nincs EXDOS, akkor ez a parancs hibás lesz, ha van, akkor kiírja a verziószámot, és van az EP Basicben error handling, sajnos nem tudom hogy kell használni, de szerintem ezt a kettőt össze lehet hozni, és akkor meg is vagy :)
Title: Re: Dots and Gems
Post by: Tomato77 on 2020.June.19. 16:38:56
Code: [Select]
100 WHEN EXCEPTION USE NOEXDOS
110   LET EXDOS = -1
120   EXT "ECHO"
130 END WHEN
140 HANDLER NOEXDOS
150   LET EXDOS = 0
160 END HANDLER
170 !
180 IF EXDOS THEN
190   PRINT "EXDOS-os masina"
200 ELSE
210   PRINT "Kazis masina"
220 END IF

Az "echo" parancs tűnt a legegyszerűbbnek, mert nem ír ki semmit. A "help exdos" kiírja a helpet. Próbáltam egy "cd ." parancsot is, ami elvileg nem csinál semmit, de ha nincs floppy, akkor hibaüzenetet ír ki.
Title: Re: Dots and Gems
Post by: szipucsu on 2020.June.19. 16:42:13
Igen, köszi, ez a WHEN-HANDLER módszer így jó lesz. Gondolom, akinek van EXDOS, az nem is tudna magnóról tölteni több fájlos programot, mert exdos-szal az a: lesz az alapértelmezett. Legalábbis nekem anno sosem sikerült magnóról tölteni exdos-szal többfájlos programokat. (Olyankor voltam kész az olyan programoktól, melyek tape: eszközről akarnak tölteni tovább, amikor ott van floppy-n az egész program. :D )
De ha van valami egyszerűbb módszer a lekérdezésre, lehet, hogy jobb lenne, mert gyorsan hízik a program.
Title: Re: Dots and Gems
Post by: Ferro73 on 2020.June.20. 19:13:52
Ha esetleg "only disk: run" ??? lenne.
Esetleg gondolkodhatnál olyanban mint PC-DOS ban a DOOM,WOLFEINSTEIN ,valami xxx.WAD
Egy fájl tartalmazta a pályákat, zenéket, karaktereket /SPRITE???/.
Title: Re: Dots and Gems
Post by: Zozosoft on 2020.June.20. 19:35:54
Szerintem a legegyszerűbb az ASK 3 A módszer, az FILE-re is jó lesz.
Title: Re: Dots and Gems
Post by: Ferro73 on 2020.June.20. 19:58:40
Eredetin EP-n nincs "FILE:" emlékeim szerint.
EMU-n meg úgyis disk: vagy FILE: az alap.
Title: Re: Dots and Gems
Post by: szipucsu on 2020.June.20. 20:29:16
Szerintem a legegyszerűbb az ASK 3 A módszer, az FILE-re is jó lesz.
Ez hogyan működne pontosan? Kipróbáltam egy ramdisk-es snapshottal, ott a "print a" 1-et adott. De kipróbáltam egy olyan snapshottal is, ahol csak basic és wp van, és ott is 1-et adott. Viszont egy másik, csak basic-es és wp-s snapshotnál 0-át adott.

Esetleg gondolkodhatnál olyanban mint PC-DOS ban a DOOM,WOLFEINSTEIN ,valami xxx.WAD
Egy fájl tartalmazta a pályákat, zenéket, karaktereket /SPRITE???/.
Lenne sok-sok fájl sok zenével, sok pályával, stb.? Lehetne ilyet is. Az csak HDD-vel vagy SD-vel működne. Nem tudom, hányan használnak csak magnós EP-t, azon problémás lenne. Még sima floppyval is kicsit akadozna. De lehetne végülis ilyet is.
Title: Re: Dots and Gems
Post by: Zozosoft on 2020.June.20. 23:44:27
De kipróbáltam egy olyan snapshottal is, ahol csak basic és wp van, és ott is 1-et adott. Viszont egy másik, csak basic-es és wp-s snapshotnál 0-át adott.
Az első eset szerintem FILEIO-s konfig lesz. István FILEIO ROM-ja nem látszik a HELP-ben :oops:
Próbáld ki, hogyha betölteni akarsz, akkor magnóról akar tölteni, vagy emun keresztül a PC-ről (azaz FILE: EXOS eszközről).
Title: Re: Dots and Gems
Post by: szipucsu on 2020.June.21. 08:39:17
Az első eset szerintem FILEIO-s konfig lesz.
Igen, az fileIO-s konfig, ilyet szoktam használni.
Azt le lehet kérdezni valahogy, hogy fileIO-s konfig-e? Arra viszont igazi EP-n adna valami fura értéket. :D
Title: Re: Dots and Gems
Post by: szipucsu on 2020.June.21. 20:14:21
Mielőtt elfelejtem, 3 bug van a játékban, talán beleférnek:

1. Ha pont akkor záródik be az ajtó, amikor egy szörny odalép, akkor a szörny onnan ellépve szóközt vagy bogyót hagy maga után, és az ajtó mégis nyitva lesz.

2. Az 5. szinten, ha túl sokszor megyünk ki az egyik oldalon úgy, hogy a másik oldalon megjelenjünk, akkor elállítódik valami. Talán nem a valódi függőleges pozíciónk szerint fogja görgetni a képernyőt, hanem valami más alapján, így ha nagyon felmegyünk, a játéktér 0-nál kisebb koordinátáit is meg kellene jeleníteni, ilyenkor általában hibaüzenet van. Nem értem az okát ennek, mert a krapek így nem lesz középen függőlegesen, de nem is az elmászott pozíciójából számolja, mennyit görgesse a képernyőt.

3. Sikerült egyszer a krapekkal egy szörnyet beszorítani egy zsákutcába, és a szörny ott beragadt, nem is akart onnan kimozdulni. Ezt az első szinten sikerült kivitelezni, bal oldalon lentebb van egy picike zsákutcában egy kincs, ahova felfele kell menni, oda sikerült beszorítani a szörnyet. Nem teljesen értem még, miért marad ott a szörny beragadva.

A 3. bugot jó lenne javítani, mert van még ötletem más hasonló játékra, és ott már ez komolyabb probléma lenne.
Title: Re: Dots and Gems
Post by: szipucsu on 2020.June.22. 14:50:47
3. Sikerült egyszer a krapekkal egy szörnyet beszorítani egy zsákutcába, és a szörny ott beragadt
Megpróbáltam sérthetetlenséggel reprodukálni a dolgot, de nem jön elő. Eleve nem is kezelik a szörnyek falként a krapekot, szóval nem értem, hogy lehetett ilyen.
[attach=1]
Title: Re: Dots and Gems
Post by: szipucsu on 2020.June.22. 19:29:59
Éppen a szörnyek véletlenszerű mozgásáért felelős részen szörnyülködöm, amit még a múlt században dobtam össze.
 2310   IF UT=5 OR UT=10 THEN GOTO 2480 -Ha "csőben" van a szörny, csak menjen tovább egyenesen
 2320   IF FEL+LE+JO+BA=0 THEN LET I(A)=0:GOTO 2490 -Ha semelyik irányba nincs út, az irány legyen 0.
 2330   IF FEL+LE+JO+BA=1 THEN LET I(A)=I(A)*(-1):GOTO 2480 -Ha csak egy irányba van út (zsákutca), akkor váltson irányt. Ez feltételezi, hogy előtte az ellenkező irányba ment. Emiatt tényleg be is ragad, ha körül volt véve minden oldalról, majd hirtelen eltűnik az egyik fal. Eddig nem volt olyan pálya, ahol négy oldalról körül van véve a szörny drágakővel (amin nem tud átmenni, falnak kezeli), de ha ilyen lenne, és az egyik drágakövet felvesszük mellőle, akkor sem mozdul el. Lehet, ezt a részt át kéne írni.
A CASE ágakon belül a sok GOTO-hoz meg no komment...
Még gondolkozom, hogyan lehetne szebben megcsinálni ezt, de ha valakinek van ötlete, jöhet.

Code: [Select]
2210 DEF RAND_SZOR
 2220   LET UT,FEL,LE,JO,BA=0
 2230   IF SPEEK(255,SZOR(A)-34)<46 THEN LET UT=UT+1:LET FEL=1
 2240   IF SPEEK(255,SZOR(A)-34)=112 THEN LET UT=UT+1:LET FEL=1
 2250   IF SPEEK(255,SZOR(A)+34)<46 THEN LET UT=UT+4:LET LE=1
 2260   IF SPEEK(255,SZOR(A)+34)=112 THEN LET UT=UT+4:LET LE=1
 2270   IF SPEEK(255,SZOR(A)-1)<46 THEN LET UT=UT+8:LET BA=1
 2280   IF SPEEK(255,SZOR(A)-1)=112 THEN LET UT=UT+8:LET BA=1
 2290   IF SPEEK(255,SZOR(A)+1)<46 THEN LET UT=UT+2:LET JO=1
 2300   IF SPEEK(255,SZOR(A)+1)=112 THEN LET UT=UT+2:LET JO=1
 2310   IF UT=5 OR UT=10 THEN GOTO 2480
 2320   IF FEL+LE+JO+BA=0 THEN LET I(A)=0:GOTO 2490
 2330   IF FEL+LE+JO+BA=1 THEN LET I(A)=I(A)*(-1):GOTO 2480
 2340   SELECT CASE RND(4)
 2350   CASE 0
 2360     IF FEL=1 THEN LET I(A)=-34:GOTO 2490
 2370     GOTO 2340
 2380   CASE 1
 2390     IF LE=1 THEN LET I(A)=34:GOTO 2490
 2400     GOTO 2340
 2410   CASE 2
 2420     IF JO=1 THEN LET I(A)=1:GOTO 2490
 2430     GOTO 2340
 2440   CASE 3
 2450     IF BA=1 THEN LET I(A)=-1:GOTO 2490
 2460     GOTO 2340
 2470   END SELECT
 2480   IF SPEEK(255,SZOR(A)+I(A))>46 AND SPEEK(255,SZOR(A)+I(A))<>112 THEN GOTO 2340
 2490 END DEF
Title: Re: Dots and Gems
Post by: Tomato77 on 2020.June.22. 20:04:11
Az "UT" változóban mi van? Mintha a JOY irányainak megfelelő értékeket adnád össze, de nem látszik, mire használod, mert utána mégis a FEL/LE/JO/BA szerint változtatod az I(A)-t. Az 5 és 10 érték pl. átlósan jobbra-fel és balra-le? A FEL, LE, JO és BAL gondolom az, hogy mehet-e arra, vagy sem.
Ha az összegük nulla, akkor nem mehet sehová, és ilyenkor elugrik a szubrutin végére?

A SELECT CASE RND(4) nem tetszik olyan szempontból, hogy előbb kiválaszt egy irányt, aztán ha arra mégsem mehet, akkor újra ciklik (GOTO-val). Inkább amikor akadályhoz ér, összegyűjteném és megszámolnám, hány (n darab) irányba mehet, és akkor RND(n)-nel választanék véletlenszerű irányt a lehetségesekből, akkor nem futna olyan helyzetbe, hogy olyan irányt választ, amerre nem mehet. Így a 2320, 2330 sorok szükségtelenek lennének és kevesebb GOTO lenne.
A CASE ágakból is kivenném a GOTO-kat, csúnya is így egy CASE szerkezetből vissza-goto-zni az elejére.
Az elején a páros IF-eket össze lehetne vonni, és akkor kevesebb utasítás lenne, pl. ebből lehetne:

Code: [Select]
2230   IF SPEEK(255,SZOR(A)-34)<46 THEN LET UT=UT+1:LET FEL=1
 2240   IF SPEEK(255,SZOR(A)-34)=112 THEN LET UT=UT+1:LET FEL=1

ez:

Code: [Select]
2230   IF SPEEK(255,SZOR(A)-34)<46 OR SPEEK(255,SZOR(A)-34)=112 THEN LET UT=UT+1:LET FEL=1

De "IF"-"END IF" között még szebb lenne, bár úgy több sor, de olvashatóbb lesz:

Code: [Select]
2230   IF SPEEK(255,SZOR(A)-34)<46 OR SPEEK(255,SZOR(A)-34)=112 THEN
 2231     LET UT=UT+1
 2232     LET FEL=1
 2233   END IF
Title: Re: Dots and Gems
Post by: szipucsu on 2020.June.22. 21:11:29
Az "UT" változóban mi van?
Lehet, nincs is szükség UT változóra. Azt jelöli, hogy merre van irány (merre nincsen fal). Hasonló az elve, mint a botkormány figyelésének. (De persze véletlen sem egyeznek meg a számok az ottani irányokkal.) Ha fel van út, akkor 1-gyel növeli az értékét. Ha le van út, akkor 4-gyel növeli az értékét. Ha "fel is út, le is út", akkor összeadódik, 5 lesz az értéke. Tehát lényegében kiszámítható az UT értékéből, hogy milyen irányokba vannak utak.
A FEL, LE, JO, BA értéke akkor lesz 1, ha az adott irányba van út. Tehát teljesen felesleges a FEL, LE, JO, BA és az UT változó is, csak a múlt évezred végén még így csináltam meg, ami nem volt túl szakszerű.

Quote
Az 5 és 10 érték pl. átlósan jobbra-fel és balra-le?
Nem, az 5 az a "fel is út, le is út" (4+1), a 10 pedig balra és jobbra is van út. Tehát egyirányú folyosón tud menni a szörny, két oldalról fal van, azaz "csőben" van a szörny. Ilyenkor nem vált irányt, csak megy, ameddig újabb elágazáshoz nem ér.

Quote
A FEL, LE, JO és BAL gondolom az, hogy mehet-e arra, vagy sem.
Igen.

Quote
Ha az összegük nulla, akkor nem mehet sehová, és ilyenkor elugrik a szubrutin végére?
Igen, ilyenkor mind a négy oldalról fal veszi körül a szörnyet, nem mehet semerre.

Jobban belegondolva, elég lenne az UT változó, és a FEL, LE, JO, BA változók nem kellenek. 1995-ben nagyon megörülhettem, hogy sok kísérletezés után végre működik, és nem egyszerűsítettem tovább.

A többi, amit írtál, világos. Csak az IF-END IF szerkezetet nem vezetném be, ha nem muszáj, hogy spóroljak a sorszámokkal a Zzzip számára.

Szerintem a legegyszerűbb az ASK 3 A módszer, az FILE-re is jó lesz.
Közben nagy nehezen megértetem, hogy pont az a jó, ha 1 az értéke a file: és a disk: rendszer esetén is, mert mindkettőnél mentheti a pontszámtáblát. Úgyhogy jó lesz ez, nem kell a file:-nek külön semmi.
Title: Re: Dots and Gems
Post by: szipucsu on 2020.June.22. 23:17:47
Még gondolkozom, hogyan lehetne szebben megcsinálni ezt, de ha valakinek van ötlete, jöhet.
Azon gondolkodom, egy tömböt kéne létrehozni. Benne lenne az összes lehetséges variáció, és az ahhoz kapcsolódó összes lehetséges irányok. Ezek előre definiálva lennének, így a gépnek nem is kéne számolgatnia, amikor dönt, merre menjenek a szörnyek, csak kiválasztani véletlenszerűen a már előre definiált lehetőségek egyikét. Csak UT változó lenne.
Ha semerre nem lehet menni: UT=0
Ha csak jobbra lehet menni: UT=1
Ha csak balra lehet menni: UT=2
csak le: UT=4
csak fel: UT=8
Jobbra+balra=1+2=3
Jobbra+le=1+4=5
Balra+fel+le=2+8+4=14
bármerre=1+2+4+8=15
Tehát lennének 0-tól 15-ig jelölve az Elágazások Típusai (ET).
Adott lenne egy kétdimenziós tömb:
NUMERIC ET(0 TO 15,1 TO 4)
A tömb második dimenziójához az adott elágazástípushoz tartozó lehetséges mozgásirányok (fel, le, jobbra, balra) tartoznának. Ez 0-nál és 15-nél a legevidensebb:
Nincs út semerre:
ET(0,1)=0
ET(0,2)=0
ET(0,3)=0
ET(0,4)=0
Mindenfele van út:
ET(15,1)=-34 (felfele lép egyet)
ET(15,2)=34 (lefele lép egyet)
ET(15,3)=-1 (balra lép egyet)
ET(15,4)=1 (jobbra lép egyet)
Csak fel és jobbra van út:
ET(9,1)=-34
ET(9,2)=1
ET(9,3)=-34
ET(9,4)=1
Amikor megvizsgálja, merre van út, a fentieket használná fel randommal fűszerezve:
IRANY(SZORNY)=ET(UT,RND(4)+1)
Ha háromfele van irány, kicsit furább, mert a páratlan számú lehetőségeket nem lehet négy tömbdimenzióban arányosan tárolni, tehát az egyik iránynak kétszer kéne lennie. Vagyis pl. nagyobb eséllyel menne lefele, mint balra vagy jobbra, ha lefele, balra és jobbra lehet menni. Ez vagy pont jó is lenne így, vagy mondjuk a drágakő felvételekor úgyis leáll egy pillanatra, olyankor átvariálná a háromirányú utak lehetőségeit véletlenszerűen.
Persze azt is meg kéne csinálni, hogy ha csőben megy egyenesen, akkor ne forduljon meg, ezt külön figyelni kéne, tehát a kétirányú lehetőségeknél lenne egy külön feltétel, hogy ha nem 0 az irány, akkor váltson ellenkezőjére.
Még talán olyat lehetne, hogy ha mind a 4 irányba lehet menni, még egy feltétellel véletlenszerűen döntse el, hogy tartja-e az eredeti irányt, vagy irányt vált. Így ha hosszabb távon falmentes pálya lenne, akkor nem ugrabugrálna összevissza, hanem valamilyen irányt próbálna tartani.
Ma már késő van, de majd kipróbálom ezt.

Code: [Select]
2210 DEF RAND_SZOR
 2220   LET UT,FEL,LE,JO,BA=0
 2230   IF SPEEK(255,SZOR(A)-34)<46 THEN LET UT=UT+1:LET FEL=1
 2240   IF SPEEK(255,SZOR(A)-34)=112 THEN LET UT=UT+1:LET FEL=1
 2250   IF SPEEK(255,SZOR(A)+34)<46 THEN LET UT=UT+4:LET LE=1
 2260   IF SPEEK(255,SZOR(A)+34)=112 THEN LET UT=UT+4:LET LE=1
 2270   IF SPEEK(255,SZOR(A)-1)<46 THEN LET UT=UT+8:LET BA=1
 2280   IF SPEEK(255,SZOR(A)-1)=112 THEN LET UT=UT+8:LET BA=1
 2290   IF SPEEK(255,SZOR(A)+1)<46 THEN LET UT=UT+2:LET JO=1
 2300   IF SPEEK(255,SZOR(A)+1)=112 THEN LET UT=UT+2:LET JO=1
 2310   IF UT=5 OR UT=10 THEN GOTO 2480
 2320   IF FEL+LE+JO+BA=0 THEN LET I(A)=0:GOTO 2490
 2330   IF FEL+LE+JO+BA=1 THEN LET I(A)=I(A)*(-1):GOTO 2480
 2340   SELECT CASE RND(4)
 2350   CASE 0
 2360     IF FEL=1 THEN LET I(A)=-34:GOTO 2490
 2370     GOTO 2340
 2380   CASE 1
 2390     IF LE=1 THEN LET I(A)=34:GOTO 2490
 2400     GOTO 2340
 2410   CASE 2
 2420     IF JO=1 THEN LET I(A)=1:GOTO 2490
 2430     GOTO 2340
 2440   CASE 3
 2450     IF BA=1 THEN LET I(A)=-1:GOTO 2490
 2460     GOTO 2340
 2470   END SELECT
 2480   IF SPEEK(255,SZOR(A)+I(A))>46 AND SPEEK(255,SZOR(A)+I(A))<>112 THEN GOTO 2340
 2490 END DEF
Title: Re: Dots and Gems
Post by: Tomato77 on 2020.June.23. 00:23:15
Szerintem felesleges 15x eltárolni a -1, 1, -34, 34 kombinációit. Ha már megvan, merre fog menni a szörny, akkor a lehetséges négy irányból kiválasztod a megfelelőt. Hogy merre mehet, ahhoz pedig körbenézed mind a négy irányt (-1, 1, -34, 34), és amerre mehet, abból kiválasztasz egyet (nagyjából a mostani módon). Ezzel a két dimenziós tömbbel feleslegesen túlbonyolítod. Valahogy így csinálnám:

Code: [Select]
NUMERIC MERRE(0 TO 3),LEHET(0 TO 3)
MERRE(0)=-1:MERRE(1)=1:MERRE(2)=-34:MERRE(3)=34
...
DEF RAND_SZORNY
  LEHETDB=0 ! Ez mutatja, hány irány lehet
  ! Körbenézi négy irányból, ami jó, beteszi a LEHET tömbbe
  FOR J=0 TO 3
    IF SPEEK(255,SZOR(A)+MERRE(J))<46 OR
       SPEEK(255,SZOR(A)+MERRE(J))=112 THEN
      LEHET(LEHETDB)=J ! Ide teszi, hogy melyik irányok jók
      LEHETDB=LEHETDB+1
    END IF
  NEXT J
  ! Itt már megvan, melyik irányokba mehet, válasszon ki egyet
  I(A)=MERRE(LEHET(RND(LEHETDB)))
END DEF

Lehet, hogy szintaktikailag nem mindenhol jó, rég használtam a Basic-et. :) De a logika kb. érthető belőle. És nincs benne GOTO. :)
Title: Re: Dots and Gems
Post by: szipucsu on 2020.June.23. 14:02:59
Azon gondolkodom, egy tömböt kéne létrehozni.
Kipróbáltam a tömbös módszert. Így sokkal szebben néz ki a RAND_SZOR eljárás. Jó, az a két GOTO nem annyira szép, de elmegy:

Code: [Select]
2210 DEF RAND_SZOR
 2220   LET UT=0
 2230   IF SPEEK(255,SZOR(A)-34)<46 OR SPEEK(255,SZOR(A)-34)=112 THEN LET UT=UT+8
 2250   IF SPEEK(255,SZOR(A)+34)<46 OR SPEEK(255,SZOR(A)+34)=112 THEN LET UT=UT+4
 2270   IF SPEEK(255,SZOR(A)-1)<46 OR SPEEK(255,SZOR(A)-1)=112 THEN LET UT=UT+2
 2290   IF SPEEK(255,SZOR(A)+1)<46 OR SPEEK(255,SZOR(A)+1)=112 THEN LET UT=UT+1
 2295   IF (UT=3 OR UT=12) AND I(A)<>0 THEN GOTO 2490 ! Ha egyenesen tud csak menni, csak menjen tovább, ha adott az irány, ne váltson irányt
 2300   IF UT=15 AND I(A)<>0 AND RND(2)=0 THEN GOTO 2490 ! Ha bármerre lehet menni, próbáljon tartani egy irányt, ha az irány adott.
 2310   LET I(A)=ET(UT,RND(4)) ! Válasszon egy utat a létezők közül.
 2490 END DEF

Viszont, ahol értéket kell adni ezeknek az irányos változóknak, az szép hosszú rész lett:

Code: [Select]
4690 DEF INI_VAR
 4700   LET MAN=VM+350
 4710   LET K=32:LET POSI=24:LET HITS,GATE=0:LET CIKL=1
 4711   LET I(1)=0:LET I(2)=0:LET I(3)=0:LET I(4)=0
! Innen jön a lényeg:
 4712   LET ET(0,0),ET(0,1),ET(0,2),ET(0,3)=0
 4713   LET ET(1,0),ET(1,1),ET(1,2),ET(1,3)=1
 4714   LET ET(2,0),ET(2,1),ET(2,2),ET(2,3)=-1
 4715   LET ET(3,0),ET(3,1)=-1:LET ET(3,2),ET(3,3)=1
 4716   LET ET(4,0),ET(4,1),ET(4,2),ET(4,3)=34
 4717   LET ET(5,0),ET(5,1)=34:LET ET(5,2),ET(5,3)=1
 4718   LET ET(6,0),ET(6,1)=34:LET ET(6,2),ET(6,3)=-1
 4719   LET ET(7,0),ET(7,1)=1:LET ET(7,2)=34:LET ET(7,3)=-1 !
 4720   LET ET(8,0),ET(8,1),ET(8,2),ET(8,3)=-34
 4721   LET ET(9,0),ET(9,1)=-34:LET ET(9,2),ET(9,3)=1
 4722   LET ET(10,0),ET(10,1)=-34:LET ET(10,2),ET(10,3)=-1
 4723   LET ET(11,0),ET(11,1)=-34:LET ET(11,2)=1:LET ET(11,3)=-1 !
 4724   LET ET(12,0),ET(12,1)=-34:LET ET(12,2),ET(12,3)=34
 4725   LET ET(13,0),ET(13,1)=-34:LET ET(13,2)=1:LET ET(13,3)=34 !
 4726   LET ET(14,0),ET(14,1)=-1:LET ET(14,2)=-34:LET ET(14,3)=34 !
 4727   LET ET(15,0)=34:LET ET(15,1)=-34:LET ET(15,2)=1:LET ET(15,3)=-1
 4730 END DEF

A ! jellel jelölt sorok a kritikusak. Amikor 3 irány közül kell választani, akkor is 4 közül választ, az egyik irány kétszer van benne, amit így nagyobb valószínűséggel választhat ki, mint a másik kettőt. Ennek meg is lett az eredménye, pl. az első pályán a szörnyek mind úgy felcsődültek a pálya tetejére, mintha valami zsibvásár lenne ott. Lángeszemmel erre a 4723-as sorban a -34-et átírtam 34-re, erre meg áttörték a falat is lefele, kis agresszívak lettek. Ha meg a 4726-os sorban cseréltem meg a -1-et és a 34-et, akkor meg oldalra alig akartak menni, vagy már nem tudom. Pedig egyes pályákhoz külön-külön is be lehetne állítani, hogy az egyik irányt jobban kedveljék, mint másik kettőt, ha olyan a pálya.
Talán még kísérletezek ezzel a módszerrel, ki lehet-e hozni belőle valamit.

Valahogy így csinálnám:
Megnézem majd ezt a módszert is!
Title: Re: Dots and Gems
Post by: szipucsu on 2020.June.23. 14:34:42
Valahogy így csinálnám:
Kipróbáltam, alapvetően működik! :smt041
Két kis hiányosság van benne:
1. Ha folyosón (csőben) megy a szörny, akkor ne váltson irányt.
2. Ha körül van véve fallal, arra nincs meghatározva semmi, és hibát okoz.
Még megpróbálom ezeket is beletenni, de kicsit kacifántosnak tűnik.
Title: Re: Dots and Gems
Post by: szipucsu on 2020.June.23. 16:46:15
Még megpróbálom ezeket is beletenni, de kicsit kacifántosnak tűnik.
Beletettem ezeket is, most a teljesen körülzárt szörnyek is rendben vannak, és csőben nem vált irányt a szörny. Egyelőre csúnya GOTO-s megoldással lőttem be, este majd megpróbálom szebben megcsinálni, de ha van javaslat, jöhet, mert GOTO nélkül egyelőre nehezen tudnám ezt elképzelni.

Code: [Select]
2210 DEF RAND_SZOR
 2220   LET LEHETDB=0
 2230   FOR UT=0 TO 3
 2250     IF SPEEK(255,SZOR(A)+MERRE(UT))<46 OR SPEEK(255,SZOR(A)+MERRE(UT))=112 THEN
 2270       LET LEHET(LEHETDB)=UT
 2290       LET LEHETDB=LEHETDB+1
 2292     END IF
 2293   NEXT UT
 2301   IF LEHETDB=0 THEN LET I(A)=0:GOTO 2490 !Ha semerre nincs út, irány=0
 2302   IF LEHETDB<3 THEN
 2305     LET UT2=0
 2306     FOR UT=0 TO LEHETDB-1
 2307       LET UT2=UT2+MERRE(LEHET(UT))
 2308     NEXT
 2309     IF UT2=0 AND I(A)<>0 THEN GOTO 2490 !Ha van irány, és egyenesen megy egy csőben, akkor ne váltson irányt
 2310   END IF
 2315   LET I(A)=MERRE(LEHET(RND(LEHETDB)))
 2490 END DEF

Úgy vizsgálja, hogy csőben van-e, hogy a lehetséges irányok összege 0. Tehát ha tudna lépni +1 és -1 koordinátát, vagy +34 és -34-et, a kettő összegéből következtet arra, hogy csőben van. Persze ha 4 irányba tud menni, akkor is 0 jönne ki, ezért kell 2302-es sor, hogy még mielőtt az összes irányt számbaveszi, akkor adjon össze.
Nem tudom, hogy ez az egész befolyásolja-e az egyéb mozgásokat, látszólag működik. Bár néha gyanúsan sokat vacakolnak a szörnyek körbe-körbe egy objektum körül, ez lehet véletlen is. Ha háromfele mehet és adott az irány, akkor elvileg nem teljesül a feltétel, ha jól sejtem.
Title: Re: Dots and Gems
Post by: geco on 2020.June.23. 17:12:29
meg lehet oldani goto nélkül, telóról nehézkesebb:
gotot vedd ki az if lehetdb = 0 sor végéről
if lehetdb < 3 and lehetdb > 0 then
a let ut2 = 0 -t tedd az if lehetdb < 3 ... sor elé
az utso endif előtti sort torold
az end def előtti sor elejére meg tedd be a következőt:
 if ut2 > 0 and i(a)=0 then
Title: Re: Dots and Gems
Post by: Tomato77 on 2020.June.23. 18:28:21
1. Ha folyosón (csőben) megy a szörny, akkor ne váltson irányt.

Ja, azt hittem, a RAND_SZORNY csak akkor hívódik meg, ha akadálynak ütközik. Meg kell vizsgálni, hogy nekimenne-e valaminek, és csak akkor hívja meg a szubrutint, vagy tedd a belsejét egy IF-END IF-be. Pl.: SZOR(A)+MERRE(I(A))=fal, akkor váltson irányt. Hozzá lehet tenni OR-ral egy RND(valamit) is, és akkor véletlenszerűen is kanyarodik.

2. Ha körül van véve fallal, arra nincs meghatározva semmi, és hibát okoz.

Nem játszottam végig, de lehetséges olyan helyzet, hogy a szörny be van zárva valahová, ahonnan sehová se tud menni? Akkor ki lehetne bővíteni a MERRE  tömböt, és a nullás eleme nulla értékű lenne. Meg fel kell cserélni a LEHET és a LEHETDB módosító sorokat, meg az RND-nél LEHETDB+1 kell, és a J ciklus 1-től 4-ig menjen, akkor szerintem jó lesz.
Title: Re: Dots and Gems
Post by: szipucsu on 2020.June.23. 21:29:48
Nem játszottam végig, de lehetséges olyan helyzet, hogy a szörny be van zárva valahová, ahonnan sehová se tud menni?
A jelenlegi pályákon nincs ilyen. Attól függ, mennyire elvetemült, aki a pályát tervezi. Kipróbáltam, el lehet kapni a bezárt szörnyike mellől a drágakövet, és akkor a szörnyike kiszabadul, és ha gyorsak vagyunk, nem jön nekünk. Nem annyira tervezek ilyet esetleges későbbi verziókban sem, de van egy másik játékhoz ötletem, amihez viszont ez kelleni fog, de nem lövöm le a poént.
A többit, amit írtál és Geco írt, majd lehet, frissebb fejjel próbálom ki.
Title: Re: Dots and Gems
Post by: szipucsu on 2020.June.25. 09:40:12
Viszont, ahol értéket kell adni ezeknek az irányos változóknak, az szép hosszú rész lett:

Code: [Select]
4690 DEF INI_VAR
 4700   LET MAN=VM+350
 4710   LET K=32:LET POSI=24:LET HITS,GATE=0:LET CIKL=1
 4711   LET I(1)=0:LET I(2)=0:LET I(3)=0:LET I(4)=0
! Innen jön a lényeg:
 4712   LET ET(0,0),ET(0,1),ET(0,2),ET(0,3)=0
 4713   LET ET(1,0),ET(1,1),ET(1,2),ET(1,3)=1
 4714   LET ET(2,0),ET(2,1),ET(2,2),ET(2,3)=-1
 4715   LET ET(3,0),ET(3,1)=-1:LET ET(3,2),ET(3,3)=1
 4716   LET ET(4,0),ET(4,1),ET(4,2),ET(4,3)=34
 4717   LET ET(5,0),ET(5,1)=34:LET ET(5,2),ET(5,3)=1
 4718   LET ET(6,0),ET(6,1)=34:LET ET(6,2),ET(6,3)=-1
 4719   LET ET(7,0),ET(7,1)=1:LET ET(7,2)=34:LET ET(7,3)=-1 !
 4720   LET ET(8,0),ET(8,1),ET(8,2),ET(8,3)=-34
 4721   LET ET(9,0),ET(9,1)=-34:LET ET(9,2),ET(9,3)=1
 4722   LET ET(10,0),ET(10,1)=-34:LET ET(10,2),ET(10,3)=-1
 4723   LET ET(11,0),ET(11,1)=-34:LET ET(11,2)=1:LET ET(11,3)=-1 !
 4724   LET ET(12,0),ET(12,1)=-34:LET ET(12,2),ET(12,3)=34
 4725   LET ET(13,0),ET(13,1)=-34:LET ET(13,2)=1:LET ET(13,3)=34 !
 4726   LET ET(14,0),ET(14,1)=-1:LET ET(14,2)=-34:LET ET(14,3)=34 !
 4727   LET ET(15,0)=34:LET ET(15,1)=-34:LET ET(15,2)=1:LET ET(15,3)=-1
 4730 END DEF
Arra is gondoltam, hogy a fenti értékadások ne foglalják a helyet a programban, ezt is lehetne külön fájlból betölteni. Most nincs ilyenre szükség, de ha túl nagy lenne a program, akár meg is lehetne csinálni.
De még lehet, hogy nem ez, hanem Tomato eljárása marad a programban, csak azt kicsit nehezebb átírni, kiegészíteni, ha még valamivel ki akarom egészíteni a szörnyek mozgását. (Pl. ahol nincs semmi fal vagy akadály hosszú távon, hogy hogyan mozogjon.)
Title: Re: Dots and Gems
Post by: szipucsu on 2020.June.25. 20:03:40
Most Tomato szörnymozgató eljárása van a programban, jól működik. Talán annyit lehetne változtatni, hogy ha mind a négy irányba mehet, akkor nagyobb valószínűséggel tartsa a régi irányt, mint hogy irányt váltson. Itt a snapshotban pont ez jönne jól: [attach=1] Viszont ilyenkor meg az lenne a gond, hogy ha csak kereszteződésnél lenne 4 iránylehetőség, akkor meg majdnem mindig csak továbbmenne, nem fordulna el. De lehet, hogy ez nem lenne gond. Lehet, hogy ez most így jó, ahogy van.

Lehet, érdemes lenne még a drágakövek felvételekor egy kis fényeffekt, a szörnyekkel ütközéskor meg képernyőrázás.
A menühöz még gondolkodom kisebb animáción.
Azt nem tudja valaki, hogyan lehetne megoldani, hogy ebben a négyszínű karakteres módban 8 szín lehessen? Amikor néhány karakternek más a színe, mint a többinek.
Title: Re: Dots and Gems
Post by: geco on 2020.June.26. 12:28:18
a fenyeffekt jo otletnek tunik, bar lehet zavaro is, mert sok a potty, a kepernyorazas sztem tuti, es az anim a menube is.
Title: Re: Dots and Gems
Post by: szipucsu on 2020.July.24. 17:53:20
Időközben Geco-val beszélgetés közben felmerült, hogy a játék nem fut megfelelően EP64-en. A program elejefelé van egy sor:

  390 LET VM=(SPEEK(255,14644)+((SPEEK(255,14645)-128)*256))-35

Itt meghatározzuk, hol kezdődik a videolap, ahonnan majd adatokat akarunk kiolvasni. Elvileg a videomemória helye is eléggé változékony, mégis csak a program elején van ez a sor, ahova később nem tér vissza a gép, és mégis jól működik 128-as gépen.
EP64-en eleve lassabb az egész játék (nem gondoltam, hogy egy basic programnál is ekkora jelentősége van, hogy a videomemóriát használja-e vagy nem), és nem is működik jól, mert máshol van az LPT és a videomemória.
Addig jutottam el, hogy a következő sorok adatait bele kéne művelni a fenti VM változó értékébe:

   10 LET LPTSTART=SPEEK(255,16372)+(SPEEK(255,16373)-128)*256
   20 LET LPT=LPTSTART+20

De az is lehet, hogy a VM változó értékét teljesen át kéne írni. Még nem tudom, még kísérletezek vele. Addig is, ha valakinek van ötlete, megírhatja.

Addig is felteszem a legutóbbi verzióját a játéknak. Talán csak Zozo "ASK 3 A" ötlete került bele, hogy megnézze, van-e magnón kívül más is, és ha igen, akkor menti a pontszámtáblát.
[attach=1]
Title: Re: Dots and Gems
Post by: Ferro73 on 2020.July.24. 19:03:15

  390 LET VM=(SPEEK(255,14644)+((SPEEK(255,14645)-128)*256))-35


Erre egyszerűsítetted le.
Már volt EXOS kompatibilis változat.
Mert EXOS v2.0-nál máshol kezdődött az LPT.

Viszont az LPT kezdeti címe egy állandó helyen tárolódik.
Ezért volt olyan sok SPEEK az egyenletben./4/
Title: Re: Dots and Gems
Post by: geco on 2020.July.24. 19:23:28
igen, az lpt kezdocimet a bff4h tarolja, akkor az a verzio pont jo is volt :-)
Title: Re: Dots and Gems
Post by: szipucsu on 2020.July.24. 21:08:22
Visszakerestem a Dot collector turbo edition-t, amit tovább írva lett ez a program. Abban is ugyanez a VM érték volt. Hacsak nem néztem el valamit.
Előszedtem az Entersnake-et is, az EP64-en is helyesen fut ebből a szempontból (más probléma viszont van vele, arra majd talán később visszatérek), ott ez volt:

Code: [Select]
5870 DEF SCRINI
 5880   LET LPBADDL=SPEEK(255,16372)
 5890   LET LPBADDH=SPEEK(255,16373)
 5900   LET LPBADDH=LPBADDH-128:LET LPBSZ=255
 5910   LET LPBADD=LPBADDL+(256*LPBADDH)
 5920   SET VIDEO X 40:SET VIDEO Y 1
 5930   SET VIDEO MODE 0:SET VIDEO COLOR 1
 5940   FOR GIFF=1 TO 27
 5950     OPEN #GIFF:"video:"
 5960     PRINT #GIFF:CHR$(27);"o"
 5970     DISPLAY #GIFF:AT GIFF FROM 1 TO 1
 5980     SET #GIFF:SCROLL OFF
 5990     LET CIM=LPBADD+(GIFF*16)
 6000     LET GETAH=SPEEK(LPBSZ,CIM+5)-128
 6010     LET GETAN(GIFF)=SPEEK(LPBSZ,CIM+4)+(256*GETAH)
 6020   NEXT
 6030 END DEF

Szóval ide is majd ilyesmi kéne, csak ott még soronként más videolap volt, itt meg csak egy nagy videolap van. Megpróbálom innen ellopni az elvet és megcsinálni a VM változót. (De ha valaki esetleg megcsinálja, azt is örömmel fogadnám.)

Más probléma, hogy EP64-en lassabb a sebesség, a zene akadozik a menüben (az Entersnake-ben legalábbis), tehát több mindent át kéne majd írni, hogy ugyanúgy menjen EP64-en is. Nem tudom, ez így megéri-e, vagy jobb lenne külön elkészíteni az EP64-es verziót. De lehet, hogy csak arra kéne külön egy változó, hogy mennyit várakoztasson játék közben, és EP64-en kisebb lenne a szám.

UI.: Kipróbáltam, a Hungry Creature mit csinál EP64-en. Betöltődik, de nem indul el, leáll Insufficient memory üzenettel. Nem tudom, érdemes-e megpróbálni csinálni vele valamit, mert valaki pont ezzel akarna EP64-en játszani...
Title: Re: Dots and Gems
Post by: geco on 2020.July.25. 09:45:09
na, ez cim szamito teljesen jo, annyi, hogy a GETAH ertekadasanal nem 128-at, hanem 192-t kell kivonni, de ugy latszik a speek jol lekezeli a 16k-nal nagyobb szamokat, igy lehet a kivonas is folosleges.
Az, hogy hany videolapod van, nem szamit, az EXOS LPT-ben mindig 1 statusz sor + 27 karaktersor definicio van, akar 1 sor magas kepet definialsz, akar 27-et, tehat a lathato kepernyod kezdopoziciojatol, es annak magassagaval kell operalni az LPT-ben, ha nem nyitsz es zarsz uj videolapot, es nem scrollozol, akkor eleg egyszer kigyujteni a cimeket a lap letrehozasa utan, mint ahogy a lenti pelda mutatja, ha ezek valamelyiket csinalja a program, akkor erdemes inkabb egyesevel csak a szukseges LPB-kbol lekerdezni a cimet, mondjuk sprite utkozesdetektalasara.
szerintem eleg a varakozasokat atallitani.
HC-nel az a kerdes, hogy mennyivel kevesebb a memoria, ha sokkal, akkor nem hinnem, hogy erdemes probalkozni.
Title: Re: Dots and Gems
Post by: szipucsu on 2020.July.25. 11:14:15
HC-nel az a kerdes, hogy mennyivel kevesebb a memoria, ha sokkal, akkor nem hinnem, hogy erdemes probalkozni.
Ha külön DATA sorokat összevonok egyetlen sorba, azzal lehet memóriát spórolni? Vagy ha több utasítást több sor helyett egyetlen sorba összevonok? Majd még kísérletezek azzal is.
Title: Re: Dots and Gems
Post by: geco on 2020.July.25. 11:42:47
Ha külön DATA sorokat összevonok egyetlen sorba, azzal lehet memóriát spórolni? Vagy ha több utasítást több sor helyett egyetlen sorba összevonok? Majd még kísérletezek azzal is.
Szerintem igen, ugyan nem tudom mennyit, de a sorszamokat, es az utasitas par bajtjat megsporolod 2 data osszevonasaval, tobb soros utasitasnal meg a sorszam bajtokat.
Title: Re: Dots and Gems
Post by: Ferro73 on 2020.July.26. 08:31:41

Code: [Select]
5870 DEF SCRINI
 5880   LET LPBADDL=SPEEK(255,16372)
 5890   LET LPBADDH=SPEEK(255,16373)
 5900   LET LPBADDH=LPBADDH-128:LET LPBSZ=255
 5910   LET LPBADD=LPBADDL+(256*LPBADDH)
 5920   SET VIDEO X 40:SET VIDEO Y 1
 5930   SET VIDEO MODE 0:SET VIDEO COLOR 1
 5940   !FOR GIFF=1 TO 27
 5950     OPEN #1:"video:"
 5960     PRINT #1:CHR$(27);"o"
 5970     DISPLAY #1:AT 1 FROM 1 TO 27
 5980     SET #1:SCROLL OFF
 5990     LET CIM=LPBADD+(1*16) !
 6000     LET GETAH=SPEEK(LPBSZ,CIM+5)-128
 6010     LET GETAN(GIFF)=SPEEK(LPBSZ,CIM+4)+(256*GETAH)
 6020   !NEXT
 6030 END DEF

Más probléma, hogy EP64-en lassabb a sebesség, a zene akadozik a menüben (az Entersnake-ben legalábbis), tehát több mindent át kéne majd írni, hogy ugyanúgy menjen EP64-en is. Nem tudom, ez így megéri-e, vagy jobb lenne külön elkészíteni az EP64-es verziót. De lehet, hogy csak arra kéne külön egy változó, hogy mennyit várakoztasson játék közben, és EP64-en kisebb lenne a szám.


esetleg egy TIME viszony szám?
valami ilyesmi
Code: [Select]
10 TIME "00:00:00"
20 FOR X =0 to 32767
30  IF TIME="00:00:01" THEN EXIT NEXT
40 NEXT
50 IF X<250 THEN SPEED=EP64BASIC
60 IF 250<X THEN SPEED=EP128BASIC
70 IF 1250<X THEN SPEED=EP64ZZZIP
80 IF 1550<X THEN SPEED=EP128ZZZIP

Title: Re: Dots and Gems
Post by: ergoGnomik on 2020.July.26. 10:39:02
Szerintem igen, ugyan nem tudom mennyit,
Megnéztem a régi PETSCII-s projektemben. Egy BASIC DATA sor kezdődik egy bájt hossz adattal, folytatódik három bájt sorszám adattal, utána jön a DATA tokenje, ami látszólag két bájt, majd egy szóköz és a végén az adatok szövegesen. Két DATA sor összevonásával 6-7 bájtot meg lehet spórolni. Csak arra kell vigyázni, hogy olyan adatcsoportot nem szabad összevonni másikkal (a végére ragasztani), amit RESTORE utasítás segítségével többször is használ a program.

Próbálom értelmezni az első forráskódot, de vannak dolgok, amiket nem teljesen értek. Az LPBSZ miért változó? Látszólag sehol sem változik az értéke. A -128-ak helyett nem inkább BAND 127 lenne a korrekt művelet? Az a FOR ciklus ami ki lett kommentezve az azért volt ott, hogy az EXOS LPT összes sorának külön meg lehessen határozni a memória címét?
Title: Re: Dots and Gems
Post by: szipucsu on 2020.July.26. 15:15:55
esetleg egy TIME viszony szám?
valami ilyesmi
Code: [Select]
10 TIME "00:00:00"
20 FOR X =0 to 32767
30  IF TIME="00:00:01" THEN EXIT NEXT
40 NEXT
50 IF X<250 THEN SPEED=EP64BASIC
60 IF 250<X THEN SPEED=EP128BASIC
70 IF 1250<X THEN SPEED=EP64ZZZIP
80 IF 1550<X THEN SPEED=EP128ZZZIP
Szerintem a TIME értékét nem jó elállítani, mert ha pl. órakártya van a gépben, akkor nem jó az időt elállítani, valami más módszerrel kéne mérni az időt. Vagy valami más módszerrel megállapítani, hogy az adott gép EP64 vagy EP128-e. Ha jól tudom, a VERNUM változó 2.1 a 128-as, 2.0 64-es gép esetében. Azt nem tudom, hogy létezik-e 2.0-ás verziójú Exos 128-as géphez, vagy 2.1-es 64-es géphez valami tévedés folytán valahol.
Ja, de mégsem jó a VERNUM változó, mert a Zzzip annak is kerekíti az értékét, gondolom. Na, most kipróbáltam: a Zzzip mindig 1-et ad vissza a VERNUM változó értékére, akár 2.1-es, akár 2.0-ás. Akkor ezt a Zzzip nem jól kezeli.
Van viszont a VER$ változó, aminek a 29-31. karakterében benne van az Exos/Basic verziószáma is, abból is ki lehetne olvasni. (Azt hiszem, a dokumentációkban nem is említik a VER$ és VERNUM változókat, valamelyik könyv elején írnak róluk.)
Hogy Zzzip vagy basic alól megy-e a program, azt legegyszerűbben a PI értékéből lehet megállapítani. Ha 3, akkor Zzzip megy (mert a Zzzip kerekít), ha nem 3 (3-nál nagyobb), akkor basic.
Hirtelen ez jut eszembe:

Code: [Select]
50 IF PI>3 AND VER$(31)=0 THEN LET SPEED=EP64BASIC
60 IF PI>3 AND VER$(31)>0 THEN LET SPEED=EP128BASIC
70 IF PI=3 AND VER$(31)=0 THEN LET SPEED=EP64ZZZIP
80 IF PI=3 AND VER$(31)>0 THEN LET SPEED=EP128ZZZIP

Itt most a program a verziószám utolsó számjegyét vizsgálja, ha az 0 (2.0-ás verzió), akkor EP64, ha 0-nál nagyobb (pl. 2.1-es, 2.2-es, stb. verzió), akkor EP128. Probléma lehet még, hogy állítólag van/volt 1.9-es Exos/basic is, és állítólag lesz 3.0-ás Exos/basic, nem tudom, ezeket is számba kellene-e venni.

UI.: Most nézem, a VER$-ban csak a basic verziószáma van benne, az Exos-é nincs. Gondolom, a VERNUM is a basic verziószáma, abból meg csak 2.0 és 2.1 létezik. (Volt az EXT bug javítása, de az úgy tudom, nem a basic, hanem az Exos módosítása.)
Nem lenne egyszerűbb egyébként a SPEEK-elés helyett IF VER$(31)=... THEN ...-nel állítani be az LPT és a videomemória kezdőcímét? Vagy az nem bombabiztos?
Title: Re: Dots and Gems
Post by: Ferro73 on 2020.July.26. 16:08:31
Szerintem a TIME értékét nem jó elállítani, mert ha pl. órakártya van a gépben, akkor nem jó az időt elállítani, valami más módszerrel kéne mérni az időt. Vagy valami más módszerrel megállapítani, hogy az adott gép EP64 vagy EP128-e.

Code: [Select]
50 IF IN(176)=252 AND PI<>3 THEN SPEED=EP64BASIC
60 IF IN(176)<=248 AND PI<>3 THEN SPEED=EP128BASIC
70 IF IN(176)=252 AND PI=3 THEN SPEED=EP64ZZZIP
80 IF IN(176)<=248 AND PI=3 THEN SPEED=EP128ZZZIP
Akkor ennél biztosabb nincs.
Code: [Select]
50 IF PI>3 AND VER$(31)=0 THEN LET SPEED=EP64BASIC
60 IF PI>3 AND VER$(31)>0 THEN LET SPEED=EP128BASIC
70 IF PI=3 AND VER$(31)=0 THEN LET SPEED=EP64ZZZIP
80 IF PI=3 AND VER$(31)>0 THEN LET SPEED=EP128ZZZIP

És akinek nincs VERNUM telepítve ?
ERROR ???
Title: Re: Dots and Gems
Post by: szipucsu on 2020.July.26. 16:48:15
Akkor ennél biztosabb nincs.
Ez tetszik, ezt fogom használni.

Quote
És akinek nincs VERNUM telepítve ?
Azt telepíteni kell, vagy hogyan érted? Nincs benne alapból minden gépben? Szerintem ugyanúgy benne van, mint a PI a basicben. (Vagy nem tudom, a PI-t a basicben tárolja-e a rendszer, vagy netalán már az Exos is tudja.)

Úgy emlékszem, valaki kitalálta az IS-BASIC v2.2-t, mert nagyon megörült, hogy a status sorban át tudja írni a szöveget a saját nevére. De lefogadom, a VERNUM és VER$ változókban már nem írta át 2.2-re. :D

UI.: A Zzzip ismertetőjében (http://ep128.hu/Ep_Util/Zzzip.htm) nincs benne, hogy a VERNUM-ot hogyan kezeli a Zzzip (alapból érdekes, mivel az egy tizedestört, amit kerekíteni szokott). Érdemes lenne ezt is beleírni.

UI2.: Ha az "Enterprise" szövegre van szüksége valakinek, azt nem kell karakterenként eltárolni, mert a VER$ változó elején is ott van. Ez akkor lehet jó, ha valaki pl. 256 bájtosnál nem nagyobb méretű programot ír valami versenyre, és spórolni kell a karakterekkel.

UI3.: Nem is kell a basic programnál megnézni külön, EP64 vagy EP128 van-e. Ha nincs lefordítva Zzzippel a program, a sebesség lehet a leggyorsabb, basicben az is lassú lesz.
Title: Re: Dots and Gems
Post by: szipucsu on 2020.July.29. 21:44:12
Az a FOR ciklus ami ki lett kommentezve az azért volt ott, hogy az EXOS LPT összes sorának külön meg lehessen határozni a memória címét?
Gondolom, igen. (Bár a részletekhez nem értek.) Abban a játékban nem egyetlen nagy videolap volt a játéktér, hanem soronként külön videolapokat nyitottunk a játéktérnek, így minden videolapon külön-külön kellett vizsgálni pl. az ütközéseket. Ez azért volt jó, mert minden videolapnak külön lehet palettát beállítani, így szép színes lehet a kép. Ez még az Entersnake játékban volt.
Title: Re: Dots and Gems
Post by: Ferro73 on 2020.July.30. 17:50:18
Gondolom, igen. (Bár a részletekhez nem értek.) Abban a játékban nem egyetlen nagy videolap volt a játéktér, hanem soronként külön videolapokat nyitottunk a játéktérnek, így minden videolapon külön-külön kellett vizsgálni pl. az ütközéseket. Ez azért volt jó, mert minden videolapnak külön lehet palettát beállítani, így szép színes lehet a kép. Ez még az Entersnake játékban volt.
Igen pontosan.
Ez volt az igény anno.
Title: Re: Dots and Gems
Post by: ergoGnomik on 2020.July.30. 21:02:31
Köszi! A másik kérdésekre esetleg valami? Lécci!
Title: Re: Dots and Gems
Post by: szipucsu on 2020.July.30. 22:07:26
Megpróbáltam EP64 kompatibilissé varázsolni a játékot, kevés sikerrel. Ebből indultam ki:

Code: [Select]
5870 DEF SCRINI
 5880   LET LPBADDL=SPEEK(255,16372)
 5890   LET LPBADDH=SPEEK(255,16373)
 5900   LET LPBADDH=LPBADDH-128:LET LPBSZ=255
 5910   LET LPBADD=LPBADDL+(256*LPBADDH)
 5920   SET VIDEO X 40:SET VIDEO Y 1
 5930   SET VIDEO MODE 0:SET VIDEO COLOR 1
 5940   !FOR GIFF=1 TO 27
 5950     OPEN #1:"video:"
 5960     PRINT #1:CHR$(27);"o"
 5970     DISPLAY #1:AT 1 FROM 1 TO 27
 5980     SET #1:SCROLL OFF
 5990     LET CIM=LPBADD+(1*16) !
 6000     LET GETAH=SPEEK(LPBSZ,CIM+5)-128
 6010     LET GETAN(GIFF)=SPEEK(LPBSZ,CIM+4)+(256*GETAH)
 6020   !NEXT
 6030 END DEF

Ezt összekutyultam a VIDEO_INI eljárásban lévő dolgokkal, de ott persze más is volt, és nem a #1-es, hanem a 102-es csatorna, ahol a játéktér lesz:
Code: [Select]
5490 DEF VIDEO_INI
 5500   SET 6,1:SET KEY CLICK OFF:CLEAR FONT
 5510   CLOSE #102:CLOSE #0

 5515   LET LPBADDL=SPEEK(255,16372):LET LPBADDH=SPEEK(255,16373)
 5516   LET LPBADDH=LPBADDH-128:LET LPBSZ=255
 5517   LET LPBADD=LPBADDL+(256*LPBADDH)

 5520   SET VIDEO X 34:SET VIDEO Y 95:SET VIDEO MODE 0:SET VIDEO COLOUR 1
 5530   OPEN #102:"VIDEO:"
 5540   SET #102:SCROLL OFF:PRINT #102:CHR$(27);"o"
 5550   DISPLAY #102:AT 3 FROM 15 TO 34

 5555   LET CIM=LPBADD+(1*16) !
 5556   LET GETAH=SPEEK(LPBSZ,CIM+5)-128
 5557   LET VM=SPEEK(LPBSZ,CIM+4)+(256*GETAH)

 5560   SET VIDEO X 30:SET VIDEO Y 1
 5570   OPEN #1:"VIDEO:"
 5580   SET #1:SCROLL OFF:PRINT #1:CHR$(27);"o"
 5590   DISPLAY #1:AT 25 FROM 1 TO 1
 5600   OPEN #0:"EDITOR:"
 5610   SET VIDEO X 23:SET VIDEO Y 3:SET VIDEO MODE 15:SET VIDEO COLOUR 0
 5620   OPEN #101:"VIDEO:"
 5630   SET PALETTE 68,3
 5640   PRINT #101:" LOADING CHARACTER SET":PRINT #101:" LOADING BEST SCORES":PRINT #101:" LOADING SOUND DATA"
 5650 END DEF

Az 5557-es sorban a GETAN helyett VM-et írtam be, mert eddig úgy volt a programban, hogy egy későbbi sorban a VM-nek adtuk a következő értéket:

Code: [Select]
390 !LET VM=(SPEEK(255,14644)+((SPEEK(255,14645)-128)*256))-35
Így most a képernyőn egyáltalán nem látszanak sem a szörnyek, sem a krapek. Gondolom, az 1-es és a 102-es videocsatorna eltérése zavar be. Vagy mi lehet a gond? A VIDEO X és VIDEO Y értéke is más most, mint ami akkor volt.
A mellékletben a gems.txt-ben van az egész program a fenti módosításaimmal:
[attach=1]
Title: Re: Dots and Gems
Post by: geco on 2020.July.30. 22:40:56
ha a 102-es csatornara elso soranak kezdocimet szeretned megkapni, akkor a cim valtozoban 3*16-ot kell megadni. mivel a displayben az AT 3
Title: Re: Dots and Gems
Post by: Ferro73 on 2020.July.31. 06:51:43
ha a 102-es csatornara elso soranak kezdocimet szeretned megkapni, akkor a cim valtozoban 3*16-ot kell megadni. mivel a displayben az AT 3
Úgy valahogy:
Code: [Select]
5555   LET CIM=LPBADD+(sorszama*16) !
És lehet, hogy a
Code: [Select]
5540   SET #102:SCROLL OFF:PRINT #102:CHR$(27);"o"
sort kiolvasás utánra kellene rakni.
Title: Re: Dots and Gems
Post by: szipucsu on 2020.July.31. 09:22:49
3*16

És lehet, hogy a
Code: [Select]
5540   SET #102:SCROLL OFF:PRINT #102:CHR$(27);"o"
sort kiolvasás utánra kellene rakni.

Na, ezeket megcsináltam, most majdnem jó, csak függőlegesen és vízszintesen is 1-et hozzáad a koordinátáihoz mind a szörnyikéknek, mind a krapeknak. A szörnyikék így a falba kerültek bele, kis agresszívak áttörték a falat is, és kiszabadultak a játéktérből. Én meg mehettem utánuk. :D
Először megpróbáltam 1-et kivonni a CIM változóból, hogy hátha legalább a vízszintes koordináta helyreáll, erre eltűnt megint mindenki egy párhuzamos LPT univerzumban.

Szerk.: Aztán megpróbáltam ezt:
Code: [Select]
5557   LET VM=SPEEK(LPBSZ,CIM+4)+(256*GETAH)-35Tehát 35-öt kivontam a végén (34 hosszú egy sor, így azt kivonjuk, meg még egyet, hogy a vízszintes koordináta is helyreálljon). Most jól működik. Ez így jó lesz, vagy nem ez a szobatiszta megoldás?
Most EP64-en is jól működik. :smt041 (Csak lassú, de majd nem sokára erre is bevetjük gondosan kidolgozott stratégiánkat.)
Érdekes, hogy EP64-en csak Zzzippel fordítva fut. A basic program nem indul el EP64-en, valószínűleg túl nagy a program, és a videolap nyitogatások is betesznek a kisebb memóriának, mert nem találja a VIDEO_INI eljárást, pedig ott van. EP128-on basicben is megy, csak persze nem szuperszonikus sebességgel.
Title: Re: Dots and Gems
Post by: Ferro73 on 2020.July.31. 17:27:05
Code: [Select]
5540   SET #102:SCROLL OFF:PRINT #102:CHR$(27);"o"
helyett
Code: [Select]
5540   SET #102:SCROLL OFF:PRINT #102:CHR$(27);"o";
Már csak + vagy - 1,2 kellene.
de ha
Code: [Select]
5540   SET #102:SCROLL OFF:rem PRINT #102:CHR$(27);"o";
akkor semmi +- érték nem kell.
Kivéve a koordináta mátrix számok.
Title: Re: Dots and Gems
Post by: szipucsu on 2020.July.31. 18:17:04
helyett
Kipróbáltam ;-vel és rem-mel is, de ugyanúgy 1-gyel több volt a függ. és vizsz. koordináta értéke is. Csak akkor jó, ha 35-öt kivonok a végén a VM-ből. Most így néz ki ez a rész:

Code: [Select]
5510   CLOSE #102:CLOSE #0
 5515   LET LPBADDL=SPEEK(255,16372):LET LPBADDH=SPEEK(255,16373)
 5516   LET LPBADDH=LPBADDH-128:LET LPBSZ=255
 5517   LET LPBADD=LPBADDL+(256*LPBADDH)
 5520   SET VIDEO X 34:SET VIDEO Y 95:SET VIDEO MODE 0:SET VIDEO COLOUR 1
 5530   OPEN #102:"VIDEO:"
 5550   DISPLAY #102:AT 3 FROM 15 TO 34
 5555   LET CIM=LPBADD+(3*16) !
 5556   LET GETAH=SPEEK(LPBSZ,CIM+5)-128
 5557   LET VM=SPEEK(LPBSZ,CIM+4)+(256*GETAH)-35
 5558   SET #102:SCROLL OFF:PRINT #102:CHR$(27);"o";
Title: Re: Dots and Gems
Post by: Ferro73 on 2020.July.31. 19:59:31
Előbb-útobb belejössz.

Minden olyat amit csak egyszer használsz /SET CHAR, VIDEO_INI, MUSIC_INI.../ a program legvégére helyezd.
Elérése GOSUB / RETURN, CALL/DEF ... END DEF, végső esetben GOTO .


Bár a SET_CHAR helyett használhatnád az OPEN ... COPY file to video megoldást és így rengeteg SET CHARACTER... vagy DATA felszabadul.
Title: Re: Dots and Gems
Post by: szipucsu on 2020.July.31. 20:14:16
Bár a SET_CHAR helyett használhatnád az OPEN ... COPY file to video megoldást és így rengeteg SET CHARACTER... vagy DATA felszabadul.
A játék közbeni karakteres animációra a te SPEEK-es módszered használom, ami Zzzippel sokkal gyorsabb, mint a set character. Set character nincs is a programban szerintem.
De lehetne a karakteres animációra a PRINT #102:CHR$(27)&blablabla módszert is használni, de gondolom, az lassabb lenne a SPEEK-es módszernél.
Title: Re: Dots and Gems
Post by: Ferro73 on 2020.July.31. 21:18:39
Nem arra gondoltam.
De az animációt is változtattad, nem a SET CHAR.. hanem a SPOKE (255, VM+x ,kigyó+fázis)
A falak, a fázisok, egyéb fix karakterek amik soha többé nem változnak.
Title: Re: Dots and Gems
Post by: szipucsu on 2020.July.31. 21:39:57
Nem arra gondoltam.
Ezt nem teljesen értem, mire gondoltál. Az a SPOKE-os karakterváltoztató módszer tőled van. A karakterkészletet pedig fájlból tölti be az egészet, azt is te csináltad.
A szörnymozgás jelenleg Tomato77 eljárása.
Geco, ErgoGnomik és Zozosoft is adott a játékba ezt-azt.
Ez az igazi közös játékfejlesztés!

Egyébként a 102-es csatorna első sorának kezdőcímének megkapásához miért kellett kivonni abból az értékből 35-öt? Később még történhet valami irkálás a csatornára, és az arrébb tolja?
Title: Re: Dots and Gems
Post by: Ferro73 on 2020.July.31. 22:07:08
Egyébként a 102-es csatorna első sorának kezdőcímének megkapásához miért kellett kivonni abból az értékből 35-öt? Később még történhet valami irkálás a csatornára, és az arrébb tolja?
Igen a 35 úgy adódik, hogy 1 sor + a print "o";
Azért, hogy ne keljen a VM-hez +-1sor+-1"o" hozzá adni .
Ki kellene hagyni a
Code: [Select]
PRINT #102:CHR$(27);"o"
részt.
Bár nem tudom miért kell hozzá adni +-35 ha ki hagyod a PRINT-et.

Később még történhet valami irkálás a csatornára, és az arrébb tolja?

Igen

Ezt nem teljesen értem, mire gondoltál. Az a SPOKE-os karakterváltoztató módszer tőled van. A karakterkészletet pedig fájlból tölti be az egészet, azt is te csináltad.
Az úgy jó akkor.

Title: Re: Dots and Gems
Post by: szipucsu on 2020.August.01. 10:26:13
Ki kellene hagyni a
Code: [Select]
PRINT #102:CHR$(27);"o"
részt.
Ez szerintem nem ír valójában semmit a képernyőre. A CHR$(27) jelzi, hogy vezérlőkód (escape szekvencia) jön, az "o" pedig azt jelenti, hogy kikapcsolja teljesen a kurzort a videolapról.
Szerintem az lehet, hogy a SPEEK-ek nem 34-nek, hanem 35-nek kezelik a lap vízszintes méretét. De mindegy, a lényeg, hogy működik minden gépen most.
Title: Re: Dots and Gems
Post by: szipucsu on 2020.August.02. 21:32:28
Már majdnem kész minden. Működik EP64-en és EP128-on is. Egyelőre tájékoztatás miatt kiírja induláskor, milyen gépet érzékelt maga alatt a program (az IN(176) alapján).
[attach=1]
[attach=2]
A sebesség is szinte teljesen ugyanaz most már EP64-en és EP128-on. Nem teljesen, de majdnem. Annyit csinál, hogy a várakoztatási ciklus változóját elfelezi, ha EP64-es a gép.
A drágakövek (varázstabletták) felvételekor fényeffekt is van, ami függ attól is, hogy a kapu éppen kinyílt vagy bezáródott, vagy éppen még semmi nem történt.
A szörnyekkel való ütközéskor megváltozik a paletta, sötétebb lesz utána a játéktér. Minél többször ütközünk a szörnyekkel, annál sötétebb lesz. Ha varázstablettát felveszünk, visszaáll az eredeti paletta.
Ami még nem jó: a menübe megpróbáltam palettaváltoztatós "animációt" is betenni (ugyanazt, mint játék közben a drágakövek felvételénél). Eléggé nyakatekerten oldottam meg anno a várakozást a menüben, hogy a zene is szóljon és ne teljen be a hangbuffer, de ne is fogyjon el a zene, ne akadozzon. Ez most még rosszabb, mert az animáció is lassít. A várakozáshoz a ZENE1, ZENE2 és KES változót is használja, ami már túl sok és nehéz eligazodni köztük. Az lenne a lényeg, hogy a zene indulásakor még ne várakozzon, amíg nincs elég hang a hangbufferben, mert akkor szaggatni fog. Utána figyelni kell arra is, hogy ha elfogynak a hangok, de még szól a zene, akkor is várakozzon, és hogy ne legyen túl sok hang egyszerre, amitől ha betelik a hangbuffer, megakad az animáció és a tűzgomb figyelése is akadozik. Lehet, teljesen át kéne írni az egész menüvárakozást. Még próbálkozom. Ha valakinek van ötlete, átírhatja / jöhetnek javaslatok. Eddig így néz ki. A FAD1, FAD2 tömbben a színkódok vannak az elhalványításhoz, a PULSE változó pedig ahhoz kell, hogy 1-8-ig állítsa át a színeket a tömb tartalma alapján. Kérdéses, hogy a 2060-as sor kell-e egyáltalán:

Code: [Select]
1880 RESTORE 2080
 1890 CLEAR SOUND
 1900 LET ZENE,ZENE2=0:LET KES=4:LET PULSE=0
 1910 IF ZENE2<10 THEN GOTO 1930
 1920 IF ZENE2>57 OR KES<11 THEN GOTO 1980
 1930 LET KES=0:LET ZENE2=ZENE2+1
 1940 READ X,GY,Y
 1950 SOUND PITCH X,DURATION Y,SOURCE 0,STYLE 64,ENVELOPE 20,SYNC 2
 1960 SOUND PITCH GY+12,DURATION Y,SOURCE 1,ENVELOPE 20,SYNC 2,LEFT 32,RIGHT 64
 1970 SOUND SOURCE 3,STYLE 134,DURATION Y,SYNC 2,LEFT 64,RIGHT 16,ENVELOPE 20
 1980 LET KES=KES+1
 1990 LET ZENE=ZENE+1
 2000 IF ZENE=1800 THEN
 2010   CLEAR SOUND
 2020   LET ZENE2,ZENE,KES=0
 2030   RESTORE 2080
 2040 END IF
 2042 IF KES=6 THEN
 2043   LET PULSE=PULSE+1
 2044   IF PULSE<9 THEN SET #102:PALETTE 76,169,245,FAD1(PULSE)
 2045   IF PULSE>8 THEN SET #102:PALETTE 76,FAD2(PULSE-8),245,175
 2046   IF PULSE=16 THEN LET PULSE=0
 2047 END IF
 2050 IF USR(PRJOY,0)<>3 THEN LET ST=USR(PRJOY,0):CLEAR SOUND:GOTO 420
 2060 LET WWW=4:CALL WARTEN
 2070 GOTO 1910
Title: Re: Dots and Gems
Post by: szipucsu on 2020.August.15. 18:06:04
Sikerült végül összehozni valami enyhe fényeffektet a menübe, és a zene sem szaggat közben. Ez most már a végleges verzió teljesen. Működik EP128-on és EP64-en is. EP64-en kicsit lassabb.
[attach=1]
Itt vannak a grafikai elemekről is snapshotok. Lehet, nem mindegyik került be ezek közül a játékba, és lehet, olyan is van a játékban, amit nem mentettem el ide külön:
[attach=2]
Közreműködtek: Ferro73, ErgoGnomik, Tomato77, Zozosoft, Geco és talán mások is, már nem emlékszem pontosan.
Azt hiszem, folyt. köv.!
Title: Re: Dots and Gems
Post by: szipucsu on 2020.August.16. 12:31:30
Nem lassú egy kicsit a sebesség? A legelső verzió mintha gyorsabb lett volna, talán úgy élvezetesebb volt a játék, dinamikusabb.
Title: Re: Dots and Gems
Post by: szipucsu on 2020.August.25. 19:46:19
Kellemes kis pálya, kalandorok számára:
[attach=1]
Ha sikerül teljesíteni, nem történik még semmi, ez még csak próbálkozás.
Title: Re: Dots and Gems
Post by: szipucsu on 2020.August.26. 21:19:45
Pályaszerkesztő:
[attach=1]
A gemslev.bas maga a pályaszerkesztő, még betölti a 256.col és a gems.chr fájlokat, ez a 3 fájl tehát feltétlen kell hozzá. Talán lehetne Zzzippel fordítani, de nekem basicben is használhatónak tűnik.
A gemsrd a játék olyan változata, ami betölti a szerkesztővel elmentett pályát, itt lehet tesztelni remekművünket. (A .bas kiterjesztésű az eredeti basic, a .com a Zzzippel fordított betöltője. Ennek kell a betöltéshez a gems.chr, gems.hi, gems.env.)

A pálya szerkesztése közben a beépített botkormánnyal lehet mozogni a kurzorral. A kisbetűkkel pályaelemeket rakhatunk le, space-szel töröljük a pályaelemet a kurzor pozíciójából. A pályaelemek a következők (nem mindegyikhez használtam a grafikus karaktert, a lényeg, hogy felismerhető, merre kanyarodik, stb.):
[attachimg=2]
Lerakhatunk más karaktereket is, néhány kisbetű nem értelmes objektum, vagy egyéb. A legfontosabb a "w", ha nem akarunk a kanyargós karakterekkel szöszmötölni.
A négy szörny startpozícióját az 1, 2, 3, 4 számbillentyűkkel jelölhetjük ki a kurzor pozíciójában.
A %-kal (shift+5) szörnyet tehetünk le, amely nem mozog, csak ott van, érintése a játék közben olyan, mintha mozgó szörnnyel érintkeznénk. A "p" karakterre pacman figurát rak le. Ezt falként kezeli a krapek, de a szörnyek átmennek rajta és letörlik. Az álló szörnyeket is letörlik a szörnyek, ha útjukba kerül. (Így lehetne olyan pályát tervezni, ahol egy részhez csak a szörnyek tudják az utat megnyitni.)
"x"-re rakhatunk le drágakövet, ezeket számolja a szerkesztő, hogy mennyit kell összeszedni. A pályát úgy jó megtervezni, hogy páros számú drágakő legyen a kapun kívül, hogy az utolsó felvételével a kapu pont kinyíljon. (De lehet ravasz logikai feladványt is kitalálni, pl. hogy előbb be kell menni a kapun, bent összeszedni, amit lehet, és utána felvenni a kint lévő egyetlen maradék drágakövet.)

A kijelző (pontszám, stb.) is a képernyőn van, rá tudunk menni a kurzorral, de annak átszerkesztését nem menti el a szerkesztő. A kijelzőn lévő drágakövek illusztrációk, azokat ne töröljük le, mert csökkenti az összeszedendő drágakövek számát, pedig nem tartoznak a játéktérhez. De pl. szörnyet rakhatunk akár a kijelzőn belülre is elméletileg.
A szörnyek startpozícióját felülírhatjuk más karakterekkel, de nem célszerű, mert megtévesztjük saját magunkat. A krapek startpozícióját jelöli a szerkesztő, azt is felülírhatjuk, de nem célszerű.

Nagybetűket is el lehet helyezni a képernyőn a shifttel.

Függőlegesen majdnem 200 karakternyi lehet a pálya.

FILE MENÜ:
ESC-vel előhívhatjuk a file menüt. A menüből vissza a szerkesztőbe szintén az ESC-vel léphetünk.
Az 1-7 számbillentyűkkel lehívhatjuk a már "kiadott" játék pályáit további szerkesztésre.
L - Load: betölthetünk egy általunk elmentett pályát
S - Save: kimenthetjük a pályát, amit terveztünk. Kimentés előtt a fájlnév után még megkérdezi a szint számát is, amit a fájlba beleír, ennek értelme lehet, hogy nincs.
R - Read palette: az elmentett palettát tölti vissza. (Négy számot ír ki fájlba, a négy szín színkódját.)
P - Palette: elmenti a palettát.

Paletta átszerkesztése:
Pályaszerkesztés közben a SHIFT + 0-3-ig számbillentyűkkel választhatjuk ki, melyik színt akarjuk megváltoztatni (0 a háttér színe). Ekkor megnyílik lent egy ablak, amiben benne van a 256 szín, színátmenetenként csoportosítva. (Ezért kellett a basic topikban az a színkereső. :D ) Ahogy a színek között mászkálunk, a játéktéren az adott szín is aszerint változik, de csak akkor változtatja meg véglegesen a színt, ha space-t nyomunk. Ha ESC-et nyomunk, akkor kilép a színválasztóból és visszaállítja az eredeti színt.

Az elmentett pályáknak a .lev, az elmentett palettáknak a .pal kiterjesztést adja automatikusan. 8 betűből/számjegyből álló file nevet adhatunk meg mentésnél és töltésnél. Gyakorlatilag txt fájlként megnyitható és szerkeszthető fájlokat ment. A pályát txt fájlként tovább szerkeszthetjük PC-n. A fájl elején a pálya elé kerül néhány szám, az első a szint száma (ami lehet, nem is kellene), utána a 4 szám a paletta, utána jön a szint neve (lehet, ez sem kellene), a pálya függőleges mérete karakterekben, az összeszedendő drágakövek száma, az utolsó négy szám pedig a szörnyek startpozíciója (valami LPT-hez meg nem tudom, mihez hozzáadott értékek a videolapon).

Maga a játék a gemsX.lev fájlt keresi és tölti be. (X = szint száma) Tehát lennie kell egy gems1.lev fájlnak, amit egyből betölt, ezzel lehet tesztelni, mit alkottunk.

A tömörített fájlban benne van néhány paletta mintának, és a gems1.lev pálya, amiről tegnap tettem fel snapshotot, a függőleges mérete 131 karakter, de elvileg beleférne 180-190 karakter is.

Nem hiszem, hogy nagy tolongás lenne pályaszerkesztésre, de kedvcsinálónak teszek be egy pillanatképet a pályaszerkesztőből:
[attach=3]
A kurzor mozgatása lehet, hogy kicsit nehézkes, mert basic, szóval valószínű le kell majd fordítani Zzzippel a programot. De így is használható, így szerkesztettem tegnap a nagy pályát. Emulátorral kis gyorsítás talán belefér.
Title: Re: Dots and Gems
Post by: szipucsu on 2020.August.30. 20:55:20
A pályaszerkesztőben volt egy hiba, a szörnyek nem ott voltak az elején, ahol valóban látszottak. Ezt javítottam, és kiírja a felső sorba balra a szerkesztő, hogy éppen hányadik sorban vagyunk, jobbra pedig azt, hogy hány soros összesen a pálya. Az utóbbi számot a pálya elejétől számolja, míg az előbbibe beleszámolja a videolap felső üres sorait, így nem azonos a két szám, ha ugyanarra a sorra vonatkoznak.
Továbbra is a gemslev.bas a pályaszerkesztő, a gemsrd.com pedig a játék olyan változata, ami betölti a pályát.
Lehet, mégis jól jön majd a szint számának külön megadása mentéskor, ha majd később DATA sorokba beépítjük az elmentett pályákat.
A játék a gems1.lev, gems2.lev, stb. fájlokat keresi.
Van a mellékletben egy új pálya is, végig is játszható, de nem túl jó szerintem.
[attach=1]
Valaki nem akar próbálkozni pálya szerkesztésével?
Title: Re: Dots and Gems
Post by: szipucsu on 2020.August.31. 10:26:58
Kis módosítások.
A pályaszerkesztő:
Szint mentésekor nem kéri már a szint számát, automatikusan 1-et ír be. Ennek csak akkor van jelentősége, ha DATA sorokban van tárolva a pálya.

Bekerült a FILE MENU-be a Quick save level, azaz gyorsmentés (Q billentyű): kimenti a szintet egyből, fájlnév kérdezése nélkül. Ha korábban betöltöttünk szintet, vagy már mentettünk szintet, akkor annak a fájlnevét fogja használni. Így nem kell találgatni, melyiket is nyitottuk meg. Ha nem töltöttünk be korábban szintet és nem is mentettünk, akkor véletlenszerűen generál egy hétbetűs fájlnevet. Ez nem szokott értelmes szó lenni, és kiejteni is nehéz sokszor, de volt már jól hangzó szó is, leginkább japános hangzású.
A játékban a pálya nevének a file név jelenik meg ott, ahol eddig pl. a THE UTTORO ARUHAZ felirat volt. A pályaszerkesztő beírja a fájlba a megadott/generált file nevet. Így talán könnyebb követni, melyik pálya melyik.

Fájlnevet mindig meg kell adni betöltésnél! Nem használható a fájlválasztó. Meg lehetne oldani, de akkor nem tudná a fájl nevet honnan letárolni sztringben, hogy azzal el tudja menteni gyorsmentésnél.

A játék:
Most nem a gems1.lev stb. fájlokat keresi, hanem üres sztring van megadva fájlnévnek: Magnós gépnél tölti, ami jön. Emulátoron jó ez, ilyenkor megjelenik a PC-s munkakönyvtár, és ki lehet választani a pályát, amit tölteni akarunk. Igazi gépen ez nem annyira praktikus, de úgyis mindenki emulátort használ. Aki mégis igazi gépen nézi ezt, használja az előző verzióból a gemsrd játékot, az a gems1.lev fájlt tölti.

Közben eszembe jutott, ha úgyis meg van adva a fájlban is a file név, akkor lehetne fájlválasztóból is tölteni, mert onnan is ki tudná olvasni. De ehhez az kell, hogy a fájlban ne írogassuk át a nevet. Ha majd elkészül sok szint, majd át lehet nevezni a fájlokat, hogy szintenként egymás után töltse, vagy DATA sorok mögé betenni az egészet, ha elfér. Kiderül még, pályautántöltős játék lesz-e ebből vagy nem.
Title: Re: Dots and Gems
Post by: szipucsu on 2020.September.02. 14:19:49
Kicsit módosítottam a pályaszerkesztőt:
A pálya (file) nevét kiírja alulra, így mindig tudhatjuk, mit szerkesztünk. Azt a nevet írja ki alul, amit legutóbb betöltöttünk vagy legutóbb elmentettünk, a Quick save-vel is azt menti. Ha nem töltöttünk be semmit, akkor a véletlenszerű file nevet írja oda, amit nehéz kiejteni (bár legutóbb enyhén finnes hangzása volt, általában nyelvtörők szoktak születni), és azzal fog a Quick save-vel menteni.
Beépített pálya lehívása után nem jelent meg a startpozícióban a krapek eddig, ezt is megcsináltam.

Zzzippel fordítva is megy, mint a huzat. Még megcsinálom úgy, hogy akinek nincs az agyában Z80-as processzor és nem bírja a sebességet, az is tudja használni. Átteszem a joystick figyelését, hogy ne a joy függvényt nézze, mert az folyamatosan fénysebességgel viszi a kurzort, hanem CHR$-ral nézze a belső joystickot, így első lenyomás után van egy pillanat pihi, csak utána jön a szuperszonikus sebesség. (Ha a key delay is normálisan van beállítva.) Így külső botkormányra megcsinálni majd macerás lenne, de úgyse használja senki a programot, aki meg mégis, úgyis emulátorral, aki meg mégis igazi gépen használja, annak jó lesz a belső joy is, ha pedig mégsem és ezen múlna a boldogsága, valamit kitalálunk külső joyra.

Nem gondolom, hogy sokan akarnak szabadidejükben pályákat tervezni, de mindig feltöltöm ide a legfrissebb verziót. Az Entersnake-nél se tudtam követni, melyik a legfrissebb verzió a gépemen, ezért a legjobb, ha itt van fent.
Title: Re: Dots and Gems
Post by: szipucsu on 2020.September.10. 21:27:05
A pályaszerkesztő kész, már csak a tömörített formátumban mentés és a pálya programrészletként (data sorok mögé) mentése hiányzik.
gemslev.bas - basic pályaszerkesztő, ez is használható
gemslev.com - zzzippelt változat
[attach=1]