Welcome, Guest. Please login or register.


Author Topic: Egysoros játék felhívás (Read 13354 times)

Offline Pgyuri

  • EP fan
  • *
  • Posts: 156
Egysoros játék felhívás
« on: 2012.December.07. 23:37:53 »
Üdv,

A mai (december 7-i) klubnapon előjött egy téma, amely kicsit megmozgatta a fantáziánk és az lett a vége, hogy ki is írnék egy versenyfelhívást.

Feladat:

1 soros BASIC játékprogram készítés.

Szabályok:

A program kizárólag BASIC program lehet, egyetlen számozott programsorból állhat, gépi kódú programot nem tartalmazhat és nem is hívhat. A gép bekapcsolása és elindulása után semmilyen további előkészület nem végezhető, a program begépelése után azonnal RUN-al kell indítani, bármilyen manipuláció kizáró ok.

Határidő:

Tulajdonképpen az lenne a jó, ha nem lenne, hanem minél több érdekes megoldás készülne, de hogy értelme is legyen a felhívásnak, a bemutatás/elküldés határideje legyen a februári klubnap, vagyis 2013. február 7. csütörtök, 15.00 óra.

Értékelés:

A legszínvonalasabb, legjobb megjelenésű, legötletesebb játékot a klubnapon szavazással választjuk ki.

Nyeremény:

A győztes választhat egy EP64 vagy EP128 ...... feliratú ajándékcsomag közül, melyben meglepetés várja, amely remélhetőleg tetszeni fog neki.


Mivel saját magam is szerenék elindulni a versenyen - bár Enterprise BASIC ismereteim jelenleg egyenlőek a nullával - így a beküldés módjáról még egyeztetek és később írok.

Ennek a programírásnak Spectrumon komoly hagyományai vannak, de lehet, hogy mindez Enterprise-on nem lesz lehetséges, bár a programozók mindig megtalálják a lehetetlen teljesítését. Reméljük lesz megoldás!

Byte-ra fel, Enterprise harcosok!

Pgyuri

Offline Tuby128

  • EP addict
  • *
  • Posts: 1448
  • Country: hu
Re: Egysoros játék felhívás
« Reply #1 on: 2012.December.07. 23:52:39 »
Biztos, hogy EP-nél az egy sorba való besúvasztás teljesen támogatott? Még a GOTO utasítás sem igen használható.

Offline Lacika

  • EP addict
  • *
  • Posts: 3191
  • Country: hu
    • http://www.ep128.hu
Re: Egysoros játék felhívás
« Reply #2 on: 2012.December.08. 09:50:44 »
Ep ebben a versenyben eléggé esélytelen. Ügye a blokkszervező utasításokat külön sorba kell írni.

Offline lgb

  • EP addict
  • *
  • Posts: 3563
  • Country: hu
  • æðsta yfirmaður
    • http://lgb.hu/
Re: Egysoros játék felhívás
« Reply #3 on: 2012.December.08. 10:32:36 »
Na ebben nem vagyok biztos, de mintha pl spectrumon igen hosszu sorokat is lehetne irni, viszont EP-n azert annyira nem ... Szal ha adott egy gep amin erosen limitalva van egy basic sor hossza, akkor nem lesz fair egeszen :)

Offline Lacika

  • EP addict
  • *
  • Posts: 3191
  • Country: hu
    • http://www.ep128.hu
Re: Egysoros játék felhívás
« Reply #4 on: 2012.December.08. 12:07:23 »
Quote from: lgb
Na ebben nem vagyok biztos, de mintha pl spectrumon igen hosszu sorokat is lehetne irni, viszont EP-n azert annyira nem ... Szal ha adott egy gep amin erosen limitalva van egy basic sor hossza, akkor nem lesz fair egeszen :)
254 karakter lehet nálunk is egy sor, azzal nincs gond. Spectrumon talán 255 karakter?

Offline Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14723
  • Country: hu
    • http://enterprise.iko.hu/
Re: Egysoros játék felhívás
« Reply #5 on: 2012.December.08. 12:30:31 »
Quote from: Lacika
Spectrumon talán 255 karakter?
Megnézve egy Gyuri által elkövetett ilyen programot,
az a egy sor az egész képernyőt lefedi. Ha jól gondolom, a Spectrum kulcsszavas rendszer miatt 1 utasítás az 1 bájt, így jóval több fér be, amit EP-n ahol a karakterszám számít.

Offline szipucsu

  • Global Moderator
  • EP addict
  • *
  • Posts: 9898
  • Country: hu
    • Támogató Támogató
    • Webnyelv.hu - Tanuljunk nyelveket!
Re: Egysoros játék felhívás
« Reply #6 on: 2012.December.08. 13:07:11 »
Ahhoz, hogy valami értelmeset is csináljon a program, mindenképpen kell bele IF utasítás, az meg nem nagyon csípi maga mellett egy sorban az egyéb hatékony utasításokat. De ha IF van, akkor GOTO vagy CALL is kéne, szóval reménytelennek tűnik számomra. :D
Hacsak ki nem derül, hogy az EP készítői elrejtettek egy beépített játékot a gépben, ami meghívható basicből pl. valami CALL utasítással. :D
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: Egysoros játék felhívás
« Reply #7 on: 2012.December.08. 15:01:29 »
lehet hogy inkább olyat kéne hogy 1Kb-os basic játék
Vigyázat! Szektás vagyok! :)

Offline lgb

  • EP addict
  • *
  • Posts: 3563
  • Country: hu
  • æðsta yfirmaður
    • http://lgb.hu/
Re: Egysoros játék felhívás
« Reply #8 on: 2012.December.08. 15:37:11 »
Quote from: Lacika
254 karakter lehet nálunk is egy sor, azzal nincs gond. Spectrumon talán 255 karakter?

Arra celoztam h mintha spectrumon akar tobb ezer karakter is lehet egy sor. Viszont ez csak 1 emlekfoszlany, mintha valahol olvastam volna, de nem biztos.

Offline Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14723
  • Country: hu
    • http://enterprise.iko.hu/
Re: Egysoros játék felhívás
« Reply #9 on: 2012.December.08. 16:24:59 »
Quote from: lgb
Arra celoztam h mintha spectrumon akar tobb ezer karakter is lehet egy sor. Viszont ez csak 1 emlekfoszlany, mintha valahol olvastam volna, de nem biztos.
A sor hossz 2 bájton van tárolva, és 1 utasítás 1 bájt.
Nálunk a már tokenizált sor hossza lehet 254 bájt, ebből 1 a hossz, 2 a sorszám, 1 a bekezdési szint, így marad 250 az utasításokra.
Azonban a sor beírásra is van 255-ös korlát, ez jól látszik azzal az érdekességgel, amit a klubnapon találtunk: ha beírunk egy maximális hosszú string megadást, a kilistázott formáját már nem fogadja el a gép, mivel a LET kulcsszóval, ill. sorszám előtti bevezető szóközökkel együtt már túl hosszú.

Offline Pgyuri

  • EP fan
  • *
  • Posts: 156
Re: Egysoros játék felhívás
« Reply #10 on: 2012.December.08. 17:58:33 »
Üdv,

Mint "versenyző", neki is kezdtem az Enterprise BASIC tanulásának, amely tulajdonképpen elég érthető és átlátható rendszer. Ezzel kapcsolatban módosítani kell a kiírást, mert sajnos egy alapvető probléma felmerült a feladat megoldásához, mégpedig a visszacsatolás lehetősége. Neumann elvei alapján a programnak képesnek kell lennie visszalépésre, amely az IS szigorú elvei szerint BASIC programsoron belül csak GOTO-val oldható meg, ez viszont megoldhatatlanná tesz minden játékprogramot, csak primitív, egyszeri futású programok készítésére nyújt lehetőséget.

Módosítás:

A program lényege marad az "egy sorban megvalósítás", de elé elhelyezhető ciklusszervező utasítás, illetve annak lezáró utasítása zárja a programot.

Reagálva a felmerült kérdésekre:

* Spectrumon a bevitel határa egy képernyő - 2 sornyi karakter (704 karakter), amelyben korlátlan számú utasítás lehet, a határ karakterszámban van. Bevitelkor a határ átlépést búgó hanggal jelzi a rendszer. Enterprise-on a bevitel határa Zozo által leírt korlát, ami nem sok, de talán nem is kevés.

* Program írható IF nélkül, még EP-n is, bár valóban kell trükközni, talán jobban is, mint Spectrumon, ahol szabadabb a feltétel elemzés.

* Az 1K-s BASIC program lett volna a következő felhívás (info esetén 1024-nél nem lehet több a programméret)...

Ez a felhívás nem verseny a Spectrummal szemben, hanem egy kis agytorna.

Pgyuri
« Last Edit: 2012.December.08. 18:40:13 by Pgyuri »

Offline Pgyuri

  • EP fan
  • *
  • Posts: 156
Re: Egysoros játék felhívás
« Reply #11 on: 2012.December.08. 18:32:45 »
Üdv,

Ajaj csupa olyasmibe sikerül botlani, amelyre a BASIC leírás készítői nem is gondoltak, csupa "mókás" hibaüzenet jelenik meg minden utasítás körül, amint egy sorba akarnak kerülni egymással.

A módosított kiírással még egy probléma van, mégpedig a szükséges első alkalommal történő inicializálás. Ehhez a kikerült ciklus-szervezés miatt kellett volna egy IF, ami szintén nem fogad el több utasítást a THEN után, az ELSE ága pedig még meglepőbb eredményt ad (egy példa, még nem egysoros: 10 LET X=1  20 IF X=1 THEN PRINT "HELLO" ELSE PRINT "JOCO" nekem fura üzenetet ad futtatáskor).

és itt be kell látni, hogy ha még az inicializálást is engedjük az adott soron kívülre kerülni, akkor már értelmét veszti az egész dolog.

Még töprengek, kínál-e kerülő megoldást a rendszer, de ha nem, akkor ez egy rendkívül rövid életű verseny felhívás volt :)

Pgyuri
« Last Edit: 2012.December.08. 18:40:00 by Pgyuri »

Offline endi

  • EP addict
  • *
  • Posts: 7298
  • Country: hu
  • grafikus, játékfejlesztõ, programozás, scifi, tudományok, vallás
    • Honlapom
Re: Egysoros játék felhívás
« Reply #12 on: 2012.December.08. 18:45:20 »
Szerintem legyen mondjuk 5 sor a határ. Aztán soron belül amennyi belefér!
Vigyázat! Szektás vagyok! :)

Offline Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14723
  • Country: hu
    • http://enterprise.iko.hu/
Re: Egysoros játék felhívás
« Reply #13 on: 2012.December.08. 18:52:00 »
Quote from: Pgyuri
IF, ami szintén nem fogad el több utasítást a THEN után, az ELSE ága pedig még meglepőbb eredményt ad (egy példa, még nem egysoros: 10 LET X=1  20 IF X=1 THEN PRINT "HELLO" ELSE PRINT "JOCO" nekem fura üzenetet ad futtatáskor).
Az üzenet oka, hogy keres egy ELSE nevű változót, amit szintén ki akarna printelni.
THEN után lehet több utasítás (kettősponttal elválasztva), de ez esetben nincs ELSE.
ELSE akkor használható, ha nincs a THEN után semmi:
20 IF X=1 THEN
30 PRINT "HELLO"
40 ELSE
50 PRINT "JOCO"
60 END IF

Itt erősen a strukturált programozásra szoktatták a népet, nem is volt gondom gondom a suliban a Turbo Pascallal, ellentétben a C64-es osztálytársakkal :-)

Offline Pgyuri

  • EP fan
  • *
  • Posts: 156
Re: Egysoros játék felhívás
« Reply #14 on: 2012.December.08. 19:07:18 »
Üdv,

A PRINT "HELLO" ELSE PRINT "JOCO" esetén azért érdekes, hogy elválasztójel nélkül akarja kiírni az ELSE változó értékét....hmmm....alaposan összekever engem, mint kezdőt :)   A struktúrált programozást valóban jól támogatja, viszont most szomorúan konstatálom, hogy épp e miatt zsákutca a kezdeményezés.

Amennyire spectrumos "egysoros" tapasztalataim átgondolom, itt Enterprise-on mindenképpen 5 sorra lenne minimum szükség:

10 inicializálás
20 ciklus szervezés
30 program
40 ciklus zárás
50 záró eredmények

Itt a fő gond az inicializálás korlátozhatatlansága kiírás szintjén, így viszont már semmi értelme a kihívásnak, mert maga a program semmilyen különlegességet nem mutat fel, ami teljesen egyedivé tehetné magát a gépen.

Nem szégyen belátni, vesztettem az Enterprise-al szemben :)  sok : 1  oda

*** KIÍRÁS TÖRÖLVE ***

Pgyuri
« Last Edit: 2012.December.08. 19:13:27 by Pgyuri »