Enterprise Forever

:HUN => Programozás => BASIC => Topic started by: szipucsu on 2022.July.06. 13:47:48

Title: Sort Puz (Get Colour)
Post by: szipucsu on 2022.July.06. 13:47:48
Ez a mobilos játék (https://www.youtube.com/watch?v=zITKuJFPCFc) ihletett meg és gondoltam, EP-re valami hasonlót össze lehetne hozni. Egyelőre itt tartok:
[attach=1]
[attach=2]
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.
Title: Re: Sort Puz (Get Colour)
Post by: ergoGnomik on 2022.July.06. 15:34:52
Ez olyannak tűnik, mint Plus/4-re a Candy Dots (https://plus4world.powweb.com/software/Candy_Dots). Abban nem volt véletlen kutyulgatás, hanem beleprogramozott egy rahedli kombinációt a készítő. Egy nagy rahedlit.
Title: Re: Sort Puz (Get Colour)
Post by: szipucsu on 2022.July.06. 22:36:21
Candy Dots (https://plus4world.powweb.com/software/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.
Title: Re: Sort Puz (Get Colour)
Post by: ergoGnomik 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 Quadrillion (https://plus4world.powweb.com/software/Quadrillion)t.

Ha gondolod, akkor megoszthatok veled néhány gondolatot erről a játéktípusról, ami eszembe jutott.
Title: Re: Sort Puz (Get Colour)
Post by: ergoGnomik 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:
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.
Title: Re: Sort Puz (Get Colour)
Post by: ergoGnomik 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ő: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.
Title: Re: Sort Puz (Get Colour)
Post by: ergoGnomik 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?
Title: Re: Sort Puz (Get Colour)
Post by: ergoGnomik 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. ;)
Title: Re: Sort Puz (Get Colour)
Post by: geco 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.
Title: Re: Sort Puz (Get Colour)
Post by: szipucsu 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.
Title: Re: Sort Puz (Get Colour)
Post by: geco 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.
Title: Re: Sort Puz (Get Colour)
Post by: geco 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.
Title: Re: Sort Puz (Get Colour)
Post by: ergoGnomik on 2022.July.31. 13:32:36
Ezt az én agyszüleményem alapján írtad vagy volt annál jobb saját ötleted?
Title: Re: Sort Puz (Get Colour)
Post by: geco 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 :)
Title: Re: Sort Puz (Get Colour)
Post by: geco 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
Title: Re: Sort Puz (Get Colour)
Post by: szipucsu on 2022.July.31. 13:51:33
Ezzel a verzióval már játszani is lehet
Ez az, jó lesz ez! Jó kis csapatmunkának ígérkezik.
Az első pályára elég lehet 3-4 bödön is, és 4-ből 2 lehet üres. De ahogy gondolod.
Meg majd a számok helyett érdemesebb lehet a kisbetűket vagy egyéb jeleket felhasználni, és majd azokból csinálni grafikus karaktereket a 256 színű gracha képernyőre (ahol minden karaktersor egy szín lenne, szép színátmenetes karaktereket lehetne majd tervezni). De lehet, teljesen más megoldásra gondoltál.
Title: Re: Sort Puz (Get Colour)
Post by: geco on 2022.July.31. 14:22:28
Itt a javított verzió, az utolsó két bödön üres.

Ez az, jó lesz ez! Jó kis csapatmunkának ígérkezik.
Az első pályára elég lehet 3-4 bödön is, és 4-ből 2 lehet üres. De ahogy gondolod.
Meg majd a számok helyett érdemesebb lehet a kisbetűket vagy egyéb jeleket felhasználni, és majd azokból csinálni grafikus karaktereket a 256 színű gracha képernyőre (ahol minden karaktersor egy szín lenne, szép színátmenetes karaktereket lehetne majd tervezni). De lehet, teljesen más megoldásra gondoltál.
Hasonló a tervem nekem is, annyi, hogy 3 telivel és két üressel kezdődne. :)
Grafikus végleges megoldásra gondoltam én is, csak előbb működjön a játék karakteres képen, én normál 16 színű grafikus módra gondoltam, max egy 5 színű háttérképpel ( ez lehet kimarad ), majd pár hangeffekt és a játékhoz illő zene lenne még jó.
A grafikára meg kémcső kinézetre gondoltam, és a folyadékos kinézetre, nem a pöttyösre.
Egyelőre meg akarom csinálni karakteres módban a szinteket is, és a szint resetet, ha ez megvan, akkor kezdem el a grafikus verziót.
Title: Re: Sort Puz (Get Colour)
Post by: szipucsu on 2022.July.31. 16:21:05
Már ezzel a legutóbbi verzióval is egész jól el lehet játszani!
Én a basic programmal több nap alatt is kb. ennek a negyedéig, ha jutottam.
Title: Re: Sort Puz (Get Colour)
Post by: geco on 2022.July.31. 17:50:11
Már ezzel a legutóbbi verzióval is egész jól el lehet játszani!
Én a basic programmal több nap alatt is kb. ennek a negyedéig, ha jutottam.
Hát ha Ergognomik nem veti fel az ötletes generáló eljárását, akkor ennyim se lenne, leginkább semmi :D :D
Amúgy basicben se lenne bonyolult szerintem, X*4 elemű tömb, ahol X a csövek száma, és a tömbön végrehajtani ugyanazt, amit csináltam, valójában itt is X*4 elemű tömb van, vagyis X*5, mert a 0. elem tárolja az aktív elemek számát, és 2*X*5 lesz, mert a pálya újrakezdéshez csinálok majd egy backupot.
Title: Re: Sort Puz (Get Colour)
Post by: szipucsu on 2022.July.31. 18:59:44
Nekem az irányítást megcsinálni se volt türelmem, végignézni, hogy space-re hány mütymütyöt lehetne kivenni a bugyorból, és fordított sorrendben belerittyenteni a másik bugyorba. A vermekkel már csak úgy vagyok, hogy aki másnak vermet ás... A pályagenerálásig el se jutottam, RND-vel elszórja a mütymütyöket, oszt csókolom.

a 0. elem tárolja az aktív elemek számát, és 2*X*5 lesz, mert a pálya újrakezdéshez csinálok majd egy backupot.
Hogy érted, hogy aktív elemek? Mik azok? Amikor 1-nél több van egymás mellett valamiből?
A backup jó ötlet! Ha nem sikerül teljesíteni, vissza lehet lépni. Talán olyat is lehetne, hogy egy lépést visszavonni, vagy akár akárhány lépést, és játék közben mindig tárolná az előző állapotot. Ehhez vagy sok*X*5 tömb kellene, vagy valami más rafinéria, de ez utóbbiba belegondolva bonyolultnak tűnik. (Pl. tömörítve tárolná az eltéréseket két állapot között.)
Title: Re: Sort Puz (Get Colour)
Post by: geco on 2022.July.31. 20:03:58
Itt a szinteket tartalmazó verzió, nekem egyszer előjött 2 bug, két egymást követő a pályán level 7 környékén, de nem tudtam reprodukálni, pedig a 16. pályáig elvittem, hátha valakinél előjön.
1. hiába volt tele 5 cső azonos elemekkel, nem volt vége, megmozgattam az összes csövet, és jó lett
2. egy tele csőbe sikerült pakolnom, így egy elem elveszett

Hogy érted, hogy aktív elemek? Mik azok? Amikor 1-nél több van egymás mellett valamiből?
A backup jó ötlet! Ha nem sikerül teljesíteni, vissza lehet lépni. Talán olyat is lehetne, hogy egy lépést visszavonni, vagy akár akárhány lépést, és játék közben mindig tárolná az előző állapotot. Ehhez vagy sok*X*5 tömb kellene, vagy valami más rafinéria, de ez utóbbiba belegondolva bonyolultnak tűnik. (Pl. tömörítve tárolná az eltéréseket két állapot között.)
Az aktív elemek a csőben lévő elemek száma, ha tele van, akkor négy lesz ott eltárolva
Gondoltam a visszalépés lehetőségére is, de akárhány tuti nem lesz, nagyon max 10, nem kell sok*X*5 tömb, a lépéseket kell eltárolni, aztán visszafelé lejátszani.
Title: Re: Sort Puz (Get Colour)
Post by: szipucsu on 2022.July.31. 20:59:54
1. hiába volt tele 5 cső azonos elemekkel, nem volt vége, megmozgattam az összes csövet, és jó lett
A pálya generálásakor ad néha azonos elemekkel teli csövet, és akkor nem ellenőrzi le, hogy azonos elemekkel van-e tele. Nekem is előjött:
[attach=1]

Quote
2. egy tele csőbe sikerült pakolnom, így egy elem elveszett
Nekem is eltűnt egy elemem, de nem tudom, mikor és hova. Amikor visszavontam a lépési szándékomat, akkor történhetett valami, de nem biztos.
[attach=2]
Title: Re: Sort Puz (Get Colour)
Post by: ergoGnomik on 2022.August.01. 06:15:54
A 8-as, és 11-es pont tuti nincs benne, ha a 8-ast követjük ,akkor nem kerül át semmi...
Ez érdekes! Az, hogy csak úgy lehessen kivenni a bödönből elemet, hogy az alatta levő is ugyan olyan legyen azért került be szabálynak, hogy amikor a generált pályát játssza valaki, akkor garantáltan létezzen az a sorrend, amivel vissza lehet állítani a kiinduló állapotot. De ha ez nem kell, akkor talán lehetséges, hogy bármilyen teljesen véletlen keverést is ki lehet rakni. Vagy valamit félreértettem?
Title: Re: Sort Puz (Get Colour)
Post by: geco on 2022.August.01. 08:24:07
Ez érdekes! Az, hogy csak úgy lehessen kivenni a bödönből elemet, hogy az alatta levő is ugyan olyan legyen azért került be szabálynak, hogy amikor a generált pályát játssza valaki, akkor garantáltan létezzen az a sorrend, amivel vissza lehet állítani a kiinduló állapotot. De ha ez nem kell, akkor talán lehetséges, hogy bármilyen teljesen véletlen keverést is ki lehet rakni. Vagy valamit félreértettem?
Bocs, én értettem félre a 8.. 9. pontot, a "nem" nem tűnt fel, de ha csak akkor mozoghat az elem, ha az alatta lévő ugyanolyan, ez eléggé bekorlátozza a lehetőségeket, pedig igazad van, mert ez garantálná a kirakhatóságot. Egyelőre nem futottam bele kirakhatatlan pályába, igaz csak 6 tele veremig játszottam vele, és az érdekesség gondolom ezután jön.