Enterprise Forever

:HUN => Programozás => 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.