Welcome, Guest. Please login or register.


Author Topic: BASIC (Read 168487 times)

Offline szipucsu

  • EP addict
  • *
  • Posts: 7783
  • Country: hu
  • OS:
  • Windows XP Windows XP
  • Browser:
  • Firefox 8.0 Firefox 8.0
    • View Profile
    • Webnyelv.hu - Tanuljunk nyelveket!
Re: BASIC
« Reply #165 on: 2011.November.19. 10:20:47 »
István, azt meg tudnád csinálni, hogy állítható legyen a labirintus nagysága (szélessége és magassága) karakterekben, és magát a labirintust el lehessen menteni egyszerû szöveges fájlba úgy, hogy a szélén a határoló falak ne legyenek benne a mentett fájlban? Valami ilyesmire gondolok: * LEVEL_3 (0.82 kB - downloaded 84 times.) (Nem tudom, a sorok végén az a sortörés mennyire szabályos.) Lehet, felhasználnám valami EP játékhoz.

Az a rekurzív eljárás furcsának tûnik, ahogy belegondolok, de majd próbálkozom vele...
SOUND SOURCE 3,STYLE 16,LEFT 16,RIGHT 64,SYNC 2
SOUND SOURCE 2,STYLE 128,PITCH 25.2,SYNC 2
SOUND PITCH 25,SYNC 2
Videos

Offline IstvanV

  • EP addict
  • *
  • Posts: 4806
  • OS:
  • Linux 64 bit Linux 64 bit
  • Browser:
  • Firefox 5.0 Firefox 5.0
    • View Profile
Re: BASIC
« Reply #166 on: 2011.November.19. 13:05:15 »
Ez a script állítható méretű labirintust generál szöveges file-ba:
  * maze.lua (3.23 kB - downloaded 103 times.)

Az elején lehet beállítani a különböző paramétereket:

Code: Lua
  1. mazeWidth = 43
  2. mazeHeight = 33
Ezek egyértelműek, 5 és 255 közötti páratlan számok adhatók meg. A kimeneti file nem tartalmazza a "keretet", tehát az alapbeállításokkal csak 41x31 méretű lesz.

Code: Lua
  1. innerWallProbability = 0.01
A külső falakkal nem összefüggő falak valószínűsége (0 és 1 között). Ha ez nagy, akkor általában egyszerűbb eljutni a kijáratig a külső falak mentén.

Code: Lua
  1. recursiveAlgorithm = false
Ha true, akkor a rekurzív algoritmus engedélyezett, és az innerWallProbability-nek nincs hatása. Ez eltérő jellegű labirintusokat állít elő.

Code: Lua
  1. outFileName = "/tmp/maze.txt"
A kimeneti file neve. Windows alatt a \ karakterek helyett \\-t kell írni (pl. "C:\\maze.txt").

Code: Lua
  1. math.randomseed(os.time())
Itt az os.time() helyére egész számot írva megismételhetővé válik a labirintus térképe (minden szám mást, de mindig ugyanazt generálja). Alapértelmezés szerint mindig más.
« Last Edit: 2011.November.19. 13:09:35 by IstvanV »

Offline szipucsu

  • EP addict
  • *
  • Posts: 7783
  • Country: hu
  • OS:
  • Windows XP Windows XP
  • Browser:
  • Firefox 8.0 Firefox 8.0
    • View Profile
    • Webnyelv.hu - Tanuljunk nyelveket!
Re: BASIC
« Reply #167 on: 2011.November.19. 14:49:15 »
Köszi!
Próbálkozom beépíteni valami játékba...
SOUND SOURCE 3,STYLE 16,LEFT 16,RIGHT 64,SYNC 2
SOUND SOURCE 2,STYLE 128,PITCH 25.2,SYNC 2
SOUND PITCH 25,SYNC 2
Videos

Offline szipucsu

  • EP addict
  • *
  • Posts: 7783
  • Country: hu
  • OS:
  • Windows XP Windows XP
  • Browser:
  • Firefox 8.0 Firefox 8.0
    • View Profile
    • Webnyelv.hu - Tanuljunk nyelveket!
Re: BASIC
« Reply #168 on: 2011.November.19. 19:05:09 »
István scriptje által tervezett labirintusokból be lehet tölteni ebbe a játékba és játszani is lehet vele. Sajnos a játékot régen úgy csináltam meg, hogy a pálya szélessége páros számú karakterbõl áll, így amit a script generál, abból "ízlés szerint" ki kell törölni minden sorban egy-egy karaktert, pl. a Word nevû PC-s szövegszerkesztõvel. (Másik megoldás, ha a szélességet kettõvel kisebbre állítjuk a scriptben, akkor meg egy-egy karaktert minden sorba be kell külön szúrni.) Nekem úgy tûnik, rekurzív algoritmussal jönnek ki játszhatóbb pályák. A script, a játékhoz nagyjából testre szabva: * mazehc.lua

A menüben betöltés után a 2-es gombbal át kell váltani DESIGNED levels-re, így a lemezrõl tölti be a pályákat. Elsõként a LEVEL_1 nevût tölti be, erre érdemes átnevezni a labirintust, amit ki akarunk próbálni. A csomagba tettem még 3 pályát, ami a labirintuskészítõ scripttel készült, lehet próbálkozni. :D (Szerintem nagy odafigyelést igényel, mert el is lehet tévedni, és a szörnyek is jönnek.)
* MazeHungry.zip



A kész pályákat lehet tovább szerkeszteni a játékba beépített pályaszerkesztõvel vagy a Worddel, hátha könnyebb és jobb lesz.
Szerintem túl nehéz a játék és néha unalmas, mert messze kerülhetnek a szörnyek. Nem tudom, mit lehetne csinálni vele, hogy érdekesebb legyen.
SOUND SOURCE 3,STYLE 16,LEFT 16,RIGHT 64,SYNC 2
SOUND SOURCE 2,STYLE 128,PITCH 25.2,SYNC 2
SOUND PITCH 25,SYNC 2
Videos

Offline IstvanV

  • EP addict
  • *
  • Posts: 4806
  • OS:
  • Linux 64 bit Linux 64 bit
  • Browser:
  • Firefox 5.0 Firefox 5.0
    • View Profile
Re: BASIC
« Reply #169 on: 2011.November.19. 20:45:41 »
Kissé továbbfejlesztett verziók:
  6921-0
- a "beragadást" javítottam, és a labirintus generálása is gyorsult. A korábban 2D8h címen található paraméter 309h címre került
  * maze3.com (2.73 kB - downloaded 97 times.) - a rekurzív kettéosztásos algoritmust használja

Offline szipucsu

  • EP addict
  • *
  • Posts: 7783
  • Country: hu
  • OS:
  • Windows XP Windows XP
  • Browser:
  • Firefox 8.0 Firefox 8.0
    • View Profile
    • Webnyelv.hu - Tanuljunk nyelveket!
Re: BASIC
« Reply #170 on: 2011.November.21. 17:23:59 »
Azt meg lehet csinálni valahogy a DISPLAY utasítással, hogy egy szöveges lap (vagy akár videólap) vízszintesen ne a képernyõ közepére kerüljön, hanem "arrébb" legyen? És így akár több videólap kerülhetne egymás mellé.
És nem tudom, a kurzort lehet-e teljesen likvidálni egy szöveges lapról. Persze a cursor colour és cursor character utasításokkal igen, de akkor csak látszólag nincs ott.
SOUND SOURCE 3,STYLE 16,LEFT 16,RIGHT 64,SYNC 2
SOUND SOURCE 2,STYLE 128,PITCH 25.2,SYNC 2
SOUND PITCH 25,SYNC 2
Videos

Offline Lacika

  • EP addict
  • *
  • Posts: 2918
  • Country: hu
  • OS:
  • Windows XP Windows XP
  • Browser:
  • Firefox 8.0 Firefox 8.0
    • View Profile
    • http://www.ep128.hu
Re: BASIC
« Reply #171 on: 2011.November.21. 18:01:28 »
Azt meg lehet csinálni valahogy a DISPLAY utasítással, hogy egy szöveges lap (vagy akár videólap) vízszintesen ne a képernyõ közepére kerüljön, hanem "arrébb" legyen? És így akár több videólap kerülhetne egymás mellé.
Teljességgel lehetetlen  :(

Offline Zozosoft

  • EP addict
  • *
  • Posts: 13404
  • Country: hu
  • OS:
  • Windows 7 Windows 7
  • Browser:
  • Firefox 8.0 Firefox 8.0
    • View Profile
    • http://enterprise.iko.hu/
Re: BASIC
« Reply #172 on: 2011.November.21. 20:13:58 »
És így akár több videólap kerülhetne egymás mellé.
Ezt csak a Windows nevû BASIC bõvítéssel lehet megcsinálni, és csak TEXT 80-ban.

Quote
És nem tudom, a kurzort lehet-e teljesen likvidálni egy szöveges lapról. Persze a cursor colour és cursor character utasításokkal igen, de akkor csak látszólag nincs ott.
PRINT CHR$(27);"O";
PRINT CHR$(27);"o";

Most vagy én vagyok béna, vagy tényleg elfelejtettek erre BASIC utasítást írni?

Offline szipucsu

  • EP addict
  • *
  • Posts: 7783
  • Country: hu
  • OS:
  • Windows XP Windows XP
  • Browser:
  • Firefox 8.0 Firefox 8.0
    • View Profile
    • Webnyelv.hu - Tanuljunk nyelveket!
Re: BASIC
« Reply #173 on: 2011.November.21. 21:52:15 »
Végülis a 0-ás (vagy 102-es? nekem a kettõ kicsit összefolyik) csatornán sincs kurzor, ha programból használjuk a print utasítást. De lehet, hogy annak más az oka.
De mintha anno láttam volna olyat, hogy lapon nem volt kurzor, csak szöveg. De már nem biztos.

Az volt poén egyszer, hogy megnyitottam egy 0-ás video: csatornát, majd több display utasítással e képernyõ különbözõ részein több "példányban" is megjelenítettem, és akkor kb. 3 kurzor volt és lehetett velük írni.
SOUND SOURCE 3,STYLE 16,LEFT 16,RIGHT 64,SYNC 2
SOUND SOURCE 2,STYLE 128,PITCH 25.2,SYNC 2
SOUND PITCH 25,SYNC 2
Videos

Offline Zozosoft

  • EP addict
  • *
  • Posts: 13404
  • Country: hu
  • OS:
  • Windows 7 Windows 7
  • Browser:
  • Firefox 8.0 Firefox 8.0
    • View Profile
    • http://enterprise.iko.hu/
Re: BASIC
« Reply #174 on: 2011.November.21. 22:07:01 »
A 0-ás az EDITOR ami a 102-es VIDEO-t használja. És kapcsolgatja rajta a kurzort, ezért nem látod.

Offline szipucsu

  • EP addict
  • *
  • Posts: 7783
  • Country: hu
  • OS:
  • Windows XP Windows XP
  • Browser:
  • Firefox 8.0 Firefox 8.0
    • View Profile
    • Webnyelv.hu - Tanuljunk nyelveket!
Re: BASIC
« Reply #175 on: 2011.December.27. 18:47:26 »
A két megoldás közül melyik a jó vagy jobb?

Code: [Select]
100 DEF AKÁRMI
        ...
250   CALL BÁRMI
        ...
300 END DEF !(AKÁRMI)
310 DEF BÁRMI
         ...
350 END DEF !(BÁRMI)

vagy:
Code: [Select]
100 DEF AKÁRMI
...
250   CALL BÁRMI
...
310   DEF BÁRMI
            ...
350   END DEF !(BÁRMI)
400 END DEF !(AKÁRMI)

Szóval, egy DEF eljáráson belül kell létrehozni egy másik DEF eljárást, ha azt az elsõ DEF eljáráson belülrõl hívjuk meg, vagy akkor is kívülre kell helyezni a meghívott eljárást?
Remélem, érthetõen sikerült megfogalmaznom. :D
(Triviális lehet a válasz, de így a 20. század után már régen botlottam ilyen "problémába".)
SOUND SOURCE 3,STYLE 16,LEFT 16,RIGHT 64,SYNC 2
SOUND SOURCE 2,STYLE 128,PITCH 25.2,SYNC 2
SOUND PITCH 25,SYNC 2
Videos

Offline Zozosoft

  • EP addict
  • *
  • Posts: 13404
  • Country: hu
  • OS:
  • Windows 7 Windows 7
  • Browser:
  • Firefox 8.0 Firefox 8.0
    • View Profile
    • http://enterprise.iko.hu/
Re: BASIC
« Reply #176 on: 2011.December.27. 18:58:58 »
Mindkettõt ugyanúgy kezeli. De elméletileg a szép különálló DEF blokkok a szépek.

Offline szipucsu

  • EP addict
  • *
  • Posts: 7783
  • Country: hu
  • OS:
  • Windows XP Windows XP
  • Browser:
  • Firefox 8.0 Firefox 8.0
    • View Profile
    • Webnyelv.hu - Tanuljunk nyelveket!
Re: BASIC
« Reply #177 on: 2011.December.28. 15:12:12 »
Köszi a választ!
Kicsit érdekesen mûködnek ezek a DEF blokkok. Ha meghívok egy DEF blokkot és azon belül egy új változót definiálok, akkor a DEF blokkból visszatérve a gép elfelejti, hogy definiáltam ezt a változót és Variable not initialised lesz. Viszont, ha a program legelején definiálom tetszõleges értékkel a változót (pl. LET A$=""), akkor már nem jön elõ a hiba.
A gépkönyvben próbáltam utánanézni ennek a DEF-es és változós ügynek (mert vannak külsõ és belsõ változók), de túl bonyolult volt nekem. Ha belsõ változóról van szó, akkor azt a DEF utasításban is meg kell adni elvileg (pl. DEF akármi(x,y) vagy ilyesmi).
Szóval ez így fura kicsit...

6982-0
SOUND SOURCE 3,STYLE 16,LEFT 16,RIGHT 64,SYNC 2
SOUND SOURCE 2,STYLE 128,PITCH 25.2,SYNC 2
SOUND PITCH 25,SYNC 2
Videos

Offline Lacika

  • EP addict
  • *
  • Posts: 2918
  • Country: hu
  • OS:
  • Windows XP Windows XP
  • Browser:
  • Firefox 8.0 Firefox 8.0
    • View Profile
    • http://www.ep128.hu
Re: BASIC
« Reply #178 on: 2011.December.28. 16:03:32 »
Kicsit érdekesen mûködnek ezek a DEF blokkok.

Nincs ebben semmi "érdekes", nagykönyv szerint így kell mûködnie strukturált programozási nyelvben. Adatok elszigetelésének elve: azon változók, melyek eljáráson belül deklarálsz, lokális változók. Lásd Gépkönyv ide vonatkozó fejezetét ("LOKÁLIS ÉS G LOBÁLIS VÁLTOZÓK").
« Last Edit: 2011.December.28. 16:06:37 by Lacika »

Offline Povi

  • EP addict
  • *
  • Posts: 1848
  • Country: hu
  • OS:
  • Windows XP Windows XP
  • Browser:
  • Safari Safari
    • View Profile
    • http://povi.fw.hu
Re: BASIC
« Reply #179 on: 2011.December.28. 16:04:22 »
ha a DEF blokkon belül hozol létre (deklarálsz) egy változót, akkor az lokális lesz, vagyis csak addig él, amíg ki nem lépsz a DEF-ből. Ezért áll le a program "ismeretlen változó" hibaüzenettel.
*** Speicherplatz zu klein