Welcome, Guest. Please login or register.


Author Topic: BASIC (Read 213936 times)

Offline szipucsu

  • EP addict
  • *
  • Posts: 8601
  • 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: BASIC
« Reply #1485 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 lover
  • *
  • Posts: 955
  • 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: BASIC
« Reply #1486 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: 8601
  • 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: BASIC
« Reply #1487 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: 8601
  • 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: BASIC
« Reply #1488 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 lover
  • *
  • Posts: 955
  • 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: BASIC
« Reply #1489 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: 250
  • 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: BASIC
« Reply #1490 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: 2946
  • 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: BASIC
« Reply #1491 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: 2946
  • Country: hu
  • OS:
  • Windows XP Windows XP
  • Browser:
  • Firefox 52.0 Firefox 52.0
    • View Profile
    • http://www.ep128.hu
Re: BASIC
« Reply #1492 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: 8601
  • 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: BASIC
« Reply #1493 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: 5749
  • Country: hu
  • OS:
  • Linux Linux
  • Browser:
  • Chrome 84.0.4147.111 Chrome 84.0.4147.111
    • View Profile
Re: BASIC
« Reply #1494 on: 2020.September.06. 14:28:30 »
szerintem ha csinalsz editort, es hozzarendeled a csatornad, akkor mukodni fog

Offline szipucsu

  • EP addict
  • *
  • Posts: 8601
  • 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: BASIC
« Reply #1495 on: 2020.September.06. 15:15:11 »
szerintem ha csinalsz editort, es hozzarendeled a csatornad, akkor mukodni fog
Hozzárendelni hogyan lehet? A 0-ás csatorna hogyan rendelhető hozzá videolaphoz? Szerintem alapból a 102-es videolaphoz van hozzárendelve a 0-ás editor csatorna.
Lehet több editor csatornát is nyitni? És hozzá lehet rendelni más videolapokhoz 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

Online gflorez

  • EP addict
  • *
  • Posts: 2969
  • Country: es
  • OS:
  • Windows NT 6.3 Windows NT 6.3
  • Browser:
  • Firefox 79.0 Firefox 79.0
    • View Profile
Re: BASIC
« Reply #1496 on: 2020.September.06. 15:53:34 »
Esetleg megérinti a 29. rendszerváltozót VID_EDIT?

---------

Maybe touching System Variable 29 VID_EDIT?

--------

¿Quizás tocando la Variable de Sistema 29 VID_EDIT?

Offline geco

  • EP addict
  • *
  • Posts: 5749
  • Country: hu
  • OS:
  • Linux Linux
  • Browser:
  • Chrome 84.0.4147.111 Chrome 84.0.4147.111
    • View Profile
Re: BASIC
« Reply #1497 on: 2020.September.06. 16:03:49 »
szerintem igen, a 29-es rendszervaltozon keresztul, ugy tudom lehet tobb editor csatorna is.
i think yes, it can be done through 29 system variable, and i think more editor channel can be open.

Online gflorez

  • EP addict
  • *
  • Posts: 2969
  • Country: es
  • OS:
  • Windows NT 6.3 Windows NT 6.3
  • Browser:
  • Firefox 79.0 Firefox 79.0
    • View Profile
Re: BASIC
« Reply #1498 on: 2020.September.06. 16:30:58 »