Amőba játék weben
2008-01-08T10:21:30+01:00
2009-12-19T20:35:04+01:00
2022-07-25T08:26:20+02:00
  • Éljen a .net
    Mutasd a teljes hozzászólást!
  • a 9 szál futtatása is feleslegesnek tűnik

    Ez eddig nekem fel se tűnt. De szerintem itt a .net szálkezelése trükközik valamit magától, mert én csak két olyan szálról tudok, amit én indítok. Az egyik az UI, a másik meg amin gondolkodik. A gondolkodós az csak akkor van bent, amikor éppen gondolkodik.
    Mutasd a teljes hozzászólást!
  • Jessszus. Azért nem semmi a 900Mbyte mem foglalás... egy egyszerű amőba játéktól
    Igen van olyan taktikám, amivel hamar jó helyzetbe kerülök, bár nem egyértelmű nyerés, de elég nagy előnyt ad. Idáig azt minden program benyelte, még sosem találkoztam olyannal, ami kivédte volna. Viszont sajnos a tied a legértelmesebb lépést is elkerüli, mert nem látja a veszélyt .
    Ámbátor ha nem sikerül megvernem a szokásos taktikámmal, akkor már nagyon nehézlesz, és ilyen esetben már legtöbbször a gép nyer. Az emberek állt formáció alapján játszanak, mint a sakkozók is.

    Nah nem akarok kötekedni, de akkor már ha itt tartunk a 9 szál futtatása is feleslegesnek tűnik .

    Üdv CollerbladE
    Mutasd a teljes hozzászólást!
  • DE kicsit bugzik sztem

    3 percet biztosan nem kellett várnod, max 30 másodpercet gondolkodhat néha. A képen is pont ennyi látható. Ezt persze egy konstans átállításával tudom változtatni, a végleges verzióban pedig lesz majd erre beállítás a programban. A nagy memória-foglalás pedig nem bug. Ha van bőven ram a gépben, miért ne használjam ki? Induláskor megnézem mennyi a szabad fizikai memória, és ha van elég, akkor fölveszek egy max 35000000 méretű hashtáblát (kb. 800MB) a már kiértékelt állások tárolására.
    szóval sztem 1xű megverni az amőbádat, nagyjából 50%ban én nyerek

    Igen, hát aki jól tud amőbázni, az meg tudja azért verni (főként a lentebb említett probléma miatt). De azért a legtöbb ember nem ilyen arányban szokta tudni legyőzni.
    Mutasd a teljes hozzászólást!
  • Hi szóval sztem 1xű megverni az amőbádat, nagyjából 50%ban én nyerek. Főleg ha kezdek. DE kicsit bugzik sztem... 1részt iszonyat lassan tolja, volt hogy 3 percet is várnom kellett, másrészt pedig lefoglalt nemkevés memet.. (kép)

    De azért hajrá..

    Üdv CollerbladE
    Mutasd a teljes hozzászólást!
  • Igen, értem mire gondoltál, én meg csak arra gondoltam, hogy akkor nem fogok amőbát írni benne.
    Mutasd a teljes hozzászólást!
  • Amit írtam az egy nyers számításigényes kódra vonatkozik, ettől elekintve szerintem webre ideális a PHP, bár ez egy már egy egészen más topic témája lehetne.
    Mutasd a teljes hozzászólást!
  • Köszi. Magát a jelenséget tulajdonképpen ismertem (ugyanis a programom nagyon gyakran kitalál ilyeneket), csak erről az elnevezésről nem ugrott be.
    Mutasd a teljes hozzászólást!
  • VCT-t akartam írni, bár VCF is létezik.
    VCF = Victory by Continous Fours
    VCT = Victory by Continous Threes

    magyarul: győzelem folytatólagos hármasokkal

    Ha valakinek VCT-je van az azt jelenti, hogy a pozíciójából folytatólagos hármasok használatával eljuthat a győzelemig.
    A VCT biztos nyerés. Maximum késleltetni lehet.

    Ez pl egy VCT: (gyakorlatilag már megnyerte az "O")

    ........ ........ ...XOX.. ...OO.X. ........ ....O.X. ..XOOO.. ...XOX.. .OXOO.X. ....X...
    Mutasd a teljes hozzászólást!
  • volt, ami pl. C#-ban 200x(!) gyorsabban futott le

    Uhh, hát ez durva! Pedig már épp azon kezdtem gondolkodni, hogy megtanulom a php alapjait egy webes amőba program írásával, de így akkor ez nem biztos hogy olyan jó ötlet.
    A te programod igencsak erősre sikeredett, 10-ből egyszer sem tudtam legyőzni.

    Örülök. :)
    Mutasd a teljes hozzászólást!
  • Örülök, hogy tetszik a megvalósítás. Annak is örülök, hogy megvert. :)

    Nincs benne több mélységű keresés, a program csak az aktuális helyzetet értékeli ki. Így kb. 0.04 másodperc alatt lép. A php nagyon-nagyon nem ideális erre a célra. Próbaképpen csináltam egy-két számítás intenzív teszt kódot, és volt, ami pl. C#-ban 200x(!) gyorsabban futott le. Ez inkább csak érdekesség ebben a formában, és mellesleg néhány ember jól elszórakozik vele.

    Ha egyszer lesz időm, megírom majd asztali alkalmazásnak, és akkor mélyebben beleásom magamat az algoritmus optimalizálásába. A szabadidő terén nem vagyok túl optimista, ugyanis a következő 1 évben biztosan nem lesz rá időm. :)

    Van elég fejleszteni valóm, és prioritásban az van elöl, ami pénzt hoz.

    A te programod igencsak erősre sikeredett, 10-ből egyszer sem tudtam legyőzni.
    Mutasd a teljes hozzászólást!
  • Minmax, Alfabéta cutoffal és egy jó VCF keresővel időkorlátozás esetén is szinte legyőzhetetlen a legtöbb ember számára.

    Mi az a VCF kereső? (kerestem google-ben, de folyton csak a vcf fájlformátumot dobja, és Wikipedia-n se találtam semmi idevágót a VCF kifejezésre)
    Mutasd a teljes hozzászólást!
  • Tetszik a programod, szép a grafikája.
    Bevallom, engem megvert. De én nagyon figyelmetlen amőba játékos vagyok, ugyanis leginkább csak a saját programomat szoktam tesztelni, és ilyenkor ha valami nagy badarságot lépek, akkor rögtön visszavonom.
    Aztán teszteltem a programom ellen, ami már nagyon gyorsan legyőzte. Aztán arra gondoltam, hogy ez így elég unfair, hogy az én programom elgondolkodik több másodpercet, úgyhogy kipróbáltam azt, hogy a rekurziót fixen 2-es mélységre állítottam. Ilyenkor csak a közvetlen nyerő lépéseket és az ellenfél közvetlen válaszlépéseit látja, amit könnyen meg lehetne írni rekurzió nélkül is (két kényszerítő lépés keresztezését is nyerésnek tekinti (kisebb súllyal persze, mint az azonnali nyeréseket)). Így átlag 2 századmp-t gondolkodott a programom. Lejátszottam így 8 játszmát, 7-1 lett az eredmény a programom javára. Ennek az az oka, hogy a programomnak van egy gyors nem rekurzív része, ami besegít a rekurzív résznek többféle szempontból is. A rekurzió előtt fut le, és minden mezőnek ad egy értéket. Ez hozzáadódik az adott mezőre lépő rekurzióág visszatérési értékéhez a legfelső szinten, valamint segít kiszűrni néhány nyilvánvalóan nagyon gyenge lépéslehetőséget. Ha érdekel leírom az értékek kiszámításának részleteit, lehet hogy tudnád vele erősíteni a programodat. Csak 90 sor, viszont van benne olyan, ami 10 tab-bal van behúzva.
    Mekkora terhelésre számítássz, hány lépést kell kigondolnia másodpercenként? A webszerverekhez nagyon nem értek, de nem lehet esetleg azt megoldani, hogy valamely php script futtatásának alacsonyabb legyen a prioritása?
    Mutasd a teljes hozzászólást!
  • Nem játszom különösebben jól. Abban viszont igazad van, hogy a php nem erre való. Sokkal szerencsésebb kliens oldalon futtatni.

    Mint korábban mondtam a tiedhez hasonló freestyle szabályok szerinti játszmát hibátlan játék esetén a kezdő (fekete) nyeri.
    A helyes játékhoz sok számításra van szükség. Az idő az egyetlen korlátozó tényező. Csak az elégtelen mélységű keresés miatt fordulhat elő, hogy egy egyébként jó program kezdő félként kikaphat. Minmax, Alfabéta cutoffal és egy jó VCF keresővel időkorlátozás esetén is szinte legyőzhetetlen a legtöbb ember számára.
    Mutasd a teljes hozzászólást!
  • Ezek szerint elég jól játszol. Sajnos sokkal komolyabb logikát nem érdemes PHP-ben megvalósítani, mert nem lenne szerencsés, ha az amőba ugyan jól menne, de weblapok kiszolgálása másodpercekig tartana. :)

    Egyébént még ez a játékerő is meglepően sok embert meg tud izzasztani.

    Nemsokára kiteszem majd az összesített statisztikát a nyert / vesztett játszmákról.
    Mutasd a teljes hozzászólást!
  • Könnyű kiismerni. 10 lépésből verhető a 3. fokozat.
    Mutasd a teljes hozzászólást!
  • Itt egy php (+AJAX) alapú amőba játék:
    PearMedia amőba

    A 3-as fokozatot nézzétek, a többi inkább gyakorlási célzattal került bele. :)


    Mutasd a teljes hozzászólást!
  • Matematikailag a nyerés esélye 100% annak, aki kezd, és nem követ el hibát, de egy AI-tól nem várható el a hibátlan gondolkodás. Ügyes megoldás, grat.

    Köszönöm, de amúgy írtak olyan AI-t, ami nyerő stratégiával játszik. http://home.mit.bme.hu/~gtakacs/download/allis1994.pdf
    Én még nem olvastam el, mert akkor valszeg elment volna a kedvem a saját ötleteim megvalósításától :) (elsősorban tanulási célokkal írtam a programot).
    13 játékból eddig mindig az nyert, aki kezdett Most végre sikerült megvernem akkor is, amikor ő kezdett, de nem volt egyszerű


    Én még akkor is csak ritkán tudom legyőzni, ha én kezdek.

    Ha jól sejtem ez a program több lépésre előre végignézi a lehetséges lépéseket és azokból választja ki a legjobb utat.

    Valóban így van. A Negamax nevű algoritmust használja (alfa-béta vágással). Átlag 6 lépésre néz előre, de a kényszerítő lépéseknél nem csökkenti a szint paramétert a rekurzív hívásnál, úgyhogy a kényszerítőkombinációknál 12 lépést is előrenéz.
    Jelenleg a legnagyobb gyengéje, hogy a saját kényszerítő lépéslehetőségei nagyon elvakítják: Ha valami olyan vesztés-veszély van mondjuk a pálya bal alsó részén amit 4 lépésben láthatna, mégse veszi észre, ha a pálya jobb felső részén van 3 kényszerítő lépéslehetősége, mert bármilyen veszélyt 6 lépéssel késleltetni tud ezek elsütésével. Így már túl messze kerül a veszély beteljesedése azokon az ágakon amikor ezeket meglépi, és így megnyugtatja magát azzel, hogy majd ezekkel megússza, aztán pofára esik, amikor ezek elfogynak (pedig esetleg elkerülhető lenne a vesztés, ha látná hogy ténylegesen melyek hibás lépések). Ebben csak az a kellemetlen, hogy ez tipikusan egy olyan tényező, ami az emberi játékosokat a legkevésbé sem zavarja (mert látják, hogy nem befolyásolják a bal lenti akciót a jobb fönti kényszeírtő lépések), és ezért így ilyenkor relatíve nagyon meggyengül a program.
    Mutasd a teljes hozzászólást!
  • Igen, de ez pont egy freestyle gomoku program 15x15-ös táblával.

    Kár, hogy sehol sem látni hagyományos stílusú (fehér és fekete kör alakú "kövek", amiket a metszéspontokba kell lerakni, sárgás színű táblán) amőba programokat. Az internetes go szerverek legalább még tartják a hagyományos kinézetet. (A gokgs.com pl. tulajdonképpen szépnek mondható játékfelülettel rendelkezik.) Interneten keresztül inkább gót játszok, mint gomokut, értelmesebb emberekkel lehet találkozni. Amőbázni mindenki tud...


    Apropó, ha valamelyik prog.hu-s tud gózni, keressen meg, szívesen kihívnám
    Mutasd a teljes hozzászólást!
  • Egész jól játszik a gép!
    Párszor neki futottam, mire meg tudtam verni.
    Ha jól sejtem ez a program több lépésre előre végignézi a lehetséges lépéseket és azokból választja ki a legjobb utat.
    Az én progim csak a jelenlegi állást nézi, emiatt nem gondolkodik előre.

    matt383: Legközelebb az ilyen képet GIF-be tömörítsd, mert így nehezen olvasható a tömörítési hibák miatt.
    Mutasd a teljes hozzászólást!
  • Matematikailag a nyerés esélye 100% annak, aki kezd


    Freestyle gomoku esetén és asszem 15x15-ös táblán.
    Mutasd a teljes hozzászólást!
  • Nekem is tetszik. Amikor ő kezdett, megvert, pedig elég jó gomoku játékos vagyok.

    (Matematikailag a nyerés esélye 100% annak, aki kezd, és nem követ el hibát, de egy AI-tól nem várható el a hibátlan gondolkodás. Ügyes megoldás, grat.)


    Szerk: 13 játékból eddig mindig az nyert, aki kezdett Most végre sikerült megvernem akkor is, amikor ő kezdett, de nem volt egyszerű
    Mutasd a teljes hozzászólást!
    Csatolt állomány
  • Tetszik.
    Mutasd a teljes hozzászólást!
  • Ejj, akkor az én programom sokkal gyengébb, mint Chuck Norris, 29 lépés kell neki.
    A progi még fejlesztés alatt áll, eddig az AI-ra helyeztem a hangsúlyt, a felhasználói felületből csak annyi van meg, amennyi a teszteléshez (és debuggoláshoz) szükséges volt, de az AI már tud valamit. Legalábbis a másik linkelt programot is legyőzi.
    T, B gombok megnyomására fölfed valamicskét a gondolkodásából. Á-ra pedig átlátszó lesz, hogy szépen hozzá lehessen illeszteni az ellenfél programok táblájához.
    Mutasd a teljes hozzászólást!
    Csatolt állomány
  • Nem rossz, de azért Chuck Norris ezt is legyőzi 4 lépésből.
    Mutasd a teljes hozzászólást!
  • Ja, a játéktér nagyobb mint a látható terület. Jobb felső sarokban van egy "térkép" (mint a Red Alert-ben), és abba a kis ablakba kattintva lehet mozogni a teljes játéktéren.

    Azért így csináltam, mert így jó nagy az X és O, és ha hátra dőlök az ágyamon akkor fél kézzel tudok kényelmesen játszani. Eszembe jutott még egy három személyes Amőba készítése is (játékos és két gép), ha egyszer olyan kedvem lesz akkor összehozom.
    Mutasd a teljes hozzászólást!
  • Olvasott embernek nincs párja
    Mutasd a teljes hozzászólást!
  • Ó bakker
    RTFM nekemnek.
    Mutasd a teljes hozzászólást!
  • És gördítetted lefele?

    A pálya nagyobb mint a látható játéktér, a jobb felső sarokban lévő kisméretű képen lehet beállitani, hogy mely területét akarjuk látni.
    Mutasd a teljes hozzászólást!
  • Csal a program.
    Úgy győzött le, hogy a pályán kívülre lépett xD

    Kép
    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