Welcome, Guest. Please login or register.


Author Topic: Általános (Read 302470 times)

Offline szipucsu

  • EP addict
  • *
  • Posts: 9192
  • Country: hu
  • OS:
  • Windows 7/Server 2008 R2 Windows 7/Server 2008 R2
  • Browser:
  • Firefox 79.0 Firefox 79.0
    • View Profile
    • Webnyelv.hu - Tanuljunk nyelveket!
Re: Általános
« Reply #1470 on: 2020.August.27. 09:46:27 »
There is some way to know the offending line number?
Unfortunately no. Zzzip forgets the line numbers of the original program.
As I see line  4390 returns  (4390 RETURN) to the line 510 and this line might be guilty:

Code: [Select]
510 IF (IN(35) BAND 8)<>8 THEN GOTO 510
It is easier this way (without brackets):

Code: [Select]
510 IF IN(35) BAND 8<>8 THEN GOTO 510
I have compiled it this way. Is it working now?
* SEPLAY ZZZIP 2.zip (11.54 kB - downloaded 209 times.)

If not, you could find out something else instead of BAND. Or maybe:

Code: [Select]
510 LET GUSTAVO=IN(35)
515 IF GUSTAVO AND 8<>8 THEN GOTO 510
100 SOUND SOURCE 3,STYLE 16,LEFT 16,RIGHT 64,SYNC 2
110 SOUND SOURCE 2,STYLE 128,PITCH 25.2,SYNC 2
120 SOUND PITCH 25,SYNC 2
Videos

Online gflorez

  • EP addict
  • *
  • Posts: 3233
  • Country: es
  • OS:
  • Unknown Unknown
  • Browser:
  • Firefox 79.0 Firefox 79.0
    • View Profile
Re: Általános
« Reply #1471 on: 2020.August.27. 10:23:20 »


I only can use BAND , as I am managing bits. I can search other ways, with arithmetic.

What version of Zzzip do you use? I have to fix it by myself...

Thanks.

Offline geco

  • EP addict
  • *
  • Posts: 6337
  • Country: hu
  • OS:
  • Linux Linux
  • Browser:
  • Firefox 68.0 Firefox 68.0
    • View Profile
Re: Általános
« Reply #1472 on: 2020.August.27. 10:29:20 »
If you use

V=IN(35)
IF V/8-V/16*2=0 GOTO 510

should work, since ZZZIP works only with integers :D :D
« Last Edit: 2020.August.27. 10:45:00 by geco »

Offline szipucsu

  • EP addict
  • *
  • Posts: 9192
  • Country: hu
  • OS:
  • Windows 7/Server 2008 R2 Windows 7/Server 2008 R2
  • Browser:
  • Firefox 79.0 Firefox 79.0
    • View Profile
    • Webnyelv.hu - Tanuljunk nyelveket!
Re: Általános
« Reply #1473 on: 2020.August.27. 10:47:10 »
What version of Zzzip do you use? I have to fix it by myself...
Zzzip 1.2. It can be downloaded here, scroll down to the bottom of the page. Hay que ir abajo en la página.

Anyway, the simplest way is to use this snapshot if you have enabled virtual file I/O and have a working directory on your hard drive (set by alt+F in the EP128Emu):
* Zzzip.ep128s (53.05 kB - downloaded 223 times.)
100 SOUND SOURCE 3,STYLE 16,LEFT 16,RIGHT 64,SYNC 2
110 SOUND SOURCE 2,STYLE 128,PITCH 25.2,SYNC 2
120 SOUND PITCH 25,SYNC 2
Videos

Online gflorez

  • EP addict
  • *
  • Posts: 3233
  • Country: es
  • OS:
  • Windows 7/Server 2008 R2 Windows 7/Server 2008 R2
  • Browser:
  • Firefox 79.0 Firefox 79.0
    • View Profile
Re: Általános
« Reply #1474 on: 2020.August.27. 14:36:43 »
Thanks both. Later I will try it.

Offline szipucsu

  • EP addict
  • *
  • Posts: 9192
  • Country: hu
  • OS:
  • Windows 7/Server 2008 R2 Windows 7/Server 2008 R2
  • Browser:
  • Firefox 80.0 Firefox 80.0
    • View Profile
    • Webnyelv.hu - Tanuljunk nyelveket!
Re: Általános
« Reply #1475 on: 2020.September.05. 09:58:10 »
Azt hogyan lehet a legegyszerűbben megcsinálni, hogy a program véletlenszerű sorrendbe rakja a számokat 1 és N között? Arra kellene, hogy a játékban a szintek véletlenszerű sorrendben jöjjenek egymás után, mint az Enterball-nál, de az első és utolsó szint is mindig változna.

Én ezt találtam ki, 1 és 8 között véletlenszerű sorrendbe rakja a számokat. Lehet ennél egyszerűbben?
Code: [Select]
    1 PROGRAM "sorrend.bas"
   10 RANDOMIZE
  100 NUMERIC SZINTEK(1 TO 8)
  110 FOR A=1 TO 8
  120   LET B=RND(8)+1
  125   IF A>1 THEN
  130     FOR C=1 TO A-1
  140       IF B=SZINTEK(C) THEN GOTO 120
  150     NEXT
  155   END IF
  160   LET SZINTEK(A)=B
  170 NEXT
  180 FOR A=1 TO 8
  190   PRINT SZINTEK(A)
  200 NEXT
Zzzippel lefordítva a programot a 2. szám mindig a 2 volt, fura. Az első meg mindig vagy az 5, vagy a 6, talán ritkán más is.
100 SOUND SOURCE 3,STYLE 16,LEFT 16,RIGHT 64,SYNC 2
110 SOUND SOURCE 2,STYLE 128,PITCH 25.2,SYNC 2
120 SOUND PITCH 25,SYNC 2
Videos

Offline ergoGnomik

  • EP addict
  • *
  • Posts: 1070
  • Country: hu
  • Stray cat from Commodore alley
  • OS:
  • Windows 7/Server 2008 R2 Windows 7/Server 2008 R2
  • Browser:
  • Opera 12.18 Opera 12.18
    • View Profile
Re: Általános
« Reply #1476 on: 2020.September.05. 11:24:50 »
Azt is csinálhatod, hogy sorrendben feltöltöd a szintek tömbjét, és ciklusban kiválasztasz véletlenszerűen két tömbelemet, amiket felcserélsz. A ciklus hosszát meg kikísérletezed, hogy hány cserét érdemes elvégezni hogy a szemednek kellemes véletlen sorrend álljon elő. Érdemes még arra is figyelni, hogy a felcserélendő két elem különböző legyen (tehát ne akarja a program mondjuk az ötödik elemet az ötödikkel megcserélni), illetve azt is lehet esetleg ellenőrizni, hogy ne ismétlődjön meg a legutóbbi csere (pölö egyes a kettessel egymás után kétszer, vagy hármas a hatossal, majd hatos a hármassal).

Offline szipucsu

  • EP addict
  • *
  • Posts: 9192
  • Country: hu
  • OS:
  • Windows 7/Server 2008 R2 Windows 7/Server 2008 R2
  • Browser:
  • Firefox 80.0 Firefox 80.0
    • View Profile
    • Webnyelv.hu - Tanuljunk nyelveket!
Re: Általános
« Reply #1477 on: 2020.September.05. 14:32:18 »
ciklusban kiválasztasz véletlenszerűen két tömbelemet, amiket felcserélsz

Kipróbáltam ezt is, ez is működik:
Code: [Select]
  100 PROGRAM "sorrend2.bas"
  110 RANDOMIZE
  120 NUMERIC SZINTEK(1 TO 8)
  130 FOR A=1 TO 8
  140   LET SZINTEK(A)=A
  150 NEXT
  160 FOR X=1 TO 20
  170   LET A=RND(8)+1:LET B=RND(8)+1
  180   IF A=B THEN GOTO 170
  185   LET C=SZINTEK(A)
  200   LET SZINTEK(A)=SZINTEK(B)
  210   LET SZINTEK(B)=C
  220 NEXT
  230 FOR A=1 TO 8
  240   PRINT SZINTEK(A)
  250 NEXT

Továbbgondolva az ötleted, végigmegyek ciklussal az összes elemen, és tetszőleges elemmel felcserélem. Így tuti, hogy mindenhol lesz csere, és elég csak akkora ciklus, ahány elem van a tömbben. Így az sem baj, ha önmagával cseréli meg, sőt jó is, mert különben nem lehetne az 1 sosem az első, így több variáció lehet. Azt hiszem, ez a legjobb és egyben leggyorsabb módszer:

Code: [Select]
  100 PROGRAM "sorrend3.bas"
  110 RANDOMIZE
  120 NUMERIC SZINTEK(1 TO 8)
  130 FOR A=1 TO 8
  140   LET SZINTEK(A)=A
  150 NEXT
  160 FOR X=1 TO 8
  170   LET A=X:LET B=RND(8)+1
  180   !IF A=B THEN GOTO 170 ! nem is kell ez
  185   LET C=SZINTEK(A)
  200   LET SZINTEK(A)=SZINTEK(B)
  210   LET SZINTEK(B)=C
  220 NEXT
  230 FOR A=1 TO 8
  240   PRINT SZINTEK(A)
  250 NEXT
100 SOUND SOURCE 3,STYLE 16,LEFT 16,RIGHT 64,SYNC 2
110 SOUND SOURCE 2,STYLE 128,PITCH 25.2,SYNC 2
120 SOUND PITCH 25,SYNC 2
Videos

Offline szipucsu

  • EP addict
  • *
  • Posts: 9192
  • Country: hu
  • OS:
  • Windows 7/Server 2008 R2 Windows 7/Server 2008 R2
  • Browser:
  • Firefox 80.0 Firefox 80.0
    • View Profile
    • Webnyelv.hu - Tanuljunk nyelveket!
Re: Általános
« Reply #1478 on: 2020.September.05. 20:41:48 »
Bár úgy látom, most már C-ben is lehet programozni EP-re PC-n, de azért még a basic viszontagságaival kapcsolatban egy kérdés: A CTRL+F2-vel középre lehet állítani az adott sort. Ennek a karakternek a kódja CHR$(241). Ha kiadom egy szöveges csatornán arra a sorra, hogy PRINT CHR$(241), akkor odarak valamilyen karaktert, ahelyett, hogy középre rakná a sort. Ez miért lehet? Igaz, gracha képernyő volt, de az is karakteres.
Egyúttal találtam helyette egy másik megoldást, a PRINT AT 1,vsz/2-LEN(A$)/2:A$ (vsz:videolap szélessége) nagyjából középre írja a szöveget. De azért érdekelne, a CHR$(241) miért nem működik.
100 SOUND SOURCE 3,STYLE 16,LEFT 16,RIGHT 64,SYNC 2
110 SOUND SOURCE 2,STYLE 128,PITCH 25.2,SYNC 2
120 SOUND PITCH 25,SYNC 2
Videos

Offline ergoGnomik

  • EP addict
  • *
  • Posts: 1070
  • Country: hu
  • Stray cat from Commodore alley
  • OS:
  • Windows 7/Server 2008 R2 Windows 7/Server 2008 R2
  • Browser:
  • Firefox 52.0 Firefox 52.0
    • View Profile
Re: Általános
« Reply #1479 on: 2020.September.05. 20:58:20 »
A CTRL+F2-vel középre lehet állítani az adott sort. Ennek a karakternek a kódja CHR$(241). Ha kiadom egy szöveges csatornán arra a sorra, hogy PRINT CHR$(241), akkor odarak valamilyen karaktert, ahelyett, hogy középre rakná a sort. Ez miért lehet?
Valószínűleg azért, mert a billentyű kombináció egy EDITOR funkciót hoz működésbe. A BASIC program futása közben ezek ha minden igaz csak részlegesen működnek, és a PRINT paranccsal nem is lehet kiváltani ezeket.

Offline Tomato77

  • EP user
  • *
  • Posts: 362
  • Country: hu
  • OS:
  • Windows 7/Server 2008 R2 Windows 7/Server 2008 R2
  • Browser:
  • Chrome 85.0.4183.83 Chrome 85.0.4183.83
    • View Profile
Re: Általános
« Reply #1480 on: 2020.September.05. 22:10:40 »
Továbbgondolva az ötleted, végigmegyek ciklussal az összes elemen, és tetszőleges elemmel felcserélem. Így tuti, hogy mindenhol lesz csere, és elég csak akkora ciklus, ahány elem van a tömbben.

Tetszik ez a megoldás, egész programozós hozzáállás. :) Nincs nagy jelentősége, de akkor az A=X részt is ki lehetne venni és közvetlenül X-szel cserélni, még egy utasítással kevesebb lenne. De maga az elv tök jó lett! :)
Kotasoft

Offline Lacika

  • EP addict
  • *
  • Posts: 3058
  • Country: hu
  • OS:
  • Windows 98 Windows 98
  • Browser:
  • Firefox 2.0.0.20 Firefox 2.0.0.20
    • View Profile
    • http://www.ep128.hu
Re: Általános
« Reply #1481 on: 2020.September.05. 22:27:11 »
Pedig működik:
PRINT "Szöveg";CHR$(241)
Értelemszerűen a PRINT végére kell a pontosvessző, mert a CHR$(241) az aktuális bekezdésre vonatkozik.

Offline Lacika

  • EP addict
  • *
  • Posts: 3058
  • Country: hu
  • OS:
  • Windows XP Windows XP
  • Browser:
  • Firefox 52.0 Firefox 52.0
    • View Profile
    • http://www.ep128.hu
Re: Általános
« Reply #1482 on: 2020.September.05. 23:15:11 »
Megjegyzendő, az összes szerkesztő funkció működik programból is.
Itt egy példa.

Offline szipucsu

  • EP addict
  • *
  • Posts: 9192
  • Country: hu
  • OS:
  • Windows 7/Server 2008 R2 Windows 7/Server 2008 R2
  • Browser:
  • Firefox 80.0 Firefox 80.0
    • View Profile
    • Webnyelv.hu - Tanuljunk nyelveket!
Re: Általános
« Reply #1483 on: 2020.September.06. 12:57:06 »
Pedig működik:
PRINT "Szöveg";CHR$(241)

Ebben a programban nem működik, a CHR$(241) egy "q" karaktert biggyeszt a végére:

Code: [Select]
5520 SET VIDEO MODE 0:SET VIDEO COLOUR 0
 5560 SET VIDEO X 30:SET VIDEO Y 1
 5570 OPEN #1:"VIDEO:"
 5580 SET #1:SCROLL OFF:PRINT #1:CHR$(27);"o"
 5590 DISPLAY #1:AT 25 FROM 1 TO 1
 6000 PRINT #1:"SZOVEG";CHR$(241)

Csak a 0-ás editor csatornán működik (ahogy ErgoGnomik írta), külön videolapokra már nem.
100 SOUND SOURCE 3,STYLE 16,LEFT 16,RIGHT 64,SYNC 2
110 SOUND SOURCE 2,STYLE 128,PITCH 25.2,SYNC 2
120 SOUND PITCH 25,SYNC 2
Videos

Offline geco

  • EP addict
  • *
  • Posts: 6337
  • Country: hu
  • OS:
  • Linux Linux
  • Browser:
  • Chrome 84.0.4147.111 Chrome 84.0.4147.111
    • View Profile
Re: Általános
« Reply #1484 on: 2020.September.06. 14:28:30 »
szerintem ha csinalsz editort, es hozzarendeled a csatornad, akkor mukodni fog