Welcome, Guest. Please login or register.


Author Topic: Sort Puz (Get Colour) (Read 6339 times)

Offline szipucsu

  • Global Moderator
  • EP addict
  • *
  • Posts: 9898
  • Country: hu
    • Támogató Támogató
    • Webnyelv.hu - Tanuljunk nyelveket!
Sort Puz (Get Colour)
« on: 2022.July.06. 13:47:48 »
Ez a mobilos játék ihletett meg és gondoltam, EP-re valami hasonlót össze lehetne hozni. Egyelőre itt tartok:
[ Guests cannot view attachments ]
[ Guests cannot view attachments ]
Majd 255 színű gracha módra lenne jó megcsinálni a játékteret és tervezni hozzá színátmenetes pályaelemeket.
Most átdefiniálatlan karakterekből rajzolja ki a pályát. Előtte feltölti a bödönöket egyformára, más-más karakterekkel (SETLEVEL eljárás), majd összekeveri a bödönök tartalmát (MIX), a PRLEVEL pedig kirajzolja. Ahányas a nehézségi szint (DIFF változó), annyi+2 bödön van, az utolsó 2 bödön üres.
A játék irányításának megírása a macerásabb. Valószínű az összes lehetőségnek külön meg kell határozni, mi történjen, ezt csak nyomokban kezdtem el. Két forduló (TURN) váltja egymást, az egyikben a tűzgombbal kivesszük a folyadékot, a másikban beöntjük, ha be tudjuk. Ennek megírása még eléggé képlékeny.
Meg még pl. azt is meg kell csinálni, hogy ha folyamatosan nyomjuk pl. balra a botkormányt, ne menjen folyamatosan, csak egyet lépjen.
Majd tervezem folytatni, de ha van ötlet, az jöhet.
100 SOUND SOURCE 2,STYLE 128,PITCH 25.2,SYNC 1
110 SOUND PITCH 25,SYNC 1
120 ! Videos

Offline ergoGnomik

  • EP addict
  • *
  • Posts: 1291
  • Country: hu
  • Stray cat from Commodore alley
Re: Sort Puz (Get Colour)
« Reply #1 on: 2022.July.06. 15:34:52 »
Ez olyannak tűnik, mint Plus/4-re a Candy Dots. Abban nem volt véletlen kutyulgatás, hanem beleprogramozott egy rahedli kombinációt a készítő. Egy nagy rahedlit.

Offline szipucsu

  • Global Moderator
  • EP addict
  • *
  • Posts: 9898
  • Country: hu
    • Támogató Támogató
    • Webnyelv.hu - Tanuljunk nyelveket!
Re: Sort Puz (Get Colour)
« Reply #2 on: 2022.July.06. 22:36:21 »
Candy Dots.
Igen, ehhez hasonlóra gondoltam. A kép alapján úgy tűnik, mindegyik bödönnek van száma, és számgombokkal lehet rájuk hivatkozni, ez talán jobb is lenne, mint a botkormányos irányítás. Bár ezen nem múlik semmi.
Egyelőre még annak is örülnék, ha működőképesre sikerülne megcsinálni az irányítást (folyadék locsolgatását egyik bödönből a másikba). Aztán utána lehetne gondolkodni a kombinációkon. Lehet, hogy random kutyulással nem is teljesíthető  mindegyik pálya. Majd a szerzőt meg lehetne kérdezni, hogyan alakította ki a sok kombinációt. Ha jól látom, magyar ember írta, és ő írta a Crilliont is. A játék viszont gépi kódúnak tűnik.
100 SOUND SOURCE 2,STYLE 128,PITCH 25.2,SYNC 1
110 SOUND PITCH 25,SYNC 1
120 ! Videos

Offline ergoGnomik

  • EP addict
  • *
  • Posts: 1291
  • Country: hu
  • Stray cat from Commodore alley
Re: Sort Puz (Get Colour)
« Reply #3 on: 2022.July.07. 10:59:30 »
Igen, magyar a szerző. Az oldalon megtalálod az e-mail elérhetőségét. Szerintem ha kérdezel tőle segíteni fog a működés megértésében. Igen, gépikódú a program, de az alapvető logikát a megvalósításra használt nyelv nem befolyásolja.

Egyébként nem a Crilliont írta, hanem annak alapján a 4 kB-os Quadrilliont.

Ha gondolod, akkor megoszthatok veled néhány gondolatot erről a játéktípusról, ami eszembe jutott.
« Last Edit: 2022.July.08. 13:21:38 by ergoGnomik »

Offline ergoGnomik

  • EP addict
  • *
  • Posts: 1291
  • Country: hu
  • Stray cat from Commodore alley
Re: Sort Puz (Get Colour)
« Reply #4 on: 2022.July.30. 10:55:20 »
szipucsu privátban kérte, hogy osszam meg azokat a gondolatokat, amiket emlegettem. Akkor neki is fogok. Elöljáróban annyit még, hogy az esetleges példákat a Candy Dots képernyőfotójára fogom alapozni.

Szóval amikor ránézünk egy ilyen játékra, akkor mit is látunk? Aki poharat, fiolát, kémcsövet, bödönt vagy bármi hasonlót mond, az nem kap piros pontot. :) Amit látunk, azok vermek. A verem olyan adatszerkezet, amiből az abba sorrendben berakott elemeket fordított sorrendben lehet kivenni. Ezt angolul Last-In-First-Out adatszerkezetnek nevezik és nyilvánvalóan LIFO-nak rövidítik.

Amikor vermet programozunk, akkor számos funkciót adhatunk a konstrukcióhoz, de egynéhány biztosan minden megvalósításban létezik és ezek nagyjából le is fedik az esetleges hasonló játék írásához a szükségleteinket. Van verembe elem betétele, veremből elem kivétele, verem szabad kapacitásának lekérdezése, legfelső elem vizsgálata. Persze ezeken kívül számos ötletet meg lehet még valósítani, de kezdésnek ennyivel is megelégszünk. ;) Illetve kell még egy speciális funkció, ami ellenőrzi minden elem egyforma-e a veremben.

Így aztán a játék működése a következőképpen képzelhető el:
  • Kiválasztunk két vermet.
  • Megvizsgáljuk a legfelső elemeiket.
  • Ha különbözőek, akkor nincs további feladat. Folytatjuk a 7. ponttól.
  • Ha egyformák, akkor megvizsgáljuk, hogy a cél veremben van-e még hely?
  • Ha nincs, akkor nincs további feladat. Folytatjuk a 7. ponttól.
  • Ha van, akkor a forrás veremből kivesszük a felső elemet és betesszük a cél verembe.
  • Ellenőrizzük, hogy minden veremben egyformák-e a színek és minden verem, amiben van valami tele van-e?
  • Ha legalább egy feltétel nem teljesül, akkor folytatjuk az 1. ponttól.
  • Ha mindkét feltétel teljesül, akkor sikeresen befejeztük a játékot.
Miután nem vágyom balagesz babérjaira – noha mindig élvezet olvasni a novelláit :) – itt most félbe is szakítom az irományomat és folytatom egy következő hozzászólásban.

Offline ergoGnomik

  • EP addict
  • *
  • Posts: 1291
  • Country: hu
  • Stray cat from Commodore alley
Re: Sort Puz (Get Colour)
« Reply #5 on: 2022.July.30. 11:03:46 »
Hogyan lehetne olyan pályákat automatizáltan létrehozni, amiket garantáltan meg lehet oldani? Igazából nem tudom, de jó módszernek látszik a következő:
  • Töltsük fel a baloldali öt vermet egyenként azonos színekkel.
  • Jegyezzük meg a játéktér állapotát.
  • Válasszunk ki véletlenszerűen két vermet.
  • Ha a cél veremben nincs hely, akkor folytassuk a 3. ponttól.
  • Vegyünk ki a forrás veremből egy elemet.
  • Ellenőrizzük, hogy a forrás veremben maradt-e elem.
  • Ha nem, folytassuk a 10. ponttól.
  • Ellenőrizzük, hogy a forrás verem megmaradt legfelső eleme egyforma-e a kivett elemmel.
  • Ha nem, tegyük vissza az elemet és folytassuk a 3. ponttól.
  • Tegyük a kivett elemet a cél verembe.
  • Ellenőrizzük, hogy a játéktér állapota megegyezik-e valamely korábban megjegyzett állapottal.
  • Ha megegyezik, vonjuk vissza a változtatást és folytassuk a 3. ponttól.
  • Ellenőrizzük, hogy minden verem, amiben van valami tele van-e?
  • Ha nem, folytassuk a 2. ponttól.
  • Ha igen, akkor sikeresen előállítottunk egy feladatot.
Gyakorlatilag – ha nem toltam el nagyon – ez a játék visszafelé játszásának felel meg, így biztosítva a pálya megoldhatóságát.

Amit még érdemes belekombinálni a generálásba, hogy csak megadott számú lépésnél többől, iletve kevesebből álló feladványt hozzunk létre. Ha túl kevés lépésből áll a megoldás, akkor nem lesz érdekes a feladat. Ha túl sok lépésből áll a megoldás, akkor esetleg megunja a játékos, vagy az adott időkeretben – ha ilyen típusú a játék – esetleg nem lehet majd megoldani. A lépések minimális és maximális számára nincs jó ötletem, azt kísérletezgetéssel érdemes megállapítani.

Viszont a generálást érdemes lenne nem EP-n végezni, hanem PC-n valamilyen mostanság divatos RAD eszközben/nyelven programozni a generáló segédeszközt, mint például a Python. Azt hallottam, hogy az egy könnyen elsajátítható, fejlesztés szempontjából hatékony nyelv és nagyon sok feladathoz vannak átfogó függvénykönyvtárai.

Offline ergoGnomik

  • EP addict
  • *
  • Posts: 1291
  • Country: hu
  • Stray cat from Commodore alley
Re: Sort Puz (Get Colour)
« Reply #6 on: 2022.July.30. 11:08:50 »
Vajon hányféle alapjaiban különböző pálya létezik? Ha meggondoljuk, nagyon sok homológ kombináció van. Attól, hogy egy feladványban felcseréljük a színeket, vagy megváltoztatjuk a bödönök sorrendjét effektíve a megoldás lépéseinek sorrendje nem fog megváltozni.

Nézzük meg egyszerű kombinatorikai módszerekkel mit tudunk kideríteni! Vizsgáljuk meg az ötszínű példánkat! Van öt színünk, minden színből négy elem és ezek öt bödönben vannak összekeverve.

Ha a bödönöket összefűzzük egy láncba, akkor egy húsz elemű sort kapunk. Ezt a húsz színes elemmel 20! kombinációban tölthetjük fel.

Vagyis hogy ennél azért sokkal kevesebbel, mert az azonos színű elemek között nincs különbség. Ezért a 20!-t el kell osztanunk 4!5-nel.

De így még nem számoltunk azzal, hogy a bödönök sorrendjének megváltoztatása érdemben nem módosítja a feladványt. Ezért az előbbi eredményt még el kell osztani 5!-sal.

Még azt is figyelembe kell vennünk, hogy a színek cserélgetése sem okoz igazából a feladvány megoldásában számottevő változást. Ezért megint el kell osztanunk az eredményt 5!-sal.

20!/4!55!2 az 21218071,875! :O Hűha! Ez nagyon nagy szám. De úgy tűnik van egy kis műszaki hiba. Nem egész számú kombinációnak nem nagyon szabadna léteznie. A számolgatás valószínűleg ott mehetett félre, hogy adott esetben színek cseréje egyenértékű lehet oszlopok cseréjével. Legyen házi feladat egy ilyen feladvány megalkotása! ;) Az ilyen eseteket a képlet kétszer is figyelembe veszi, ezért a kiszámolt érték alacsonyabb, mint a kombinációk tényleges száma.

Persze ezek között nagyon-nagyon sok olyan lehet, amit vagy nem lehet megoldani, illetve túlságosan kevés vagy túlságosan sok lépés kell a megoldásához. De azért valahol érdekes egy ilyen kis számolgatás. Nemde?

Offline ergoGnomik

  • EP addict
  • *
  • Posts: 1291
  • Country: hu
  • Stray cat from Commodore alley
Re: Sort Puz (Get Colour)
« Reply #7 on: 2022.July.30. 11:23:14 »
Még egy utolsó gondolat. Ahogyan az előbb megvizsgáltuk a ténylegesen különböző feladatokat, az ott tanultakat fordítva is felhasználhatjuk. Ha van egy adott számú beépített feladat, akkor a bödönök és színek cserélgetésével annak illúzióját kelthetjük, hogy igazából a tároltaknál sokkal több feladvány van a játékban. ;)

Offline geco

  • EP addict
  • *
  • Posts: 7085
  • Country: hu
    • Támogató Támogató
Re: Sort Puz (Get Colour)
« Reply #8 on: 2022.July.30. 12:34:51 »
Ez a megoldasbol visszafele toltogetosdi teljesen jo otlet, es a nehezsigi szintet a sikere toltogetesek szamaval lehetne szabalyozni, mondjuk 15 toltes lenne az elso szint, es utana minden masodik szinten none eggyel. Szerintem siman meg lehetne oldani gepi kodban eleg gyorsan, basicben meg lassabban, de ott is veletlen szamokkal, es csak a sikeres toltes csokkentene a szintnek megfelelo toltesek szamat.

Offline szipucsu

  • Global Moderator
  • EP addict
  • *
  • Posts: 9898
  • Country: hu
    • Támogató Támogató
    • Webnyelv.hu - Tanuljunk nyelveket!
Re: Sort Puz (Get Colour)
« Reply #9 on: 2022.July.30. 12:56:01 »
Ha esetleg lenne kedvetek megcsinálni a programot, azt nem bánnám. Nekem lehet, hogy ez nagy falat. Amit feltettem, azzal addig jutottam, hogy tűzgombra elkezdi megnézni az aktuális bödönt (vermet), mi van benne, és talán azon is filózik, bele rakja-e vagy ne a másik bödönbe.
Botkormánnyal lehet jobbra-balra mozogni, tűzre bödönözni.
Ha sokadik szinten a bödönök nem férnének egymás mellé, bonyolítani kell és egymás alá rakni, ami a megjelenítésben és az irányításban is okozhat némi megoldandó feladatokat.
Ha a lényegi része meglenne, a grafikát, színezést, hangokat, körítést megcsinálnám.
Ha lassú, az nem baj, van Zzzip, de akkor figyelni kell, hogy fordítható legyen vele.

mondjuk 15 toltes lenne az elso szint, es utana minden masodik szinten none eggyel
Vagy még ritkábban nőne, esetleg gyakrabban, és lehetne nehézségi fokozatot a menüben beállítani.
De az első szinten (ahol 4 bödön van, ebből 2 üres) a sima, teljesen véletlenszerű feltöltés is játszhatna, mert szerintem bármilyen állásból végigvihető onnan.

Még gondolkozom a programon, de ha bárki meg szeretné csinálni, nincs ellenemre.
100 SOUND SOURCE 2,STYLE 128,PITCH 25.2,SYNC 1
110 SOUND PITCH 25,SYNC 1
120 ! Videos

Offline geco

  • EP addict
  • *
  • Posts: 7085
  • Country: hu
    • Támogató Támogató
Re: Sort Puz (Get Colour)
« Reply #10 on: 2022.July.30. 20:04:17 »
Itten van, a program elég nagy, de csak azért, mert mind a 14 lehetséges "verem" 00h-ra van állítva, ebből kiderül, hogy max 12 fiola lehet feltöltve, a programban 6 van beállítva, és 64 mozgatás, ez utóbbinak jelenlegi maximuma 256, de kis módosítással 65536-ra is állítható. Egy dolgot nem tartalmaz még a pályageneráló, egy mozgatás inverze ne történhessen meg, ami nem tudom mennyire fontos, ez csak annyit jelentene, ha több visszamozgatás is történik, akkor az adott nehézségi szinten könnyebb pályát generál.

Offline geco

  • EP addict
  • *
  • Posts: 7085
  • Country: hu
    • Támogató Támogató
Re: Sort Puz (Get Colour)
« Reply #11 on: 2022.July.31. 13:21:53 »
Ezzel a verzióval már játszani is lehet, igaz még csak 1 játékot, aztán jöhet a reset.
Irányítás int joy jobbra/balra, space, ESC a kiválasztás törlése, de ez működik a már kiválasztott oszlopra még egy space-t nyomva is, az ESC-et vagy a pálya újrakezdésére, vagy az egész játék újrakezdésére fogom majd áttenni.

Offline ergoGnomik

  • EP addict
  • *
  • Posts: 1291
  • Country: hu
  • Stray cat from Commodore alley
Re: Sort Puz (Get Colour)
« Reply #12 on: 2022.July.31. 13:32:36 »
Ezt az én agyszüleményem alapján írtad vagy volt annál jobb saját ötleted?

Offline geco

  • EP addict
  • *
  • Posts: 7085
  • Country: hu
    • Támogató Támogató
Re: Sort Puz (Get Colour)
« Reply #13 on: 2022.July.31. 13:38:11 »
Ezt az én agyszüleményem alapján írtad vagy volt annál jobb saját ötleted?
Az adta az ihletet, nem követtem a pontos leírást, a visszafelé léptetést valósítottam meg, az is lehet, hogy pont ugyanaz lett a vége, mint amit leírtál :)

Offline geco

  • EP addict
  • *
  • Posts: 7085
  • Country: hu
    • Támogató Támogató
Re: Sort Puz (Get Colour)
« Reply #14 on: 2022.July.31. 13:43:47 »
A 8-as, és 11-es pont tuti nincs benne, ha a 8-ast követjük ,akkor nem kerül át semmi, a 11-eshez hasonló megvalósításra vár, hogy ne legyen egy korábbi mozgatás inverze, és ami még különbözik, hogy nem 2 üres csővel kezdünk, hanem ahogy a mozgatás végetért x lépés után, de ezen még lehet finomítani, hogy a két legüresebb cső elemeit szétszórjuk a többi között.
Ja, azt nem vettem észre a sortpuz-ban, hogy a két uccsó cső mindig üres :D