Enterprise Forever

:HUN => Programozás => BASIC => Topic started by: szipucsu on 2024.January.24. 22:53:37

Title: Ugribugri Sundibundi
Post by: szipucsu on 2024.January.24. 22:53:37
Biztos volt már ilyen ötlet basic nyelvre, mint ez itt, de még nem találkoztam vele. A gond, hogy maga a játéktér a képernyő kb. 5%-át foglalja el, a képernyő többi része érdektelen.
Ez most meglehetősen minimalista próbálkozás még. Talán valamit ki lehetne hozni ebből.
A lyukra rá lehet esni, nem esünk bele, de ha nagyon a széléről akarunk ugrani, akkor beleesünk.
Lehetne kétszer akkora (2x2 karakter) minden, de akkor is csak a képernyő 5-6%-át foglalná el.
Aki megszállott, ezzel is jót játszhat.
Külön érdekes, hogy a véletlenszerű "zenét" játék közben generálja a program.
[attachurl=1]
[attachurl=2]
Title: Re: Ugribugri Sundibundi
Post by: szipucsu on 2024.January.24. 23:47:24
Ez kicsit érdekesebb, elvileg folyamatosan gyorsul a játék, de alig érezni.
Sajnos jelentős gyorsulást a Zzzippel sem lehet elérni. Gondolom azért, mert a DEL billentyűvel (60-as kódú karakter) töröl le a járdából, és így görgeti, és ezért muszáj a 0-ás csatornát használni a 102-es helyett.
[attachurl=1]
[attachurl=2]
Title: Re: Ugribugri Sundibundi
Post by: geco on 2024.January.25. 08:40:53
Azt nem próbáltad, hogy milyen, ha STRINGként tárolod a pályát, és scrollnál az első karaktert levágod, az uccsót hozzáteszed, majd az egészet kiprinteled a #102-es csatornára, az egész soros print tök gyors, azt teszteltem, meg lehet a ZZZIP is hatékonyabb rajta.
Title: Re: Ugribugri Sundibundi
Post by: Povi on 2024.January.25. 13:29:05
jópofa!
olyan, mint trex játék, amikor nincs net a chrome-ban
na, azt vajon meg lehetne csinálni BASIC-ben? (vagy Pascal-ban?) karakteres képernyőn, nagyobb sprite-okkal.
Jó kihívásnak tűnik
Title: Re: Ugribugri Sundibundi
Post by: szipucsu on 2024.January.25. 20:52:09
STRINGként tárolod a pályát, és scrollnál az első karaktert levágod, az uccsót hozzáteszed, majd az egészet kiprinteled a #102-es csatornára
Valószínű tegnap éjjel lehetett, amikor eszembe jutott ugyanez, mivel lefekvéskor még nem volt meg az ötlet, de amikor felkeltem, már megvolt, közben nem tudom, mi történt.
Most itt áll a dolog, még folytatás várható:
[attachurl=1]
[attachurl=2]
Érdemes a space-t kicsit hosszabb ideig nyomva tartani, nem csak megpöccinteni! Lassabb sebességnél különben elmaradhat az ugrás.

Most már nincs akadálya, hogy akár gracha videolapra, akár attribútum videolapra kerüljön a pálya, esetleg játék közben váltogassa egymást időnként a kétféle videolap. Ha attribútum videolapra kerül a pálya, akkor célszerű lenne karakterenként színt is változtatni, ami nem tudom, mennyire lassítaná le az egészet. Nem olyan régen valamelyik topikban volt itt szó arról, hogy escape szekvenciával lehet stringen belül színt váltani, a set ink használata nélkül, ez kéne ide, de képtelen vagyok visszakeresni, hol volt erről szó. Valaki be tudná linkelni?
Van egy érzésem, hogy gracha videomódú lesz a pálya, de azért megpróbálom mindkét verziót.
Lehetne 16 vagy 256 színű videolap is, és akkor nagyobbak is lennének az objektumok, viszont a lyukakat így nem lehetne (egykönnyen) kirajzolni, mert a szóköz nem írja felül, ami már ott van, és a string alapján visszakeresni, hol van a luk, az eléggé procizabáló eljárásnak tűnik.
Title: Re: Ugribugri Sundibundi
Post by: ergoGnomik on 2024.January.25. 21:02:34
Escape szekvencia fejezet az EXOS könyvben. (http://ep128.hu/Ep_Konyv/Exos.htm#108)
Title: Re: Ugribugri Sundibundi
Post by: Ferro73 on 2024.January.25. 21:13:14
Azt nem próbáltad, hogy milyen, ha STRINGként tárolod a pályát, és scrollnál az első karaktert levágod, az uccsót hozzáteszed, majd az egészet kiprinteled a #102-es csatornára, az egész soros print tök gyors, azt teszteltem, meg lehet a ZZZIP is hatékonyabb rajta.

Ki próbáltam 19 a 24 hez arányban lassabb BASIC-ban zzzipvel nem próbáltam.
Title: Re: Ugribugri Sundibundi
Post by: Ferro73 on 2024.January.26. 08:07:26
Ugyan ez a progi ZZZip -el 13s a 14s hez lassabb.      /1000 ciklus/
Title: Re: Ugribugri Sundibundi
Post by: szipucsu on 2024.February.26. 23:18:38
Elkészült a nagy mű! :D
A játék célja: megtenni mindkét pályán 600 lépést.
A játék indítása: Joy fel vagy le, attól függően, melyik pályán akarunk játszani. Ha az egyik pályát már teljesítettük, akkor csak a másik lesz indítható.
Irányítás: csak a tűzgomb kell. Érdemes a tűzgombot nem csak pöccinteni, hanem hosszabban nyomni, amíg valóban ugrik.
Az életek számát jobb oldalon fent a repülők jelzik.
Az összes botkormány használható!
Mindegyik zene saját, kivéve egyet, de azt úgyis mindenki felismeri. (Ha sikerül addig eljutni.)

[attachurl=1]
[attachurl=2]
Title: Re: Ugribugri Sundibundi
Post by: Ep128 on 2024.February.27. 22:34:44
Nagyon tetszik! :-) Ahogy tapasztalom, simán fél órákat is el lehet játszani vele, csak a "tarkabarkaságából kifolyólag" a szem is kifolyólag lesz... :-D
Title: Re: Ugribugri Sundibundi
Post by: geco on 2024.February.29. 12:04:54
Jópofa, kamikaze bombázó elhalálozáskor kifejezetten jó, lehet lehettem volna türelmesebb is, mert mind a kettő terepen 330 környékéig jutottam 1. élettel, utána meg egyből vártam a kamikazét :D
Title: Re: Ugribugri Sundibundi
Post by: Ferro73 on 2024.March.02. 21:26:38
Nem futtattam még, csak a forrást néztem.
Olyan mintha a program végig fút persze a megfelelésekkel és "OK"
A 2440 sor egy IF végét jelzi utána már csak DEF... ek vannak.
Semmi vissza térés a program elejére.
Úgy vélem ha valaki végig megy a pályákon vagyis "CONGRATULATION" és "OK" 
Title: Re: Ugribugri Sundibundi
Post by: szipucsu on 2024.March.03. 00:03:25
Semmi vissza térés a program elejére.
Mindenképpen visszatér az elejére mindig, csúnya GOTO-k vannak ott, a strukturált programozás rémálmai.

Kicsit pofoztam a programon, most csak az összes fájl betöltése után tünteti el a status sort, így aki magnóról tölt, annak kellemesebb élmény. Néhány nagyon hosszú sort szétszedtem, mert nekem nem tűnt teljesen egyenletesnek a játék sebessége (az utolsó előtti verzió még az volt), és arra gondoltam, ez megoldja a problémát. Szerintem megoldotta. Nem gondoltam volna, hogy ennek ilyen hatása lehet a programra.
[attachurl=1]
[attachurl=2]

kifolyólag
Ez zavaró? Én sokat játszottam vele emulátoron, ott nem volt zavaró a sok szín.
Title: Re: Ugribugri Sundibundi
Post by: Ferro73 on 2024.March.03. 15:16:03
Javaslat

A 2160 sort
Code: [Select]
2160     LET CN(1)=32:LET CN(2)=32:LET CN(3)=32:LET CN(4)=32:LET CN(5)=32:LET CN(6)=32:LET CN(7)=32:LET CN(8)=32:LET CN(9)=32
Módosíthatnád
Code: [Select]
2160     LET CN(1),CN(2),CN(3),CN(4),CN(5),CN(6),CN(7),CN(8),CN(9)=32
Hely és idő megtakarítás.
Title: Re: Ugribugri Sundibundi
Post by: szipucsu on 2024.March.03. 17:29:11
Javaslat
Köszi! Módosítani fogom. Ha van még javaslat, jöhet, és akkor egyben módosítok többet. Még talán a lenti pálya zenéje lehetne szerintem hosszabb. Nem tudom, nem tűnt-e másoknak túl rövidnek.

Egyébként azért van sok 32 ott, mert eredetileg más számok voltak. A kötél karakterének pixelei vannak ott tárolva. Először a kötél, amivel pacmant kihúzzák az iszapból, végig egyformán csíkos volt, csak ugye a paletta ott más volt, ahol a pacman előfordult, a kötél is más színű lett volna, ami nem mutatott jól, ezért lett ott lazább sodronykötél helyett amolyan damilszerűség. :D
Title: Re: Ugribugri Sundibundi
Post by: Ferro73 on 2024.March.03. 19:33:55
1620 sor direkt kisbetűs ?

Javaslat

Code: [Select]
4470     FOR A=27 TO 35 STEP 4
Code: [Select]
4520     FOR A=0 TO 23 STEP 8
kicsikét gyorsabb

de megpróbálok valami
Title: Re: Ugribugri Sundibundi
Post by: szipucsu on 2024.March.03. 20:07:15
1620 sor direkt kisbetűs ?
Ennyi van benne: 1620 DO - milyen kisbetűre gondolsz?

Az eddigi javaslataidat megcsináltam, működik rendben minden.

Az utolsó két javaslatod az Enterprise logóra vonatkozott, ez fontos, mert más programoknál is szükség lehet rá, mentem a "fejlesztői eszközök" közé az új logórajzolót.
Title: Re: Ugribugri Sundibundi
Post by: Ferro73 on 2024.March.03. 20:52:03
Bocsi

Code: [Select]
1820   PRINT #6,AT 1,13:"stage completed":LET FINISH2=1
Erre gondoltam
Title: Re: Ugribugri Sundibundi
Post by: szipucsu on 2024.March.03. 21:07:58
Erre gondoltam
A játéktér felső része grafikus karaktereket használ, ezért a normál betűk nem jelennek meg jól rajta. Ezért a kisbetűket definiáltam át grafikus karakterekre.

Érdekesség: Az általam 12 éve módosított, demokazettás karakterdefiniáló tud kimenteni és betölteni karaktereket, karakterkészleteket, ebbe töltögettem be karakterkészleteket, a szimpatikusat benne hagytam, hozzájuk dobtam a grafikus karaktereket, meg a játék által használt egyéb karaktereket, és az egészet kimentettem az általad készített karaktermátrix-kimentő rutinnal, és ezt tölti be a játék. (A Dot Collector Turbo Edition is ezt csinálta.)

A repcsi, ha a lenti játéktérre megy, áthalad a grafikus karakteres videolapokon is, erre külön kellett olyan grafikus repcsikaraktereket definiálni, melyek valamennyire hasonlítanak az eredeti repcsire. Ehhez Endi GraCha editorát használtam. A felső játéktér scrollozó talaja 255 színű karaktereket használ, emellett is elmegy a repcsi, de csak egy pillanatra látszik, hogy egy színkupac van a repcsi helyén ott, mivel a 255 színű karakterek csak 1 pixelnyiek lehetnek. Nem tudom, ez feltűnt-e valakinek.
Amikor a pacman a felső pályán beleesik a lyukba, azért lesz egy színkupac belőle, mert a 255 színű videolapba esik bele a 4 színű pacman. Azon gondolkozom, hogy egy fekete és sötétkék színkupacból álló 255 színű grafikus karakternek kellene lennie a luknak, amibe nem beleesik a pacman, hanem elsüllyed benne, ami látványos is lenne.
Title: Re: Ugribugri Sundibundi
Post by: Ferro73 on 2024.March.03. 21:38:47
Ahogy elnézem mindegyik sor külön video csatorna.

A következőbe esetleg csinálhatnád ha grafikus előre feliratozod soronként pl:
   PÁLYA TELJESÍTVE
   MEGHALTÁL
   GRATULÁLOK TELJESÍTETTED
   ...

utána betöltöd a char.bin -t
majd DISPLAY #x at a kívánt sort megjeleníted még törölnöd majd kiírni sem kell

ez úgy is ZZZip elve lesz?

esetleg használhatnád a CALL  CHAR_DEF(33,1,2,3,4,5,6,7,8,9)
Azzal is lehet némi sebességet, időt nyerni.
A játéktér felső része grafikus karaktereket használ, ezért a normál betűk nem jelennek meg jól rajta. Ezért a kisbetűket definiáltam át grafikus karakterekre.


és a 920 as sor ?
Code: [Select]
  920   PRINT #16,AT 1,13:"STAGE COMPLETED":LET FINISH=1
Code: [Select]
1820   PRINT #6,AT 1,13:"stage completed":LET FINISH2=1
Title: Re: Ugribugri Sundibundi
Post by: szipucsu on 2024.March.03. 22:41:08
és a 920 as sor ?
Code: [Select]
 920   PRINT #16,AT 1,13:"STAGE COMPLETED":LET FINISH=1
Code: [Select]
1820   PRINT #6,AT 1,13:"stage completed":LET FINISH2=1
A 16-os videolap attribútum videolap, arra mehetnek a normál nagybetűk. A 6-os grafikus-karakteres videolap.

Lehet, nem rossz ötlet előre elkészített videolapokkal dolgozni a feliratokhoz. Lehet, ezt most már nem módosítom, de egy újabb játéknál hasznos lenne így csinálni. (A 4 színű betűk annyiból jobbak, hogy látványosabb, hogy ilyen is kerül a képernyőre.)
Mindegyik sor külön videolap, hogy sok szín lehessen, videolaponként más-más palettát lehet beállítani. Bár sok videolapon ez nem érvényesül, mert ahol nincs pacman vagy pálya, a levegőben csak a háttérnek van színe. Ide lehetne rajzolni csillagokat, napot, holdat, felhőket, hogy a sok szín jól ki legyen használva. De lehet, így is túl sok a szín a képernyőn.
Csak a felső játéktéren a talaj 255 színű grafikus karakteres videolap, a látvány kedvéért. Ezt gyorsabban lehet görgetni, mert nem kell kirajzoláskor minden karakter előtt a színt is megadni.

A CALL  CHAR_DEF... mikor kellene? Nem változtatok karaktereket a program futása közben. Kivéve, ahol kihúzzák a pacmant a sárból, de azon is lassítani kellett, mert Zzzippel túl gyors.
Title: Re: Ugribugri Sundibundi
Post by: Ferro73 on 2024.March.03. 22:52:36
A CALL  CHAR_DEF... mikor kellene? Nem változtatok karaktereket a program futása közben. Kivéve, ahol kihúzzák a pacmant a sárból, de azon is lassítani kellett, mert Zzzippel túl gyors.
Valami effekttel nem lehetne még lassítani?
nem hang hanem video ?
Pl a másik pacman mozog ásít
Title: Re: Ugribugri Sundibundi
Post by: szipucsu on 2024.March.04. 10:25:36
Valami effekttel nem lehetne még lassítani?
Ehhez nincs ihletem. Nem is kellene lassítani már, szerintem pont jó a sebesség, kicsit talán lassú is.
Title: Re: Ugribugri Sundibundi
Post by: Ferro73 on 2024.March.04. 18:37:30
Ehhez nincs ihletem. Nem is kellene lassítani már, szerintem pont jó a sebesség, kicsit talán lassú is.
A CALL  CHAR_DEF... mikor kellene? Nem változtatok karaktereket a program futása közben. Kivéve, ahol kihúzzák a pacmant a sárból, de azon is lassítani kellett, mert Zzzippel túl gyors.
Akkor most melyik gyors vagy lassú?
Javaslat:
Code: [Select]
2240       CALL LENTO:CALL LENTO
Code: [Select]
2240       CALL LENTO(300)
Code: [Select]
4110 DEF LENTO(N)
 4120   FOR VARJ=1 TO N
 4130     LET X1=2+4*6
 4140   NEXT
 4150 END DEF

Title: Re: Ugribugri Sundibundi
Post by: szipucsu on 2024.March.04. 19:12:40
Akkor most melyik gyors vagy lassú?
A játékmenet jó, esetleg kicsit lassú az elején, de ez szubjektív. Én simán tudok játszani a játék elején úgy is, ha a CPU frequency az emulátorban 12Mhz. :D
Életvesztésnél a közjátékot kell lassítani, mert a Zzzip nagyon ledarálná fél másodperc alatt az egészet.

Quote
Javaslat:

Code: [Select]
2240       CALL LENTO(300)

Ez jó ötlet, köszi! Visszatérő probléma, hogy a Zzzip bizonyos részeket nagyon felgyorsít, és azokkal csinálni kell valamit.
Title: Re: Ugribugri Sundibundi
Post by: Ferro73 on 2024.March.04. 19:22:53
Valamelyik progiban volt olyasmi ami ellenőrizte miben fút BASIC vagy ZZZip ben.
 
 IF BASIC=1 THEN VARAKOZOSZORZO=1
 IF BASIC=0 THEN VARAKOZOSZORZO=100

   2240       CALL LENTO(300)
Code: [Select]
4110 DEF LENTO(N)
 4120   FOR VARJ=1 TO N*VARAKOZOSZORZO
 4130     LET X1=2+4*6
 4140   NEXT
 4150 END DEF [code]
Title: Re: Ugribugri Sundibundi
Post by: szipucsu on 2024.March.04. 23:46:07
Valamelyik progiban volt olyasmi ami ellenőrizte miben fút BASIC vagy ZZZip ben.
Ilyet ebbe már nem teszek, mert már (majdnem) készen van a program, ez meg a fejlesztéshez jó.

Az újabb módosításokat beletettem:
[attachurl=1]
[attachurl=2]
Title: Re: Ugribugri Sundibundi
Post by: szipucsu on 2024.March.25. 20:15:39
Egy szépséghiba javítva.
Ha nincs más javaslat, ez lehet a végleges.
[attachurl=1]
[attachurl=2]
Title: Re: Ugribugri Sundibundi
Post by: Ferro73 on 2024.March.25. 22:44:00
Code: [Select]
3120   FOR X=1 TO 24
 3130     IF X>4 AND X<11 THEN GOTO 3170
 3140     OPEN #X:"video:"
 3150     DISPLAY #X:AT X FROM 1 TO 1
 3160     SET #X:COLOR 1,255
 3170   NEXT
Javaslat
Code: [Select]
3130     IF X=5 THEN LET X=11
Felesleges ciklusuk kihagyása.

Code: [Select]
3620     PRINT #21:CHR$(27)&"I"&CHR$(SZIN)&CHR$(142);
Code: [Select]
3660     PRINT #11:CHR$(27)&"I"&CHR$(SZIN)&CHR$(142);
javaslat

Code: [Select]
3620     PRINT #21:I$&CHR$(SZIN)&CHR$(142);
Code: [Select]
3660     PRINT #11:I$&CHR$(SZIN)&CHR$(142);
már az VAR_INI ben meg adtad az I$- t

továbbá
Code: [Select]
  340   LET FLOOR$=FLOOR$&CHR$(27)&"I"&CHR$(RND(15)+1)&A$
Code: [Select]
1400     PRINT #20,AT 1,4:CHR$(27)&"I"&CHR$(11)&CHR$(147)
 1410     LET FLOOR$=FLOOR$(1:12)&CHR$(27)&"I"&CHR$(11)&CHR$(147)&FLOOR$(17:148)
Code: [Select]
2520   LET FLOOR$=FLOOR$(5:148)&CHR$(27)&"I"&CHR$(COL)&H$
Köszönjük.
Title: Re: Ugribugri Sundibundi
Post by: szipucsu on 2024.March.25. 23:23:28
már az VAR_INI ben meg adtad az I$- t
Majd megnézem frissebb fejjel, amiket írtál.
Kapásból ránézésre, valószínű azért hagytam itt a hosszabb verziókat, mert a rövidebb verzió feltehetőleg lassabb valamivel, és játék közben számít a sebesség is. (Vissza kell kutatnia egy változó tartalmát, ez biztos több idő, mint magát a változó tartalmát adni meg direkt.) Egyébként még egyszerűbben meg lehetne csinálni, hogy az I$(szin) megadásával is működjön, és ne kelljen I$&CHR$(szin).
Title: Re: Ugribugri Sundibundi
Post by: Ferro73 on 2024.March.26. 17:51:22
Egyébként még egyszerűbben meg lehetne csinálni, hogy az I$(szin) megadásával is működjön, és ne kelljen I$&CHR$(szin).

Nem rossz ötlet letesztelem melyik a legjobb BASICban és zzzip ben.
Title: Re: Ugribugri Sundibundi
Post by: Ferro73 on 2024.March.26. 18:55:24
1. SET INK x                            BASIC 00:03:21    ZZZiP 00:01:07
2. CHR$(27)&"I"&CHR$(x)   BASIC 00:03:24    ZZZiP 00:01:03
3. I$&CHR$(x)                       BASIC 00:03:07    ZZZiP 00:01:02
4. IS$(x)                                BASIC 00:03:07    ZZZiP 00:01:02

Én EP128emu-n mértem.
Valódi gépen kilehetne próbálni.
Mellékelem a progikat /Basic és ZZZiP/
Title: Re: Ugribugri Sundibundi
Post by: szipucsu on 2024.March.26. 20:21:51
Én EP128emu-n mértem.
Kicsit meglepő a végeredmény.
Az I$(szin)-t én így gondolnám:
Code: [Select]
   10 GRAPHICS ATTRIBUTE
   20 PRINT #101,AT 2,2:I$(1)&"TEXT "&I$(2)&"ENTER"&I$(3)&"PRISE"
   30 PRINT #101,AT 4,2:I$(4)&"128"&I$(5)&" kilobytes"
  100 DEF I$(X)
  110   LET I$=CHR$(27)&"I"&CHR$(X)
  120 END DEF
(Tehát csak megadjuk paraméterben a szín kódját, és át is váltja a színt.)
Amit te írtál, az más, ha jól értem.
Title: Re: Ugribugri Sundibundi
Post by: Ferro73 on 2024.March.27. 21:25:39
Kicsit meglepő a végeredmény.
Az I$(szin)-t én így gondolnám:
Code: [Select]
  10 GRAPHICS ATTRIBUTE
   20 PRINT #101,AT 2,2:I$(1)&"TEXT "&I$(2)&"ENTER"&I$(3)&"PRISE"
   30 PRINT #101,AT 4,2:I$(4)&"128"&I$(5)&" kilobytes"
  100 DEF I$(X)
  110   LET I$=CHR$(27)&"I"&CHR$(X)
  120 END DEF
(Tehát csak megadjuk paraméterben a szín kódját, és át is váltja a színt.)
Amit te írtál, az más, ha jól értem.
Nem, rosszul érted
DEF -et CALL al éred el.

Title: Re: Ugribugri Sundibundi
Post by: szipucsu on 2024.March.27. 21:28:53
DEF -et CALL al éred el.
Ezt nem tudom, hogyan érted. Nem csak CALL-lal, hanem PRINT-tel is el lehet érni a DEF-et. PRINT I$(x) kb. meghívja a DEF I$(x) részt és onnan meríti a tennivalóját, ez szerintem több idő, mint ha PRINT után adjuk meg ezt egyből.
Title: Re: Ugribugri Sundibundi
Post by: Ferro73 on 2024.March.27. 21:44:33
Részben igazad van.
Bár ha megnézted volna rendesen a programot láthattad volna a hibámat.

mindegy.
Javítottam és bele raktam az 5.-nek variációdat
1. SET INK x                            BASIC 00:03:21    ZZZiP 00:01:07
2. CHR$(27)&"I"&CHR$(x)   BASIC 00:03:24    ZZZiP 00:01:03
3. I$&CHR$(x)                       BASIC 00:03:07    ZZZiP 00:01:02
4. IS$(x)                    hibás   BASIC 00:03:07    ZZZiP 00:01:02
4. IS$(x)                                 BASIC 00:03:32
5. ISD$(x)      def                   BASIC 00:05:01

Így az elgondolásod a legrosszabb.
Title: Re: Ugribugri Sundibundi
Post by: szipucsu on 2024.March.30. 13:03:35
Code: [Select]
3120   FOR X=1 TO 24
 3130     IF X>4 AND X<11 THEN GOTO 3170
 3140     OPEN #X:"video:"
 3150     DISPLAY #X:AT X FROM 1 TO 1
 3160     SET #X:COLOR 1,255
 3170   NEXT
Javaslat
Code: [Select]
3130     IF X=5 THEN LET X=11
Felesleges ciklusuk kihagyása.
Ez biztosan jó így? A 3130-as sor lecserélésével a 6 és 10 közötti értékekre nem ugrik a 3170-es sorba.
Title: Re: Ugribugri Sundibundi
Post by: Ferro73 on 2024.March.30. 14:04:56
Ha jól értettem a rutint akkor csatorna megjelenítés
1,2,3,4,  11,12,13,14,15,16,17,18,19,20,21,22,23,24

Mindenképp jó.
Felesleges lefuttatni  az 5,6,7,8,9,10 sorokat.
Title: Re: Ugribugri Sundibundi
Post by: szipucsu on 2024.March.30. 21:26:44
Mindenképp jó.
Ja, hogy magát a ciklusváltozó értékét változtatod meg a cikluson belül! Akkor hiába van a FOR-nál 1 TO 24, az 5-nél átugrasztod 11-re, és akkor kimarad minden 6 és 10 között. Most már leesett.
Szerintem ezt már nem írom át a programban, mert csak induláskor a pálya kirajzolásakor van rá szükség, és csak 1-2 tizedmásodpercet (vagy annyit se) nyernénk vele. (Macerás a working directoryba visszamásolni mindent, átírni, majd Zzzippel lefordítani, majd Zipbe betömöríteni és feltölteni ide. :D ) De ettől még jó ötlet, jó az elv, nekem nem jutott volna eszembe, majd máskor ilyet is be fogok vetni, ha úgy alakul.

Amin még gondolkozom, hogy a felső pályán a lyukak helyére milyen színű iszapot lehetne tenni, amiben a pacman elsüllyed. Kicsit kísérleteztem vele, mire a mostani karakter meglett, de szerintem nem tökéletes. Ez itt 255 színű karakteres módot használ, tehát a 9 karaktersorban soronként bármilyen színű vonalak lehetnek. Ha erre sincs jobb javaslat a jelenleginél, akkor részemről kész a program. Ehhez  mondjuk a színkódokat és a hozzájuk való színeket is elő kell szedni, és a jelenlegi programban sem feltétlen egyszerű letesztelni az új karaktert, hogy hogyan néz ki, de ha valaki mégis kísérletezne, és csak ez az akadály, szóljon! Annyi a nehézség, hogy a STOP le van tiltva, azt ki kell venni a programból, és STOP után a nem látható szöveges képernyőn kell a karakterdefinícióval próbálkozni, ami rögtön megjelenik a lyukakon, ez a zzzippeletlen basic programból (source mappában van) is megtehető. Most ez az aktuális:

SET CHARACTER 140,56,56,56,112,112,48,48,32,0

Ha esetleg valaki mégis próbálkozik, akkor a megfelelő ábra megtalálása után DISPLAY TEXT (vagy SHIFT+F5), és láthatóvá válik, amit beírtunk, de snapshotot is örömmel fogadok.
Title: Re: Ugribugri Sundibundi
Post by: Ferro73 on 2024.March.30. 21:42:33
Nem vagyok grafikus. Olyasmit lehetne, hogy lefelé hullámozna a szín?
Nem csak a PACMAN karakter változna hanem a mocsár karaktere is.
Title: Re: Ugribugri Sundibundi
Post by: szipucsu on 2024.March.30. 21:52:42
Nem vagyok grafikus. Olyasmit lehetne, hogy lefelé hullámozna a szín?
Nem csak a PACMAN karakter változna hanem a mocsár karaktere is.
Érdekes ötlet, mindenképpen kipróbálom majd. Van egy set charactert gyorsító speek-es megoldásod, azzal biztos gyors lenne, bár nem szeretném, ha a sebesség rovására menne, mert így is túl könnyű a játék. Az is kérdés, a set character értékeit honnan szedje, amivel nem megy el sok idő. Lehetne véletlenszerű is, és 3-4 érték közül választhatna mindegyik sorra vonalszínt.
Egyébként nem a pacman karakter változik, hanem két különböző karaktert használ, egyszer az egyiket írja oda, egyszer a másikat. De még az is lehet, hogy a print helyett a set characteres (speek-es) megoldás gyorsabb lenne. És mondjuk ugrásnál is már ott lenne feljebb is a karakter, csak alapból 000 értékei lennének, és azt írná át.
Talán elkísérletezem ezzel még, de valószínűleg csak húsvét után.
Title: Re: Ugribugri Sundibundi
Post by: Ferro73 on 2024.March.30. 21:59:01
Akkor jó munkát örülök, hogy valamivel segíthettem.
Ha látok valamit még majd javaslok, ha lehet még.

Még, még még ennyi nem elég...
Title: Re: Ugribugri Sundibundi
Post by: szipucsu on 2024.March.30. 22:07:55
ha lehet még.
Lehet, minden javaslat érdekel!
Title: Re: Ugribugri Sundibundi
Post by: Ferro73 on 2024.March.31. 10:31:37
Egyébként nem a pacman karakter változik, hanem két különböző karaktert használ, egyszer az egyiket írja oda, egyszer a másikat.
Megtaláltam.
Javaslat.
Ha már nem változtatsz a progin akkor vagy a kezdet kezdetén a CHR$(x) helyett próbáld meg a "x" /értelem szerűen/ variációt használni.
Kb. "" 50 / 66 CHR$() lehet az arány.

Ha lassulás lenne a set charactert gyorsítóval kompenzálni tudod a 2610 sor VARJ ciklussal.

Valamint
Code: [Select]
CHR$(27)&"I"&CHR$(COL)helyett későbbiekben
Code: [Select]
...   I$&CHR$(COL)Ha már bele raktad a VAR_INI -be
Code: [Select]
3810   LET I$=CHR$(27)&"I"Köszönjük az ötletes progikat.
Title: Re: Ugribugri Sundibundi
Post by: Ferro73 on 2024.March.31. 13:31:58
Faragtam a DEF EPI rutinból ami 771 bájt.
Most 663 bájt INFO-val.
Title: Re: Ugribugri Sundibundi
Post by: szipucsu on 2024.April.01. 15:42:30
Faragtam a DEF EPI rutinból ami 771 bájt.
Most 663 bájt INFO-val.
És még ezen is lehet faragni pár bájtot:
Code: [Select]
4410   SET #98:INK 1:PRINT #98,AT 1,1:"EN      SE"
 4420   SET #98:INK 2:PRINT #98,AT 1,1:"  TE  RI"
 4430   SET #98:INK 3:PRINT #98,AT 1,1:"    RP"
Ha így átírjuk. :D
Code: [Select]
4410   SET #98:INK 1:PRINT #98,AT 1,1:"EN      SE"
 4420   SET #98:INK 2:PRINT #98,AT 1,3:"TE  RI"
 4430   SET #98:INK 3:PRINT #98,AT 1,5:"RP"
Ha így folytatjuk, előbb-utóbb betöltés után nagyobb lesz a szabad hely, mint előtte. :D
Title: Re: Ugribugri Sundibundi
Post by: szipucsu on 2024.April.01. 20:14:31
Ezen is lehet faragni:
Code: [Select]
4410   SET #98:INK 1:PRINT #98,AT 1,1:"EN      SE"
 4420   SET #98:INK 2:PRINT #98,AT 1,3:"TE  RI"
 4430   SET #98:INK 3:PRINT #98,AT 1,5:"RP"
Így. (Bár lehet, te is erre utaltál.)
Code: [Select]
4410   PRINT #98,AT 1,1:I$(1)&"EN      SE"
 4420   PRINT #98,AT 1,3:I$(2)&"TE  RI"
 4430   PRINT #98,AT 1,5:I$(3)&"RP"
Nem ellenőriztem, de gondolom, kisebb helyet foglal az utóbbi verzió, mint az előbbi. Nem tudom, az & és a ; között van-e bármi különbség PRINT-es sztringeknél (működésben, helyfoglalásban). Ebben az esetben talán el is hagyhatók és szóköz is jó (mivel csak vezérlőkarakterekről van szó), de ebben nem vagyok biztos.
Title: Re: Ugribugri Sundibundi
Post by: Ferro73 on 2024.April.01. 20:29:26
Code: [Select]
4410   PRINT #98,AT 1,1:I$(1)&"EN      SE"
 4420   PRINT #98,AT 1,3:I$(2)&"TE  RI"
 4430   PRINT #98,AT 1,5:I$(3)&"RP"
Nem rossz, de hibás helyesen
Code: [Select]
4410   PRINT #98,AT 1,1:I$&CHR$(1)&"EN      SE"
 4420   PRINT #98,AT 1,3:I$&CHR$(2)&"TE  RI"
 4430   PRINT #98,AT 1,5:I$&CHR$(3)&"RP"
Mindjárt megnézem.
Title: Re: Ugribugri Sundibundi
Post by: Ferro73 on 2024.April.01. 20:54:28
Mindjárt megnézem.
Terjedelemben nincs változás 657 bájt
Viszont rövidebb idő alatt végez.

Ha így folytatjuk, előbb-utóbb betöltés után nagyobb lesz a szabad hely, mint előtte. :D

Tovább faragtam. 611 bájtra  a kezdeti 771 bájtról.
Title: Re: Ugribugri Sundibundi
Post by: szipucsu on 2024.April.02. 19:52:19
Nem rossz, de hibás helyesen
Persze deklarálni kell majd úgy az I$()-t, hogy utána egyből csak a színkódot kelljen megadni, ne kelljen külön CHR-ezni. Ezt nemrég ki is kísérleteztem, hogy hogyan, de talán nem ennél a programnál, de valahol tuti megvan.
Title: Re: Ugribugri Sundibundi
Post by: Ferro73 on 2024.April.02. 20:42:47
Itt is megtalálod.
Kódban kevesebb de lassabb. /4./
1. SET INK x                            BASIC 00:03:21    ZZZiP 00:01:07
2. CHR$(27)&"I"&CHR$(x)   BASIC 00:03:24    ZZZiP 00:01:03
3. I$&CHR$(x)                       BASIC 00:03:07    ZZZiP 00:01:02
4. IS$(x)                    hibás   BASIC 00:03:07    ZZZiP 00:01:02
4. IS$(x)                                 BASIC 00:03:32
5. ISD$(x)      def                   BASIC 00:05:01

Az "epi def"-t fel rakhatnád a "Hasznos kis Basic programok"-hoz
Title: Re: Ugribugri Sundibundi
Post by: szipucsu on 2024.April.05. 12:17:13
Tovább faragtam. 611 bájtra  a kezdeti 771 bájtról.
Most nézem, a SET VIDEO MODE stb. utasításokat átírtad simán SET 23,x-re és hasonlókra, kisebb helyet foglalnak így. Ez kevésbé felhasználóbarát, de ha belegondolok még talán könnyebb is megjegyezni, hogy egy szám, vagy pedig az X vagy Y utal-e a vízszintes és a függőleges felbontásra. Ez is belekerül az új verzióba.

Nosza, közben a Zzzippes topikban előkerült a téma, hogy a színváltós vezérlőkódos megoldás másképp is kivitelezhető. Leteszteltem, és a rövidebb sorokat eredményező megoldás gyorsabb is, ami talán picit meglepő lehet. A tesztprogram:

Code: [Select]
   5 STRING *3 I$(0 TO 8)
    6 FOR I=0 TO 8
    7   LET I$(I)=CHR$(27)&"I"&CHR$(I)
    8 NEXT
   10 GRAPHICS ATTRIBUTE
   13 TIME "00:00:00"
   15 FOR A=1 TO 1000
   20   PRINT #101,AT 2,2:I$(1)&"TEXT "&I$(2)&"ENTER"&I$(3)&"PRISE"
   30   PRINT #101,AT 4,2:I$(4)&"128"&I$(5)&" kilobytes"
   35 NEXT
   36 PRINT TIME$
   43 TIME "00:00:00"
   45 FOR A=1 TO 1000
   50   PRINT #101,AT 2,2:CHR$(27)&"I"&CHR$(1)&"TEXT "&CHR$(27)&"I"&CHR$(2)&"ENTER"&CHR$(27)&"I"&CHR$(3)&"PRISE"
   60   PRINT #101,AT 4,2:CHR$(27)&"I"&CHR$(4)&"128"&CHR$(27)&"I"&CHR$(5)&" kilobytes"
   75 NEXT
   76 PRINT TIME$

Az eredmény:
I$(x): 02:34
CHR$(27)&"I"&CHR$(x): 02:55

A programot Zzzippel lefordítva mindkét módszer 01:02 idő alatt futott le.
Így most már a SET INK utasítást is elfelejthetjük, és könnyebben válthatunk színt szöveg közben is, és mindez még kevesebb helyet is foglal a programban.

Az új dolgokat be is építettem a játékba:
[attachurl=1]
A fenti pályán az elsüllyesztő mocsár színeit/animációit még meg kéne csinálni.
Title: Re: Ugribugri Sundibundi
Post by: Ferro73 on 2024.April.05. 19:02:30
Ha a
Code: [Select]
  260 CALL EPI:CALL CHARS:CALL VAR_INI:CALL VIDEO_INI:CALL DEKOR:CALL PALCHANGEsort felcserélnéd
Code: [Select]
  260 CALL VAR_INI:CALL EPI:CALL CHARS:CALL VIDEO_INI:CALL DEKOR:CALL PALCHANGEra akkor már az EPI ben is használhatnád a "I$(x)" változót.

De mivel csak egyszer fút le mindegy, nem olyan hosszú a progi.