Tili-toli játék Delphi-ben és Kylix-ben

Tili-toli játék Delphi-ben és Kylix-ben
2002-05-13T22:27:02+02:00
2004-11-09T14:32:17+01:00
2022-11-01T08:25:36+01:00
  • Tudna valaki segíteni abban, hogy
    1.- a gombokon egy képrészlet legyen
    2.- a gombokat irénybillentyűkkel lehessen irányítani.
    Mutasd a teljes hozzászólást!
  • Na mégegyszer essünk neki

    Mikor is nem oldható meg egy n*k-s (n,k >=2) Tili-toli?
    Ezt könnyen el lehet dönteni. Bizonyitás nélkül közlöm itt most már a jó, és álltalános eljárást.

    Elösször is készitsünk a tili-toli mátrix elemeiböl(T) egy n*k elemü A sorozatot, hogy a((i-1)*k+j)=T(i,j). Azaz sorfolytonos olvasással. Ahol az üres elem van oda n*k-t írjunk. Majd készitsük el az n*k elemü B sorozatot, hogy b(i) az a szám legyen, ahány a(i)-nál kisseb elem van az (a(i+1);a(i+1);...;a(n*k)) részsorozatban. b(n*k) nyilván 0 lesz. A b(1)+b(2)+..b(n*k) értéket nevezzük inverziószámának.
    Másrészt nézzük meg hol van az üres mező, legyen ez az i. sor j. oszlopban.
    Ezek után ha n+k+i+j összeg illettve az inverziószám paritása nem egyezik meg. (azaz ha egyik páros, másik páratlan). Akkor az állás nem oldható meg. Ellenkező esetben megoldható, sőt csakis olyan paritásu lehet a megoldáshoz vezető lépések száma, mint az inverziószám, illettve az n+k+i+j összeg paritása. Tehát ha ezek párosak, akkor nem lehet páratlan lépésben megoldani, s viszont.
    Pl az ábrán lévő állás:
    A:(5;1;4;2;6;8;3;7;9)
    B:(4;0;2;0;1;2;0;0;0)
    Az inverzioszám: 4+0+2+0+1+2+0+0+0=7
    n=3, k=3, i=3, j=3 n+k+i+j=12

    Tehát, még mindig nem oldható meg az állás.

    Egyébbként ha egy állás nem oldható meg, akkor cseráljük fel az n*k-1-t tartalmazó mezőt az n*k-2-t tartalmazó mezővel, s az állás mindjárt megoldható.

    Még egy tanács: Megoldásnál probáljátok a közvetlen kiválasztásos rendezés elvét követni.
    Mutasd a teljes hozzászólást!
  • Hasónló témájú, saját magam készítette, szabad terjesztésű program megtalálható a http://www.nexus.hu/batuka weboldalon
    Mutasd a teljes hozzászólást!
  • Elnézést az előző hozzászólásba egy kis hiba csuszott. Az alábbi dolog csak akkor érvényes, ha a mátrix oszlopainak száma páratlan. Tehát 3*3-ra müködik.
    Mutasd a teljes hozzászólást!
  • Nem igényel nagy matematikai tudást annak elözetes eldöntése, hogy egy véletlen állás megoldható e, vagy sem. Bizonyítás nélkül közlöm itt a módszert:
    Legyen T n*k mátrix a tilitoli játék egy fellálása (tehát ez nem csak 3*3 ra müködik).
    Készítsük el egy n*k elemü A sorozatot amelyben a mátrix elemeit soroljuk fel. Azt az elemet amely az üres hely volt töröljük ki igy marad egy n*k-1 sorozatunk.
    Majd készítsünk egy másik n*k-1 (B) elemü sort is ennek i. eleme (i<n*k-1)legyen az a számérték ahány db Az A(i) számnál kissebb értékü elem van az A(i+1),A(i+1),...A(n*k-1) részsorozatban. Az B(n*k-1) elem nulla lesz. Ezután a Szumma i=1 töl n*k-1 ig B(i) érték paritásátol függ a megoldhatóság. Nevezetesen ha az összeg páros akkor megoldható, ha páratlan akkor nem.

    Vegyük Példának a képen látható állást:
    Az A:(5;1;4;2;6;8;3;7)
    A B:(4;0;2;0;1;0;0;0)
    Az összeg páratlan tehát nem oldható meg.


    Mutasd a teljes hozzászólást!
  • Üdv. Mindenkinek!

    tcpip2 felvetett egy problémát, amiben alapvetően igaza van. Az 50%-on (vagy igen, vagy nem) tudnék vitatkozni, de nem látom értelmét. Amit javasolt, csak kis mértékben javítaná a kirakási esélyeket. Az egzakt megoldás egy matematikai algoritmus elkészítése, amely mindkét irányban működik. Annak kellene megkeresnie kvázi-véletlen generátorral a gombok helyeit. A fenti feladat matematikai megoldása felsőszintű matematikai tudást igényel (szerintem). Ha belegondoltok, akkor a játék egy mátrix, amelynek az elemei a gombok. Ennek a mátrixnak kell sorbarendezni az elemeit véges számőú lépésben! Ez a feladat bőségesen kitenne több cikket is, még elképzelhető, hogy megírom. Hangsúlyozom, hogy ebben a kis példában nem az volt a cél, hogy egy kereskedelmi programot publikáljak, hanem, ahogy a magyarázatokból kitűnik, inkább a kezdőket céloztam ameg a cikkel!

    Várom a további reagálásokat!

    Sok sikert a programozáshoz mindenkinek.

    Markó Imre
    Mutasd a teljes hozzászólást!
  • SZARVASHIBA!!
    a gond a keverésnél jelentkezik - mivel cserénél
    2 kocka állapota változik (üres + valamelyik), a véletlenszerü lepakolás esetén csak 50%-ban kirakható! EZ IGY NEM Jó, KÉREM!!!!
    Javaslom a keverést átírni, a legegyszerübb, ha
    a tejesen kirakott táblára véletlenszerü
    "kattintgatásokat" szimulálunk, (pl. 500-at)
    így ugyanis biztosan kirakható.

    Lac
    Mutasd a teljes hozzászólást!
  • Sziasztok!

    Én ugyan C++Builder-ben programozom, ennek ellenére vagy talán éppen ezért hozzászólnék a témához.
    Nagyon hasznosnak gondolom, hogy ilyen szabad formában is lehet a forrásokat látni, használni, stb.
    Nemrég én is írtam egy ilyen játékot hobbiként.
    Ha van kedvetek, töltsétek le, nézzétek meg és használjátok.
    A lapon található összes program szabadon használható, másolható stb.

    www.tar.hu/ecronsoft
    http://web.tvnetwork.hu/ecronsoft

    Friendly
    Mutasd a teljes hozzászólást!
  • Hali!

    Velemenyem szerint a dokumentacio teljeserteku es jol hasznalhato. Maga a feladat egy altalanos programozoi pelda
    amit en is hallottam meg a foiskolan hasonlo formaban a tanaromtol. Nem tudom hogy az adott konyv megjelent -e mar a kerdeses idoben de az 8 eve volt. Igazat adok ha az ember feldolgoz egy forraskodot akkor kifejezetten illik(koteles) megjelolni a szerzot, de nem hinnem, hogy ez esetben szandekosan maradt el maga az adott pelda elterjedtsege miatt. Szerintem a legtobben hasonlo kodot raknank ossze, ha leulnenk megirni. Mindenesetre nagyon orulok, hogy nyilvanosan is fellelhetoek olyan reszletes dokumentaciok amikert nem kell sulyos ezreket, esetleg tizezreket fizetni.
    Remelem, hogy ennek a nyilvanos oktatasnak folytatasa is lesz Tanar Ur :D.
    Mutasd a teljes hozzászólást!
  • Hali mindenkinek!

    Szerintem örüljünk neki, ha valaki ilyen jó leírást ad egy program(ról/hoz).
    Kérdésem volna, hogy ugyan egyszerű jaték volt a kiírásban ami teljesült is (tudom, hogy az OOP-n és az egyszerűségen volt a hangsúly) de én kiváncsi lennék nem csak a keverésre, hanem a programmal kirakatásra is.
    pascalban már én is próbáltam ezt elkészíteni, de a kirakatás nem ment.
    na nem a "trükkös" kirakásra gondolok tehát egyszerűen a helyére cserélem őket, hanem ahogy játszani kell szabályosan tologatással. (persze ilyenkor kicsit lassítva, hogy valami látszon is belőle)
    Mi ennek a matematikai alapja? Gráf? mátrix?

    Üdv mindenkinek

    Mutasd a teljes hozzászólást!
  • Üdv. Mindenkinek!

    Szeretném, ha tisztán látnátok a cikkel kapcsolatban. A fő témája ennek a cikknek egy objektuorientált kis játék bemutatása volt. Azt hiszem erre a tilitoli játék nagyon alkalmas, mivel egyszerűen kivitelezhető és mégis el lehet vele játszogatni. Az volt az elsődleges cél, hogy egy úgymond HOGYAN-t írjak a programhoz, amit a sok magyarázat mutat.

    Baga Edit könyvét természetesen ismerem már csak azért is, mert ahol ezt a tárgyat oktatotm, ott ebből tanulnak a hallgatók. A könyv nagyon jó, de feltételezi az OOP ismeretét. A Tilitoli játék forráskódja nagyon hasonló formában valóban megtalálható a könyvben, de a neten is fellelhető egyszerűbb, illetve bonyolultabb formában. Ha megnézitek a két forráskódot, akkor vannak különbségek közötte (nem a változónevekre gondolok). A könyv forráskódja nagyon tömör, lényegretörő, egyszerűen nem lehet rövidebben és frappánsabban megoldani!

    Nem volt semmiféle lopás a szándékomban, mivel nem is a kód játssza a fő szerepet a cikkben, hanem a hozzá tartozó magyarázatok. Ennek pedig az égadta világon semmi köze a könyvbeli magyarázathoz.

    Még a továbbiakban is tervezem hasonló, egyszerű programok bemutatását gyakorlatilag ilyen módszerekkel. Annak érdekében, hogy nem legyen ilyen probléma, mindig oda fogom írni azokat a forrásokat, amelyeket felhasználok!

    Egyébként a cikkel kapcsolatban megkeresett az Új Alaplap című újság főszerkesztője, mivel nekik is van egy hasonló játékuk, amit Delhi-ben írtak. Persze az sokkal bonyolultabb és nehezebb a játék is!

    Ha valaki úgy érzi, hogy félrevezettem, akkor megkövetem! Csak a tanítás volt a célom.

    Nem szeretnék flame-et indítani a cikkel kapcsolatban. A további hozzászólásokat kérném privátban az akribis@axelero.hu címre!

    Üdvözlettel:

    Markó Imre
    Mutasd a teljes hozzászólást!
  • Tisztelt Prog.hu
    A fenti Tili-toli játék megegyező névvel és feltünően hasonló forráskoddal megtalálható Baga Edit Delphi másképp c. könyvében. Igaz hogy a jelenlegi program több funkcióval rendelkezik mint az eredeti, de szerintem akkor is célszerű lenne az eredeti szerző nevét feltüntetni. Egyébként klassz az oldal, nagyon hasznosnak tartom. Tisztelettel aTa
    Mutasd a teljes hozzászólást!
  • flipcode - game development harmony
    Gamasutra - The Art & Business of Making Games
    http://www.gamedev.net/

    (Delphi es Kylix cumok nem nagyon lesznek, de jatekfejlesztessel kapcsolatban van info dogivel)
    Mutasd a teljes hozzászólást!
  • Jo dolog hogy vannak ilyen forraskodok mellekelt leirassal. Szuksegem lenne egy-ket emilcimre ahol tudnek tovabbi forraskodokat letolteni(Delphi c c++ vb). Valamint szabadon letoltheto 3Dengine forraskodokat es egyeb regebbi komolyabb felhasznaloi progik forraskodjat keresem a neten Minden segitseget szivesen fogadok Elore is koszonom.
    Mutasd a teljes hozzászólást!
Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd