Welcome, Guest. Please login or register.


Author Topic: Általános BASIC Kérdések (Read 430438 times)

Online szipucsu

  • Global Moderator
  • EP addict
  • *
  • Posts: 9938
  • Country: hu
    • Támogató Támogató
    • Webnyelv.hu - Tanuljunk nyelveket!
Re: Általános BASIC Kérdések
« Reply #465 on: 2013.July.22. 10:18:30 »
Laci naptárprogramjának továbbfejlesztéséhez egy ötlet:
Mennyi idő van pontosan két dátum között?
Ügyes a program, mert ha pl. február 31-et adunk meg, hibát jelez, hogy ilyen dátum nincs.
Ezt IS-BASIC-re is meg lehetne csinálni.
Pl. tudjuk, hogy valaki mikor született, és ebből kiszámolná a gép, hogy pl. 2004. február 25-én pontosan hány éves volt.

Vagy, alapból tárolná az EP klub tagjainak születési dátumát. Talikon csak be kéne írni az aktuális dátumot, és napra pontosan kiírná az összes jelenlévő életkorát. :D

Laci, nincs kedved megcsinálni?
« Last Edit: 2013.July.22. 10:21:39 by szipucsu »
100 SOUND SOURCE 2,STYLE 128,PITCH 25.2,SYNC 1
110 SOUND PITCH 25,SYNC 1
120 ! Videos

Offline Lacika

  • EP addict
  • *
  • Posts: 3199
  • Country: hu
    • http://www.ep128.hu
Re: Általános BASIC Kérdések
« Reply #466 on: 2013.July.30. 00:04:24 »
A BASIC verem méretét valahogy meg lehet növelni, hogy ez működjön?

Offline Lacika

  • EP addict
  • *
  • Posts: 3199
  • Country: hu
    • http://www.ep128.hu
Re: Általános BASIC Kérdések
« Reply #467 on: 2013.July.30. 20:32:43 »
Zozo, ezt a hibát meg lehetne nézni a BASIC-ben? Elvileg ha beteli a verem, 5100-as hibaüzenetet kapnánk (Insufficient stack space) gyakorlatban viszont lefagy a BASIC. A készítők gondoltak erre az esetre a hibaüzenet meglétéből ítélve, valószínűleg csak a hibaellenőrzésben lehet valami "elgépelve".

Offline endi

  • EP addict
  • *
  • Posts: 7298
  • Country: hu
  • grafikus, játékfejlesztõ, programozás, scifi, tudományok, vallás
    • Honlapom
Re: Általános BASIC Kérdések
« Reply #468 on: 2013.July.30. 21:13:27 »
hm én valahogy előhoztam már ezt az üzenetet, írtam is itt a fórumon róla, de már nem emlékszem hogy is volt

amúgy olyan is van hogy kirajzolunk összevissza vonalakat és ha elég bonyolult akkor a fill csak részben fillezi be :)
Vigyázat! Szektás vagyok! :)

Offline Lacika

  • EP addict
  • *
  • Posts: 3199
  • Country: hu
    • http://www.ep128.hu
Re: Általános BASIC Kérdések
« Reply #469 on: 2013.July.31. 22:07:48 »
Quote from: endi
hm én valahogy előhoztam már ezt az üzenetet, írtam is itt a fórumon róla, de már nem emlékszem hogy is volt

amúgy olyan is van hogy kirajzolunk összevissza vonalakat és ha elég bonyolult akkor a fill csak részben fillezi be :)
Úgy néz ki, hogy nem a verem túlcsorulása miatt fagy le. "Manuális veremkezeléssel, paraméterátadás nélküli eiljáráshívással is lefagy a 38. szint után. Úgy tűnik, a blokkszervezésben a maximális mélység a 38. szint az IS-BASIC-ben. Ez szerencsére csak elméleti határ, ép ésszel ilyen mélységet még rekurzív hívással sem lehet nagyon elérni. Ez a rekurzív útvonalkeresés az extrém kivétel. A rekurzív quicksort (mivel minden lépésben felezi a rendezendő számok halmazát) tehát 2^38 db elemből álló halmazig működőképes marad, ami bőven túlmutat a várható igényeken és a memória kapacitásán...
Viszont életemben először használnom kellett a GOSUB ... RETURN utasításokat...

Valakinek van tippje labirintus generátor algoritmusra, amivel szöveges képernyőre lehet labirintust rajzolni?

Online szipucsu

  • Global Moderator
  • EP addict
  • *
  • Posts: 9938
  • Country: hu
    • Támogató Támogató
    • Webnyelv.hu - Tanuljunk nyelveket!
Re: Általános BASIC Kérdések
« Reply #470 on: 2013.July.31. 22:22:43 »
Quote from: Lacika
Valakinek van tippje labirintus generátor algoritmusra, amivel szöveges képernyőre lehet labirintust rajzolni?
István régebben csinált ilyesmit, itt.
Későbbi hozzászólásban van egy Lua script, ami kiírja szöveges fájlba a libaruntust, ami aztán berakható BASIC programba is.
Valamelyik EP-s könyvben volt ilyen basic program, ami labirintust generál és kivezeti belőle az emberkét. Szerintem nem a Hetedhét EP volt az, hanem valami mást... nem emlékszem a címére.
100 SOUND SOURCE 2,STYLE 128,PITCH 25.2,SYNC 1
110 SOUND PITCH 25,SYNC 1
120 ! Videos

Offline Lacika

  • EP addict
  • *
  • Posts: 3199
  • Country: hu
    • http://www.ep128.hu
Re: Általános BASIC Kérdések
« Reply #471 on: 2013.July.31. 22:34:14 »
Quote from: szipucsu
Valamelyik EP-s könyvben volt ilyen basic program, ami labirintust generál és kivezeti belőle az emberkét. Szerintem nem a Hetedhét EP volt az, hanem valami mást... nem emlékszem a címére.
Az a Tippek Trükkök-ben van (Ariadne.bas), de az elég gagyi, többnyire nem átjárható labirintust generál.

Online szipucsu

  • Global Moderator
  • EP addict
  • *
  • Posts: 9938
  • Country: hu
    • Támogató Támogató
    • Webnyelv.hu - Tanuljunk nyelveket!
Re: Általános BASIC Kérdések
« Reply #472 on: 2013.August.10. 19:37:06 »
Ezen az oldalon volt egy basic program, eddig még nem láttam.
Kicsit kezdetleges, de át lehet menni különböző szobákba. Valakinek van ötlete, mi lehet a játék célja?
100 SOUND SOURCE 2,STYLE 128,PITCH 25.2,SYNC 1
110 SOUND PITCH 25,SYNC 1
120 ! Videos

Offline endi

  • EP addict
  • *
  • Posts: 7298
  • Country: hu
  • grafikus, játékfejlesztõ, programozás, scifi, tudományok, vallás
    • Honlapom
Re: Általános BASIC Kérdések
« Reply #473 on: 2013.August.10. 19:57:35 »
graphics
run 3190

és kirajzol egy új pályát :)
Vigyázat! Szektás vagyok! :)

Online szipucsu

  • Global Moderator
  • EP addict
  • *
  • Posts: 9938
  • Country: hu
    • Támogató Támogató
    • Webnyelv.hu - Tanuljunk nyelveket!
Re: Általános BASIC Kérdések
« Reply #474 on: 2013.August.10. 20:04:56 »
Quote from: endi
graphics
run 3190

és kirajzol egy új pályát :)
A jelszó ARTAX, de utána hibaüzenet, mert a közepén indítottuk a játékot. :D
100 SOUND SOURCE 2,STYLE 128,PITCH 25.2,SYNC 1
110 SOUND PITCH 25,SYNC 1
120 ! Videos

Offline Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14737
  • Country: hu
    • http://enterprise.iko.hu/
Re: Általános BASIC Kérdések
« Reply #475 on: 2013.September.12. 10:29:41 »
Quote from: szipucsu
Régebben próbáltam basic-ből elmenteni pontonként a grafikus képernyő tartalmát, de eszméletlen nagy file lett volna tömörítés nélkül.
Itt gondolom két hibát csinálhattál:
- a BASIC (EXOS) virtuális koordináta rendszere szerint vetted a pontokat, így egy-egy valódi pixel sokszor el lett tárolva.
- ha numerikus változóban mentetted el az durván sokszor több helyett foglal mint amennyit valójában foglal a pixel a videó memóriában.

Online szipucsu

  • Global Moderator
  • EP addict
  • *
  • Posts: 9938
  • Country: hu
    • Támogató Támogató
    • Webnyelv.hu - Tanuljunk nyelveket!
Re: Általános BASIC Kérdések
« Reply #476 on: 2013.September.12. 10:43:22 »
Quote from: Zozosoft
Itt gondolom két hibát csinálhattál:
Az lehetséges, mert nem annyira értek hozzá, csak valami ilyet próbáltam:

1 OPEN #1:"DISK:KEPERNYO" ACCESS OUTPUT
10 FOR A=1 TO valamennyi
20   FOR B=1 TO nemtudommennyi
30     LOOK AT A,B:C
40     PRINT #1:STR&(C)
50   NEXT B
60 NEXT A
100 CLOSE #1

Fejből írtam, szóval lehet, hogy nem stimmel valami, de a lényege kb. ez. A lényeg, hogy valamennyi*nemtudommenyi bájt kerülne a lemezre, ami rá se férne. Ez legjobb esetben is párszázszor párszár, sőt 1280*960, ha jól sejtem, ami 115200 bájt, ami jó esetben is kb. 115 KB, ha jól számolom, ami nem kevés. De úgy emlékszem, nem is vártam ki, hogy basic-ben elmentse az egészet.
Van ennél jobb módja, hogy basic-ből elmentsük a grafikus képernyő tartalmát? Úgy értem, hogy gépi kódú, HEX$-es részek nélkül.
« Last Edit: 2013.September.12. 11:35:01 by szipucsu »
100 SOUND SOURCE 2,STYLE 128,PITCH 25.2,SYNC 1
110 SOUND PITCH 25,SYNC 1
120 ! Videos

Offline Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14737
  • Country: hu
    • http://enterprise.iko.hu/
Re: Általános BASIC Kérdések
« Reply #477 on: 2013.September.12. 11:03:18 »
A FOR A után 2 színmódban STEP 2 kell, 4 színnél STEP 4, 16 színnél STEP 8, 256 színnél STEP 16. (LORES esetén az adott érték kétszerese)
A FOR B után STEP 4.
Így már csak a tényleges pixelek lesznek leolvasva.

Ez STR&(C) ugye CHR$(C) akar lenni?
Ez így már jobb, így csak 1 bájt 1 pont, de ez még mindig pazarló, 2 színben elég lenne 1 bit, 4 színben 2, 16 színben 4, 256 színnél jó.
Szóval itt olyasmi kéne, hogy összegyűjtjük az értékeket, 2 színben 8-et, 4 színben 4-et, 16 színben 2-t. Az elöző értéket 2-el, 4-el, 16-al szorozva. Így akkor már a fájlban is annyi helyett foglal mint a videó memóriában.

De mindez baromi lassú lenne :-)
Nem véletlenül adták ki hamar a HEX-es megoldást :-)

Offline endi

  • EP addict
  • *
  • Posts: 7298
  • Country: hu
  • grafikus, játékfejlesztõ, programozás, scifi, tudományok, vallás
    • Honlapom
Re: Általános BASIC Kérdések
« Reply #478 on: 2013.September.12. 11:30:08 »
Ehhez még annyi érdekességet, hogy az attr mód amúgy tömörítés is egyben. Nagy túlzással szólva a jpg elődje, abban is van ilyesmi.

Ugyanis az emberi szem kevésbé érzékeny a színeknél a felbontásra, míg a fényerőre igen. Ezért érdemes a szín infókat kisebb felbontásban tárolni. 
Tehát igenis elmondható hogy a specy grafikája tömörített, méghozzá veszteséges tömörítés, persze virtuálisan (vagy hogy is fejezzem ki magam).

Nem véletlen hogy EP-n is az attr mód adja ki a legjobb eredményt ha fotókat konvertálunk, főleg ha a memória foglalást is beleszámítjuk.

Amúgy persze a palettás grafikai mód is egyfajta tömörítés. Sőt, ezt is a mai napig használják pl a textúra tömörítésben. Sőt, valós idejű kicsomagolás van! És ami még durvább, hogy ez nem hogy lassítja, hanem gyorsítja a kirajzolást, ugyanis jóval kisebb memória sávszélességet foglal, persze megfelelő gpu egységek kellenek hozzá amik számolnak.
Vigyázat! Szektás vagyok! :)

Online szipucsu

  • Global Moderator
  • EP addict
  • *
  • Posts: 9938
  • Country: hu
    • Támogató Támogató
    • Webnyelv.hu - Tanuljunk nyelveket!
Re: Általános BASIC Kérdések
« Reply #479 on: 2013.September.12. 11:41:28 »
Quote from: Zozosoft
Ez STR&(C) ugye CHR$(C) akar lenni?
Igen! :D Jó neked, már látásból felismered az ilyet. Én ilyenkor szoktam futtatni a programot, látom, nem azt csinálja, amit kéne, és utána írom át.

Quote
2 színben elég lenne 1 bit, 4 színben 2, 16 színben 4, 256 színnél jó.
Szóval itt olyasmi kéne, hogy összegyűjtjük az értékeket, 2 színben 8-et, 4 színben 4-et, 16 színben 2-t. Az elöző értéket 2-el, 4-el, 16-al szorozva. Így akkor már a fájlban is annyi helyett foglal mint a videó memóriában.
Tehát, végülis olyasmi kéne, ahogy a karakterek pixeleit tárolja a gép soronként egyetlen bájtban? És pl. 2 hatványaival lehetne bűvészkedni. Mármint most a 2 színmódra gondolok. Viszont, ha nem pont 2 hatványa a pontok száma egy sorban (vagy oszlop van itt előbb, már nem tudom), akkor a végénél is valamit trükközni kell, tehát a FOR-ok végén át kell írni a számokat 2 hatványára, és ami így lemarad, azzal csinálni valamit. Jól sejtem?
Természetesen nem akarom ezt már megcsinálni utólag, csak maga az elv érdekelne.
100 SOUND SOURCE 2,STYLE 128,PITCH 25.2,SYNC 1
110 SOUND PITCH 25,SYNC 1
120 ! Videos