Welcome, Guest. Please login or register.


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

Offline szipucsu

  • Global Moderator
  • EP addict
  • *
  • Posts: 10096
  • Country: hu
    • Támogató Támogató
    • Webnyelv.hu - Tanuljunk nyelveket!
Re: Általános BASIC Kérdések
« Reply #1290 on: 2019.February.05. 12:16:12 »
Az envelope-nak miért csak 25 fázisnak van hely alapból? Persze fel lehet szabadítani több helyet is neki, pl.

CLOSE #103
SET SOUND BUFFER 30 (vagy még nagyobb)
OPEN #103:"sound:"

Ha nagy sound buffert adunk meg, akkor az mi elől veszi el a helyet? Hogy a Zzzipnek bezavar, azt nem hiszem, hiszen a zzzippel lefordított program betöltése előtt is lehet sok envelope numbert létrehozni, még a zzzippelt program is tudja azokat használni.
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 #1291 on: 2019.February.05. 13:39:45 »
hát a nagyobb sound buffet több memóriát foglal.
már nem emlékszem pontosan mennyit, de asszem nem sokat, csodálkoztam is hogy miért olyan kevés a default
Vigyázat! Szektás vagyok! :)

Offline szipucsu

  • Global Moderator
  • EP addict
  • *
  • Posts: 10096
  • Country: hu
    • Támogató Támogató
    • Webnyelv.hu - Tanuljunk nyelveket!
Re: Általános BASIC Kérdések
« Reply #1292 on: 2019.February.24. 18:19:17 »
Endi, az jutott eszembe, hogy a Mega Pacman játékodat meg lehetne csinálni grafikus karakteres képernyőre, több szín lenne. Bár a soronként megnyitott videólapok a scrollt talán nem tennék lehetővé, vagy legalábbis nehezebb lenne megcsinálni. De attól tartok, nincs meg az eredeti basic program, csak a zzzippelt, legalábbis az ep128.hu-n.
Meg a 2016-os (félig befejezett) Snakeprise is megcsinálható lenne gracha módra. Ez akár sokszínű is lehet, mert a karakterek alakjának nincs túl nagy jelentősége.
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 #1293 on: 2019.February.24. 18:41:36 »
Endi, az jutott eszembe, hogy a Mega Pacman játékodat meg lehetne csinálni grafikus karakteres képernyőre, több szín lenne. Bár a soronként megnyitott videólapok a scrollt talán nem tennék lehetővé, vagy legalábbis nehezebb lenne megcsinálni. De attól tartok, nincs meg az eredeti basic program, csak a zzzippelt, legalábbis az ep128.hu-n.
Meg a 2016-os (félig befejezett) Snakeprise is megcsinálható lenne gracha módra. Ez akár sokszínű is lehet, mert a karakterek alakjának nincs túl nagy jelentősége.

már el is felejtettem ezt a játékot :D
Vigyázat! Szektás vagyok! :)

Offline szipucsu

  • Global Moderator
  • EP addict
  • *
  • Posts: 10096
  • Country: hu
    • Támogató Támogató
    • Webnyelv.hu - Tanuljunk nyelveket!
Re: Általános BASIC Kérdések
« Reply #1294 on: 2019.March.15. 22:14:53 »
Eljárás nem hívhatja meg önmagát, mert a sokadig meghívás után hiba lesz? Például ez a 40. meghívás után lefagy:

10 DEF EKT
20  CALL EKT
30 END DEF
40 CALL EKT

De ha nem ilyen direktbe hívjuk meg, akkor működhet? Például ilyesmi:

10 DEF EKT
20   IF A>80 THEN CALL EKT
30 END DEF
35 FOR X=1 TO 2000
40   LET A=RND(120)
50   CALL EKT
60 NEXT

Valami hasonlót sikerült a kígyós játékomba betenni. Próbálgattam, de sokadik meghívás után sem fagy le.
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 #1295 on: 2019.March.15. 23:07:08 »
a rekurzív függvényhívás hasznos dolog, de persze nyilván minden hívás plusz memóriát foglal, így aztán egyszercsak elfogy a memória...
Vigyázat! Szektás vagyok! :)

Offline ergoGnomik

  • EP addict
  • *
  • Posts: 1342
  • Country: hu
  • Stray cat from Commodore alley
Re: Általános BASIC Kérdések
« Reply #1296 on: 2019.March.16. 00:05:09 »
Nos, a két változat között az az eltérés, hogy mesterségesen 39-re (vagy 38-ra?) korlátozod a hívás "mélységét" a második esetben, így sosem éri el a 40-es határt. Egyébként a kettő között nincs érdemi különbség.

Offline szipucsu

  • Global Moderator
  • EP addict
  • *
  • Posts: 10096
  • Country: hu
    • Támogató Támogató
    • Webnyelv.hu - Tanuljunk nyelveket!
Re: Általános BASIC Kérdések
« Reply #1297 on: 2019.March.16. 10:10:45 »
Nos, a két változat között az az eltérés, hogy mesterségesen 39-re (vagy 38-ra?) korlátozod a hívás "mélységét" a második esetben, így sosem éri el a 40-es határt.
Ezt nem teljesen értem. Mivel korlátoztam én a hívás mélységét 39-re?

Arra jöttem rá, az első változat lényegében végtelen ciklusba állítja az eljárást, ez tesz be neki.
Ha nem kerül végtelen ciklusba, hanem különféle IF és CASE ágak esetén hívja meg önmagát újra, és közben változnak a feltételek is, ami miatt önmagát újra meghívhatja, akkor már nem érvényes ez a 39 körüli határ? Ha egyszer már lemegy végig END DEF-ig, akkor már jó lesz?

A kukacos játékban van egy tárgy, amihez ha hozzáér a kukac, átkerül a képernyő másik részére. Viszont a képernyő másik részén is egyből meg kell nézni, milyen tárgy van ott, ahova kerül a kukac. Tehát az eljárás, amiben megvizsgálja, mihez ér hozzá a kukac, az meghívja önmagát, ha ilyen teleporthoz ér hozzá, hogy utána azt is megvizsgálja, hogy ahova került a kukac, ott mi van. Remélem, érthető. :D Ha nem akkor majd teszek fel róla részt.
Én sokat próbálgattam, játék közben mindig teleportáltam, és nem fagyott le.
100 SOUND SOURCE 2,STYLE 128,PITCH 25.2,SYNC 1
110 SOUND PITCH 25,SYNC 1
120 ! Videos

Offline ergoGnomik

  • EP addict
  • *
  • Posts: 1342
  • Country: hu
  • Stray cat from Commodore alley
Re: Általános BASIC Kérdések
« Reply #1298 on: 2019.March.16. 10:58:36 »
Jajj! Nagyon figyelmetlenül olvastam a kódod. Bocsi! Nem is értem hogyan, de beleláttam hogy A értékét hívásonként csökkentgeti, pedig konkrétan nem csinál semmit.

Amíg A értéke nem haladja meg a nyolcvanat, addig csak egyszer fog lefutni az EKT függvény. Ha A értéke legalább 81, akkor viszont az én értelmezésem szerint újra előáll a "végtelen ciklus".

Egyébként nem a "végtelenség" a baj, hanem annak az adminisztratív memóriának (ún. verem) az elfogyása, amivel nyomon követi az IS-BASIC az egymásba ágyazódó függvényhívásokat.

Offline szipucsu

  • Global Moderator
  • EP addict
  • *
  • Posts: 10096
  • Country: hu
    • Támogató Támogató
    • Webnyelv.hu - Tanuljunk nyelveket!
Re: Általános BASIC Kérdések
« Reply #1299 on: 2019.March.16. 11:15:03 »
Ha A értéke legalább 81, akkor viszont az én értelmezésem szerint újra előáll a "végtelen ciklus".
Igen, most már ki is próbáltam, tényleg végtelen "ciklus lett", pedig én sem erre számítottam először.
Ha nem lesz végtelen ciklus, akkor nem telhet be a verem az ilyen önmagát meghívó eljárástól, akkor sem, ha sokszor hívja meg önmagát?
100 SOUND SOURCE 2,STYLE 128,PITCH 25.2,SYNC 1
110 SOUND PITCH 25,SYNC 1
120 ! Videos

Offline ergoGnomik

  • EP addict
  • *
  • Posts: 1342
  • Country: hu
  • Stray cat from Commodore alley
Re: Általános BASIC Kérdések
« Reply #1300 on: 2019.March.16. 11:47:45 »
Ha nem lesz végtelen ciklus, akkor nem telhet be a verem az ilyen önmagát meghívó eljárástól, akkor sem, ha sokszor hívja meg önmagát?
Pontosabb azt mondani, hogy ha a rekurzív hívások száma nem haladja meg a kritikus értéket, akkor a program futása nem fog emiatt hibával megszakadni.

Offline szipucsu

  • Global Moderator
  • EP addict
  • *
  • Posts: 10096
  • Country: hu
    • Támogató Támogató
    • Webnyelv.hu - Tanuljunk nyelveket!
Re: Általános BASIC Kérdések
« Reply #1301 on: 2019.March.16. 12:00:45 »
Pontosabb azt mondani, hogy ha a rekurzív hívások száma nem haladja meg a kritikus értéket, akkor a program futása nem fog emiatt hibával megszakadni.
Szerintem sok rekurzív hívás volt abban a kukacos játékban, ahogy teszteltem, direkt úgy játszottam, hogy sok legyen, de nem lett gond. Nem is hibával szakadna meg olyankor, nekem teljesen le is fagyott, amikor elérte a 39 körüli értéket a lentebbi program, és csak a reset segített, még a STOP-ra sem reagált.
Na, de majd abba a topikba kicsit konkrétabban leírom a helyzetet.
100 SOUND SOURCE 2,STYLE 128,PITCH 25.2,SYNC 1
110 SOUND PITCH 25,SYNC 1
120 ! Videos

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: Általános BASIC Kérdések
« Reply #1302 on: 2019.March.16. 12:34:39 »
A lényeg, hogy legyen valamilyen kilépési feltétel, ami megakadályozza a végtelen ciklust. Elsősorban olyan problémánál érdemes ilyen megoldást használni, ami egyszerűen leírható "rekurzív" módon. Például az alábbi programban a FILL() területet tölt fel a PLOT PAINT utasításhoz hasonlóan, bár a megvalósítás nem hatékony (ennél nagyobb területnél le is fagy, de ez csak egy egyszerű példa):

[ Guests cannot view attachments ]

Offline szipucsu

  • Global Moderator
  • EP addict
  • *
  • Posts: 10096
  • Country: hu
    • Támogató Támogató
    • Webnyelv.hu - Tanuljunk nyelveket!
Re: Általános BASIC Kérdések
« Reply #1303 on: 2019.March.16. 13:17:41 »
A lényeg, hogy legyen valamilyen kilépési feltétel, ami megakadályozza a végtelen ciklust.
Tehát ha például 30-szor meghívja önmagát az eljárás, utána a program másik részéhez kerül a végrehajtás, majd később újra meghívja 30-szor önmagát az eljárás, akkor a kétszer 30 nem adódik össze, hogy így túllépje a 39-et és lefagyjon?
100 SOUND SOURCE 2,STYLE 128,PITCH 25.2,SYNC 1
110 SOUND PITCH 25,SYNC 1
120 ! Videos

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: Általános BASIC Kérdések
« Reply #1304 on: 2019.March.16. 13:26:46 »
Tehát ha például 30-szor meghívja önmagát az eljárás, utána a program másik részéhez kerül a végrehajtás, majd később újra meghívja 30-szor önmagát az eljárás, akkor a kétszer 30 nem adódik össze, hogy így túllépje a 39-et és lefagyjon?

Ha az első 30 hívás visszatért, akkor nem.