Enterprise Forever

:HUN => Programozás => BASIC => Topic started by: endi on 2016.April.14. 15:49:15

Title: Hasznos kis Basic programok
Post by: endi on 2016.April.14. 15:49:15
Kisebb hasznos programokat ide gyűjthetnénk, amik beépíthetők más fejlesztésekbe.
Pl itt van mindjárt ez a nagy szám kiíró.

Title: Re: Hasznos kis Basic programok
Post by: szipucsu on 2019.March.11. 23:23:03
Játékok pontszámtábláját sorba rendező program: [attach=1]
Szobatiszta input rutinnal (csak betűket fogad el, valamint az erase, enter billentyűket), pontszámtábla kimentéssel, betöltéssel.
32000 a maximális pontszám, a Zzzip által kezelhető legnagyobb szám miatt.
A Felhasználói kézikönyvben lévő, 10 számot nagyság szerint sorba rendező program elvén működik. A pontszámot stringgé alakítja úgy, hogy 5 számjegyű legyen, az elején nullákkal kiegészítve, ha kell. Ehhez hozzáfűzi a beírt nevet. Ennek az egész stringnek egyben 20 karakter hosszúnak kell lennie, mert a sorbarendezés a karakter hosszát is figyelembe veszi. Ha nincs meg a 20 karakternyi hossz, a végére pontokat tesz (így mutat jól a pontszámtáblában). A pontszámtábla kiírásánál szétszedi a stringet, az elején lévő pontszámot a végére teszi és külön írja ki.
Biztos meg lehet csinálni szebben, egyszerűbben is. Akinek van ötlete, módosíthatja.

UI: A pontszámtábla betöltése után még ki kellene adni, hogy
LET MIN_SCORE=VAL(TOP$(10))
(Tudni kell, mennyi a legrosszabb eredmény a pontszámtáblán, mert ha annál kevesebbet érünk el, akkor nem hívja meg a névbeírós-sorbarendezős eljárást.)
Title: Re: Hasznos kis Basic programok
Post by: szipucsu on 2019.July.05. 23:47:57
Endi négyszínű grafikus karakterei (nagybetűk, számok):
[attach=1]
Title: Re: Hasznos kis Basic programok
Post by: Ferro73 on 2019.July.06. 14:37:01
ZZZIP-hez
SET CHARACTER gyorsító.
Haszsnálat pl.: SET CHARACTER 33,1,2,3,4,5,6,7,8,9 helyett
   CALL  CHAR_DEF(33,1,2,3,4,5,6,7,8,9)
Title: Re: Hasznos kis Basic programok
Post by: Ferro73 on 2019.July.06. 19:20:25
Módosítottam az előző rutint.
Használata GOSUB-bal meghívjuk a változókat egyszer.
Ez gondoskodik a múlt és jövőbeli EXOS kompatibilitásról.

Minden más maradt.
Title: Re: Hasznos kis Basic programok
Post by: Ferro73 on 2019.July.10. 09:52:17
Bövítettem egy CALL CHAR_INV(kar szám)

Kis demót is tartalmaz.
Title: Re: Hasznos kis Basic programok
Post by: Ferro73 on 2019.July.10. 12:05:18
Tovább bővítettem.
Ezek inkább ZZZIP programoknál hatékonyak.

Így:
CALL CHAR_FLIPH(karakter szám)    karakter billentése vízszintesen
CALL CHAR_INV(karakter szám)        karakter inverzálása
CALL CHAR_DEF(karsz,lin1,line2...)    karakter definiálása

némi demó
Title: Re: Hasznos kis Basic programok
Post by: Ferro73 on 2019.July.12. 14:03:32
Játékok pontszámtábláját sorba rendező program: (Attachment Link)
Kicsit módosítottam.
Elfogadja a szóközt a számokat nagybetűsít ha nem betölthető a tábla csak akkor tölti fel.
Az eredeti 2216 bájt ez már csak 1883 bájt körül. Még finomítható.
Title: Re: Hasznos kis Basic programok
Post by: endi on 2019.July.12. 22:58:35
ez a program random seed-et állít be, azaz a random szám generátor számlálóját állítja be a megfelelő értékre.
a haszna az hogy így fixen tudunk random számsorokat generálni megadott értékkel, például játékokhoz hasznos.
nem tudom hogy más exos verzióval is jó-e, mert poke-al állítja be.
persze ha a basic programunkban nem adjuk ki a randomize parancsot, akkor is fix sorrendben jönnek a számok, viszont mindig ugyanazok, és ezt nem is tudjuk befolyásolni. ezzel a programmal bármikor (futás közben is).
Title: Re: Hasznos kis Basic programok
Post by: Ferro73 on 2019.July.15. 07:38:47
Kicsit módosítottam.
Elfogadja a szóközt a számokat nagybetűsít ha nem betölthető a tábla csak akkor tölti fel.
Az eredeti 2216 bájt ez már csak 1883 bájt körül. Még finomítható.
Finomítottam.
Rejtet hiba./Szipucsu/ nem szabad szóközzel kezdeni. Mentés - vissza olvasás hiba.

És még faragtam belőle.
Title: Re: Hasznos kis Basic programok
Post by: Ferro73 on 2019.July.27. 17:23:26
Kettő kis progi:
joys.bas: olyan gépikód ami ugyan azt az értéket adja vissza mint a BASIC JOY(x) csak nem kell, hogy legyen "KEYBOAR:" csatorna sem POKE 56,245. Ezek nélkül is működik.

pressjoy.bas: szintén nem igényel 50hz megszakítást.
A "PRESS TO FIRE" program részhez alkottam.
Title: Re: Hasznos kis Basic programok
Post by: Ferro73 on 2019.July.27. 17:42:06
És akkor i-re a pontot.

INAB5.BAS

teljesen függetlenül.
Title: Re: Hasznos kis Basic programok
Post by: Ferro73 on 2019.July.29. 18:21:03
Újabb  darab.
CHARS_RD   A komplett karakter mátrixot olvassa be fájlból.
CHARS_WR  A komplett karakter mátrixot írja ki fájlba.
Title: Re: Hasznos kis Basic programok
Post by: endi on 2019.September.16. 18:54:07
ez a program beállítja azt a modot, ahol text40 módban 4 színpár van. a színpár kiválasztása a karakter sorszámától függ!
ki is rajzolja 32-128-ig a karaktereket. mondjuk most hogy így nézem, furcsa... :)
az lpt cím számolás csak be van írva, lehetne azt szebben is :)
Title: Re: Hasznos kis Basic programok
Post by: szipucsu on 2019.September.24. 09:09:39
Attribútum képernyőn szöveg írásához vízszintes színátmeneteket lehet használni. Ha soronként új attribútum képernyőt jelenítünk meg, más paletta használható.
A DATA sorban először meg kell adni a szöveget, utána 7 számban a palettát (az első általában 0, a háttér), utána 1-7-ig a számokkal hivatkozni kell arra, hogy az adott betű hányadik színű legyen a palettából.
Néhány példa is van a programban. A legelső pont egy 16 színű grafikus képernyőn mutatja be a szöveget, a többi attribútum képernyős.
A szöveget lehet más elv alapján is színezni. A példákban oda-vissza "hullámzanak" a színátmenetek.
[attach=1]
[attach=2]
[attach=3]
Title: Re: Hasznos kis Basic programok
Post by: Zozosoft on 2019.September.24. 09:18:07
Nagyon jól néz ki!
Title: Re: Hasznos kis Basic programok
Post by: szipucsu on 2023.September.17. 21:40:17
Ezzel a programmal színátmeneteket vadászhatunk össze. Amelyik színen a kurzor áll, annak a színkódját kijelzi:
[attach=1]

Ez a programrész pedig arra jó, hogy 16 színű grafikus képernyőre és attribútum képernyőre karakterenként változó színű szöveget írjunk. Ahova írni akarjuk a szöveget, oda kell állítanunk egy PRINT#csat,AT x,y:; utasítással. Utána egy azonosítót adni az oda írandó szövegnek (pl. LET ID=1), és megadni a csatornaszámot, amelyik csatornára írni akarunk (pl. LET CHN=101), utána meghívni az irkáló eljárást (CALL COLORTEXT).
Például:

Code: [Select]
1240   PRINT #49,AT 1,9:;:LET ID=7:LET CHN=49:CALL COLORTEXT
A COLORTEXT eljárásban az ID-nél megadott azonosítóhoz tartozó adatok alapján írja ki a szöveget. Mindegyik szöveghez 3 DATA sor tartozik. Az elsőben magát a szöveget kell megadni, pl.

Code: [Select]
9310   DATA "  SCORE:0         LIVES:5"
A másodikban a szöveg által használt palettát kell megadni, pl.

Code: [Select]
9320   DATA 0,146,166,243,94,7,221,24
A harmadikban a megadott szöveghez karakterenként meg kell adni, hogy a palettáról hányadik színnel írja ki az adott karaktert, pl.

Code: [Select]
9330   DATA 1,1,1,2,1,2,7,5,6,0,0,0,0,0,0,0,0,0,3,4,3,4,3,5,6
[attach=2]
[attach=3]

Persze lehetne máshogy is, pl. hogy ne kelljen megadni, hányadik karakter milyen színű legyen, ki lehetne találni bizonyos sémákat, amik alapján a gép magától határozná meg a karakterek színét. Erre kellett a másik topikban program, hogy 1 és 6 között oda-vissza léptesse a számokat. De biztos azt is meg lehetne csinálni, hogy automatikusan megtalálja a szöveg közepét a gép, és a szöveg elején 1-es színnel írjon, és csak a szöveg közepére érje fokozatosan el a 7-es színt, majd a szöveg végére megint az 1-es színnel írjon.
Title: Re: Hasznos kis Basic programok
Post by: ergoGnomik on 2023.September.18. 09:47:45
Ezt a színezett karakterlánc kiírást nem lehetne escape szekvenciák (http://ep128.hu/Ep_Konyv/Exos.htm#108) használatával megoldani? Csak egy ötlet.
Title: Re: Hasznos kis Basic programok
Post by: szipucsu on 2023.September.18. 19:23:55
Ezt a színezett karakterlánc kiírást nem lehetne escape szekvenciák (http://ep128.hu/Ep_Konyv/Exos.htm#108) használatával megoldani?
Ha jól sejtem, a link alapján a PRINT chr$(27) "I" <tintaszín> lenne a SET INK <tintaszín> helyett... Talán rövidebb és gyorsabb lenne, ha nem kéne váltogatni a PRINT és SET INK utasításokat. De még nem próbáltam. (Nem tudom, a hegyes zárójel csak szemléltetés miatt van-e.)
Title: Re: Hasznos kis Basic programok
Post by: ergoGnomik on 2023.September.18. 19:44:38
(Nem tudom, a hegyes zárójel csak szemléltetés miatt van-e.)
Írja az alfejezet fő bekezdésében (III. 4.2), hogy a következőben (III. 5) elmagyarázzák a bonyolultabb szekvenciákat. Ott megtalálod a jelölés magyarázatát.
Title: Re: Hasznos kis Basic programok
Post by: gflorez on 2023.September.19. 14:07:55
Néha használtam ESC szekvenciákat. Ezek olyanok, mint a karakterláncok, és ezek a <n> számok egyszerű bájtok, amelyeket CHR$(n)-ként kell hozzáadni(&) a karakterlánchoz.

-----

I have used ESC sequences sometimes. They are like strings, and these <n> numbers are simple bytes that must be added(&) as CHR$(n) to the string.
Title: Re: Hasznos kis Basic programok
Post by: gflorez on 2023.September.21. 13:05:41
Did it work?

I mean:      ESC$=CHR$(27)&"I"&CHR$(1) -----------> PRINT £102:ESC$

or directly  PRINT £102:CHR$(27);"I";CHR$(1)
Title: Re: Hasznos kis Basic programok
Post by: Ferro73 on 2024.March.03. 14:25:56
Probléma szokott lenni a TEXT 40 direkt poke címzése.
Ezzel a kis progival be határozható a sorok kezdeti SPOKE 255,cim,érték
Az értékek változnak különböző bővítményeknél.
Ezért nem működnek más-más gépeken ha direkt címre vannak meg írva a progik.