Hodnocení tématu:
  • 0 Hlas(ů) - 0 Průměr
  • 1
  • 2
  • 3
  • 4
  • 5
MLP piškvorky
#51
Ou, pardon, myslel jsem, že jsi vynechal písmeno.
Po použití z příkazového řádku se to zaplo.
A po zapnutí ze složky se to také zaplo.
Takže pardon za čas, ale zase si to jen dělalo srandu.

Každopádně mám tu jeden návrh na vylepšení. Ano, mohla by tam být čeština, ale to je vedlejší.
Mohlo by být nastavitelné, že chceme hrát jen jednorázově, nebo prostě hrát dál, dál, dál, dál a.. dál.
Že by po jedné hře v druhé možnosti se neukázalo menu, ale hned další kolo. A samozřejmě by bylo tlačítko na ukončení/navrácení do menu.
Odpovědět
#52
Tak hlavní je, že to funguje Twilightsmile

Jinak díky za podněty, teď už na tom nějakou dobu nepracuji a nemám teď moc času, ale během prázdnin bych se na to mohl podívat a trochu to předělat.
Můj DA
Piškvorky
Odpovědět
#53
Dnes jsem přišel na další chybu.
Dám-li End Game, napíše mi to "This is draw", dám ok, ale poté se mi ukáže menu s mřížkou a těmi postavenými piškvorkami tak, jak jsme je měli před chvílí.
A když na nějakou položku ukážu myší, jde před mřížku.
Pro lepší vysvětlení takto:

[Obrázek: p_endgame.PNG]
- po ukončení hry


[Obrázek: p_select.endgame.PNG]
- po vybrání nějakých položek

A pokud kliknu například na nastavení, mřížka zmizí. Pokud kliknu do jiného okna ve Winu a vrátím se, mřížka tam zase je.



A dnes se mi ještě povedlo tohle:
[Obrázek: p_5.a.nic.PNG]
- nic mi to neřeklo

[Obrázek: p_5.a.neco.PNG]
- po pár tazích se to přeškrtlo

A při dalším tahu to napsalo, že jsem vyhrál.
Odpovědět
#54
Ok, začal jsem dělat na opravě. První chybu se mi sice nepovedlo vyvolat. Ale v kódu se mi to podařilo najít, takže opraveno.

Potom jsem objevil chyby u změny pozadí a ještě u resetování skóre. Takže kdyby někdo na něco podobného narazil, tak to už v nové verzi také bude opravené

Ta druhá chyba bude trochu těžší na lokalizaci, mám tam použitý trochu těžší algoritmus. Mohl by jsi mi jen přiblížit, kdo zrovna hrál za AJ v tomto případě, jestli player1 nebo player2/UI?
edit: Protože se jedná o vzácnou chybu, tak není možné to otestovat, ale asi jsem zjistil důvod té chyby, takže to opravím a snad už se ta chyba nevyskytne.
Můj DA
Piškvorky
Odpovědět
#55
AJ jsem byl já, AI byl Derpy s normal obtížností.
Mimochodem, snad nevadí, že se ptám, ale co se to vlastně tam dělo/co způsoblo tu chybu?
Odpovědět
#56
Nová verze 1.3.8
Stáhnout zde
-Hlavní je oprava chyb
-Po skončení hry je možné rovnou pokračovat na novou hru bez návratu do menu

Davis:
Chybu s mřížkou způsobovalo chybné naplnění proměnné, která právě měla hlídat překreslování.
A tu druhou chybu věřím způsobovala chybná inicializace proměných, které měly hlídat, zda se v hracím poli místo pětice nenachází šestice, či větší, protože ty už se nepočátají jako výherní.
Můj DA
Piškvorky
Odpovědět
#57
Do jaké hloubky hledáš? Jak ohodnocuješ? A neměl bych náhodou vyhrát když spojím šest polí? Pinkiehappy
[Obrázek: MLPiskvorky.png]

Teď vážně, do zdrojáků jsem ti nekoukal, ale zdá se mi že jen procházíš okolí pro každý bod matice. S tím se toho moc napáchat nedá. Na tyhle hříčky existuje spousta turnajů, kam pošleš svůj "brain" a bojujete proti sobě. Mrkni na tenhle algoritmus. Je to základní myšlenka nad kterou jsou postavené hromady AI. Kdybys chtěl nějakou rozumnou literaturu, pošli mi PM. Raritywink
Největší pohroma téhle malé země se jmenuje spravedlivě nasraný a žlučovitý Čech...
This ain't no place for no hero. This ain't no place for no better man. This ain't no place for NZ hero to call home...
Odpovědět
#58
MUsí být spojeno přesně 5 piškvorek, když je jich více tak sr to nepočítá jako vítězství. Někdy v začátcích tohoto vlákna jsem byl na to upozorněn od madA12345.
Zkus se podívat do nastavení. Jsou tři obížnosti, co se týče AI. Snadná ta se jen nějak snaží blokovat, to je v podstatě to jak jsi popsal, potom střední a těžkou už mám založenou na algoritmu Minimax. Což je v podstatě to co jsi poslal, ale já to nemám tak do hloubky, tudíž můj program nepřemýšlí více tahů dopředu, ale zrovna u piškvorek mi to nepřijde tak nutné.
Můj DA
Piškvorky
Odpovědět
#59
*To je na nejtěžší obtížnost.

Ad "není nutné", mrkni třeba sem http://gomocup.org/ Podobné brainy jsme psali v druháku jako povinný projekt do základů umělé inteligence. Btw. i piškvorky od Atari z roku 1979 prohledávají stavový prostor do hloubky 8. Velikost hracího plánu je sice jen 8*8 takže ta exploze stavů není tak brutální, ale přesto... na 1.7MHz a 16kB RAM... Twilightsmile

Zkus poladit ohodnocení. Statisticky se proti lidem ukázalo, že je vhodné mít mírně útočnou strategii. Máš velmi nadhodnocené čtveřice. Vznik dvojice trojic, z nichž jedna je volná a jedna z jedné strany blokovaná musí mít vyšší prioritu než vznik z jedné strany blokované čtveřice atd. Tady je značná rezerva i v současném stavu. Nakresli si ty situace na papír a ty vzájemné závislosti budou zřejmé. I bez prohledávání minmaxem lze napsat brain který hraje mnohem tvrději. Pokud vhodně zvolíš poměry, můžeš je pro "hráče" a pro "počítač" násobit nějakou bulharskou konstantou a udělat z toho krásný slider "Obrana - Útok" v menu.

Zkusil bych prohledat kompletní stavový prostor cca do hloubky 3-4. Následně vybrat nejlépe ohodnocené kandidáty a s nimi provést to samé, to samé, to samé, dokud bude přijatelný čas. Je vhodné omezit to prohledávání maximálním časem na tah a v průběhu hledání si udržovat best-so-far kandidáta. To budou souřadnice pole které vrátíš když ti prohledávání přeruší čas. Dostaneš se tak na mnohem větší hloubku.

Když se tohle vychytá, dá se doprogramovat Back Propagation a statistiky proti sobě pouštět vlastní/cizí, resp předchozí a aktuální verzi algoritmu. Ohodnocení pravidel pak bude řídit neuronovka. Naučená síť se pak umí adaptovat a konkrétní chyby protihráče. Není to tak složitý, jak se může zdát. Pinkiesmile


Poslední věc (hloupost) co mi vrtá hlavou je ta nedetekce šestic. Pokud existuje šestice, pak najdu i dvojici pětic. A nalézt stačí první z nich. Navíc to jde zjistit už při prvním průchodu, tak proč ti to nefunguje? Přece umístím symbol uvažovaného tahu a projdu jeho 81-okolí a spočítám ohodnocení. Všechny pětice i vícetice tak najdu okamžitě... ...to bude nějaká školácká chybka... Twilightsmile
Největší pohroma téhle malé země se jmenuje spravedlivě nasraný a žlučovitý Čech...
This ain't no place for no hero. This ain't no place for no better man. This ain't no place for NZ hero to call home...
Odpovědět
#60
Pidi:
Díky za feedback. Takového rozepsání si vážím a zítra se na tvůj příspěvek podívám detailněji.
Já už jsem tu současnou obtížnost nějakou dobu neřešil, protože ona se už současná těžká projevila jako schopný soupeř proti "běžným hráčům" (spolužáci a známí). Samozřejmě na trochu víc profi úrovni to těžko obstojí. Teď je otázka zda bych tuto současnou aplikaci chtěl vést někam dál než je. V současnosti mám rozdělané i jiné projekty, kde využívám AI, takže nějakých tvých poznatků určitě využiji.

Jinak si nejsem jist, jak ty šestice myslíš. Program je detekuje a vynechává záměrně kvůli pravidlům a AI šestice také detekuje, ale jen vytvořené, takže je možné, že vytvoří šestici spojením dvou kratších řetězců aniž by si to uvědomila.
Můj DA
Piškvorky
Odpovědět


Přejít na fórum:


Uživatel(é) prohlížející tohle téma: