Welcome, Guest. Please login or register.


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

Offline Pgyuri

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

A versenykiírás már törlésre került, az 1Kb-os kategóriának jobb lenne egy új témát indítani, ahová át kellene helyezni a nevezéseket és a hozzászólásokat.

Igazán nem hagyott nyugodni az egysoros dolog. Hosszú napok "szenvedései", rengeteg verzió, ötletelés után elkészült egy program(ka), amely LANDER-1 névre hallgat.

A feladat nagyon egyszerű, le kell szállni a Hold felszínére űrhajónkkal. A műveletet a "q" billentyűvel tudjuk szabályozni. Sikertelen leszállás esetén csak a STOP és a program újra betöltése segít, sikeres művelet esetén megkapjuk jutalmunkat.

A betöltés után elég egy ENTER-t nyomni. Ha el akarjuk kerülni a többszörös betöltést, akkor az 1 POKE 40000,0: POKE 40001,0:TEXT sor beírása segít ... bár ekkor már nem egysoros :)

A program "szépsége", hogy nem száll el és az egy sorba beírásnak is meg lett a maga rejtélye. Kíváncsi vagyok, sikerül-e valakinek áthelyeznie a leszállópályát egy kicsit balra vagy jobbra ... :)


Tapasztalataim:

Az Enterprise BASIC sok olyasmit nem tartalmaz, amely más BASIC nyelvjárásokban szabad volt - például feltétel kiértékelés (y=13) értékkel ellátása vagy a PRINT jobb összevonás (több AT alkalmazása). Az "egysoros" programozás bebizonyította, hogy az értelmező készítői nem készültek "elvont" programírásra, a "*** Statement not allowed after THEN." téves üzenet rendszeres, és bár elfogadta, de nem volt képes értelmezni a GOTO 5+x utasítást sem. Talán jobb lett volna, ha az 1 sor/1 utasítás elvét követték volna a struktúrált programozás lehetőségéhez.

Egyelőre nagyon szűkösek a keretek az egysoros programkészítésre, szerintem versenyen kívül publikáljunk.

Pgyuri

Offline Lacika

  • EP addict
  • *
  • Posts: 3191
  • Country: hu
    • http://www.ep128.hu
Re: Egysoros játék felhívás
« Reply #31 on: 2012.December.10. 10:37:25 »
Talán jobb lett volna, ha az 1 sor/1 utasítás elvét követték volna a struktúrált programozás lehetőségéhez.

A Turbo Pascal-ban is lehet több utasítást egy sorba írni (hasonló korlátozásokkal), persze pontosvesszővel elválasztva. Jó ez így, ennyi tömörítési lehetőség azért praktikus, és nem szakadunk el teljesen a BASIC-től sem.

Offline Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14723
  • Country: hu
    • http://enterprise.iko.hu/
Re: Egysoros játék felhívás
« Reply #32 on: 2012.December.10. 10:40:25 »
Quote from: Pgyuri

1 POKE 40000,0: POKE 40001,0:
Ez a POKE bumm bele a memória közepébe pont az a dolog amit nagyon nem illik EP-n csinálni :oops:
Konkrétan ezzel a 40000-el egy jobban felszerelt gépen az EXDOS adatait lehet telibe találni.
Én is gondoltam rá, hogy milyen jó lenne így szerezni változót, aminek van kezdőértéke, de elvettem, mert nem illik :-)

De ha mindenáron pókolni akarunk, akkor a nullás lapon kéne, azzal max csak a saját programunkat tesszük tönkre :-) de ilyen rövid programnál pl. 10000 az megfelelő.

Quote
de nem volt képes értelmezni a GOTO 5+x utasítást sem.
Igen GOTO után csak fix sorszám lehet. ON kifejezés GOTO sorszámlista van az ilyen paraméteres Gotozásra kitalálva.

Quote
Egyelőre nagyon szűkösek a keretek az egysoros programkészítésre, szerintem versenyen kívül publikáljunk.
Akkor hiába hajtottam a nyereményre? :twisted:

Akkor itt van kő-papír-olló, csak LET, PRINT és GOTO utasításokkal, egy sorban.

Offline Pgyuri

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

Ez a kő/papír/olló nagyon jó !!!   Ezek szerint mégis lehet a feltétel kiértékelés eredményét használni, csak én voltam nagyon kezdő és valószínűleg más hiba miatt vetettem el...pedig akkor még lehet húzni a programon össze :)  Meg is fogom csinálni a Lander-2-t...    A 40000 helyett lehet 10000, majd kicserélem.

Lássuk meg, hogy lesz-e még program egysorosban, lehet publikálni itt, aztán még mindig visszatérhet a nyereményeső :)   Részemről nagyon megkínzott ez a feladat, adott vagy 3 álmatlan éjszakát. Az új elvekkel még lehet, hogy új babérokra török :)


A GOTO 5+x -el az a baj, hogy elfogadja, nem szól érte, de aztán mégse ugrik rendesen.

Pgyuri

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 #34 on: 2012.December.10. 11:41:25 »
PGyuri és Zozo programja is nagyon tetszik!
Zozoét nem tudtam igazán felfogni, hogyan oldja meg egyetlen sorban a billentyűzetfigyelést, hogy addig nem csinál semmit, amíg le nem nyomjuk a gombot. Bár most talán kezdem sejteni. Végtelenítve fut a program, és csak akkor írja ki az eredményt, ha gombot is nyomunk. Ügyes!
Pgyurinak ez a POKE-os megoldása tetszik nagyon. Ha jól értem, a memóriában megváltoztat valami értéket, és a következő futásnál arra hivatkozik, így halad lefele az "űrhajó". Nagyon cseles. :D
Ezzel én is gondban voltam anno, hogy hol van olyan memóriaterület, amit szabadon meg lehet változtatni. Végülis az lenne a legbiztonságosabb, ha rendszerváltozó értékében tárolná az adott értéket, pl. key delay vagy key rate és innen kérdezné le valahogy, már ha lehet egyetlen sorban. A dolog szépséghibája az lenne, hogy felgyorsulna a delay és rate a program leállításakor. :D Vagy még jobb lenne, ha pl. a 127-es kódú karakter egyik sorát változtatná meg megfelelően (ezt a karaktert úgyse használja soha senki), itt is 0-255 közötti értéket lehet megadni, ezt a SPOKE (esetleg set character 127,...) utasítással lehet írni és a SPEEK-kel lekérdezni.
100 SOUND SOURCE 2,STYLE 128,PITCH 25.2,SYNC 1
110 SOUND PITCH 25,SYNC 1
120 ! Videos

Offline Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14723
  • Country: hu
    • http://enterprise.iko.hu/
Re: Egysoros játék felhívás
« Reply #35 on: 2012.December.10. 12:01:44 »
Igen a billentyűfigyelés volt az egyik nagy fejtörés, mivel sem a GET sem az INKEY nem vár gombnyomásra, az INPUT meg nem működik több utasítás közé rakva :-(
A POS konvertálja 1,2,3 értékekre az elfogadott gombokat, azonban amikor "" stringre keresne mindig 1-et adna eredményül, ezért lett az INKEY mögé ragasztva még egy szóköz, így ha nincs gombnyomás, olyan mintha szóköz lenne nyomva, így ez esetben is 0 lesz a POS eredménye.
Ha nem volt gombnyomás, akkor a végén az eredménysora 1-0 karakterekig lesz kiírva, azaz nem ír ki semmit.

Offline Lacika

  • EP addict
  • *
  • Posts: 3191
  • Country: hu
    • http://www.ep128.hu
Re: Egysoros játék felhívás
« Reply #36 on: 2012.December.10. 12:12:55 »
Ez a kő-papír-olló nagyon komoly!
Ahogy elnézem, elég sok időt elvehetett az EXOS 2.4 fejlesztésétől... :-)

Offline Pgyuri

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

Megvizsgálva az új szintaktikai lehetőségeket, elkészült a nehezített Lander-2 :)   Új leszállópálya, gravitációs vihar és leszállás-értékelés.

Pgyuri

Offline Lacika

  • EP addict
  • *
  • Posts: 3191
  • Country: hu
    • http://www.ep128.hu
Re: Egysoros játék felhívás
« Reply #38 on: 2012.December.10. 12:21:59 »
Új leszállópálya, gravitációs vihar és leszállás-értékelés.

Ezt sajnos csak majd otthon tudom megnézni.
Elég érdekesen hangzik, amolyan "IS-BASIC-től elrugaszkodott" megoldást sejtek... (Bár zozoé is az.)

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 #39 on: 2012.December.10. 12:34:03 »
Quote from: Pgyuri
Megvizsgálva az új szintaktikai lehetőségeket, elkészült a nehezített Lander-2 :)   Új leszállópálya, gravitációs vihar és leszállás-értékelés.i
Nálam csak egyszer futtatható a program, második futáskor egyből lent van már a zűrhajó. De annyi baj legyen, így is egyedülálló program az EP történelmében.
A Lander-1 is néha ezt csinálta második futásnál, de nem mindig.
100 SOUND SOURCE 2,STYLE 128,PITCH 25.2,SYNC 1
110 SOUND PITCH 25,SYNC 1
120 ! Videos

Offline Pgyuri

  • EP fan
  • *
  • Posts: 156
Re: Egysoros játék felhívás
« Reply #40 on: 2012.December.10. 12:46:29 »
Üdv,

A játékot csak egyszer lehet futtatni, mint az életben :)  Csak egy esély van leszállni.


Közben rájöttem, miért zavart össze a feltétel kiértékelés. A PRINT  (X=13)   működik, de a PRINT (A$="Q") már nem és persze utóbbival próbálkoztam először és mivel *** Not understood. , így el is vetettem használatát.

Pgyuri

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 #41 on: 2012.December.11. 13:06:38 »
Azon gondolkozom, hogyan lehetne egyetlen sorban megoldani, hogy a botkormánnyal mozgassunk egy emberkét a képernyőn.
Az emberke koordinátáit le kéne tárolni két (esetleg egy) memóriacímen, és az ehhez tartozó értéket növelni ill. csökkenteni a botkormány mozgatásával. Az emberke kiírása viszont nem tudom, hogyan mehetne. Ugye, a JOY függvény értékei itt 1, 2, 4 vagy 8 lehetne, amire reagálnia kéne a programnak, és eggyel megnövelni vagy csökkenteni az adott memóriacímen lévő értéket, majd kiírni az emberkét az adott pozícióba. Ehhez olyan matematikai műveleteket (függvényeket) kéne kitalálni, ami az 1, 2, 4 és 8 értékekkel a következőképpen bánik:

1: ha a bemenet 1, akkor a kimenet 1; ha a bemenet 2, akkor a kimenet -1, minden más értéknél a kimenet 0
2: ha a bemenet 4, akkor a kimenet 1; ha a bemenet 8, akkor a kimenet -1, minden más értéknél a kimenet 0

Tehát, valami ilyesmi lenne benne:
1 LET A=JOY(0):POKE MEM1,FV1(A):POKE MEM2,FV2(A):PRINT #102,AT PEEK(MEM1),PEEK(MEM2):"O":PRINT #102,AT RND(22)+1,RND(38)+1:"*":PRINT #102,AT PEEK(MEM1),PEEK(MEM2):" " :GOTO 1

Persze ez ronda lenne, villogna az emberke (itt csak O betű, mert a PC-s billentyűzeten nem találtam megfelelő karaktert), és ha kivezetnénk a képernyőből, hibaüzenet lenne. A második PRINT utasítás azért lenne, mert véletlenszerűen csillagokat rajzolna a képernyőre, amiket természetesen össze kéne szedni. :D
A dolog szépséghibája, hogy olyan memóriaterületeket kéne találni, amiknek az értéke alapból olyan szám, ami PRINT AT utasítással a képernyőn belülre esik. És ezeket az értékeket valószínűleg már használná valami. Esetleg memóriacím helyett valami más rendszerváltozót kéne használni, esetleg egy-két karaktert találni, aminek egyik sorában az érték pont megfelelő, és azt olvasni-írni SPEEK és SPOKE utasítással. Ez azért lenne jó, mert CLEAR FONT parancs kiadásával visszaállítható az eredeti startpozíció a játék indítása előtt. Hátránya viszont az lenne, hogy csak a megfelelő karakterkészlet esetén működik. :D
Mindenesetre a legjobban az érdekelne, hogy azok a JOY értékből előállító függvények megoldhatók lennének-e valamilyen matematikai műveletekkel.
100 SOUND SOURCE 2,STYLE 128,PITCH 25.2,SYNC 1
110 SOUND PITCH 25,SYNC 1
120 ! Videos

Offline Tuby128

  • EP addict
  • *
  • Posts: 1448
  • Country: hu
Re: Egysoros játék felhívás
« Reply #42 on: 2012.December.11. 13:20:11 »
Egy sorba vajon elférne-e hogy:
100 ALLOCATE 100: CODE B=HEX("A3,02,24,21,fa,66,33,23,12,4,21,21,C9"): CALL USR(b,0)

Offline Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14723
  • Country: hu
    • http://enterprise.iko.hu/
Re: Egysoros játék felhívás
« Reply #43 on: 2012.December.11. 13:31:02 »
Quote from: Tuby128
Egy sorba vajon elférne-e hogy:
100 ALLOCATE 100: CODE B=HEX("A3,02,24,21,fa,66,33,23,12,4,21,21,C9"): CALL USR(b,0)
Elférni elfér, de mi értelme ennek a kódnak? Azon kívül, hogy jól elszáll :-)

(Plusz az egysoros kiírásban benne volt, hogy gépi kód tilos.)

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 #44 on: 2012.December.11. 13:37:03 »
Szerintem alapvetően nem ilyen poke-os képernyőírás meg hasonló gányolásokban kéne gondolkodni, ha már EP. Bár én szeretem az ilyeneket, de egy ilyen versenyben pont nem erre kéne menni. Hanem legyen 5 vagy 10 sor, és legyen szépen, kompatibilisan megírva.
Vigyázat! Szektás vagyok! :)