Jak to peloit
---------------
Zdrojov texty jsou pro Microsoft Visual C++ nebo Borland C++ Builder nebo Dev-C++. Abyste je mohli zkompilovat, vytvote si dva projekty. Prvn projekt je Win32 Aplikace a pidejte do nj soubory ze sloky source. Ve vlastnostech projektu ke knihovnm pidejte wsock32.lib mswsock.lib version.lib comctl32.lib. Vsledn soubor piskvork.exe je uivatelskm rozhranm a manaerem turnaje. Pak vytvote druh projekt, co je Win32 Konzolov Aplikace a obsahuje soubory ze sloky "source\pbrain" a soubor pisqpipe.cpp ze sloky "source\skelet". Vsledn soubor pojmenujte pbrain-pela.exe. Ve vlastnostech obou projekt muste zvolit run-time library Multithreaded nebo Multithreaded DLL. 

Strun popis algoritmu
-----------------------
Zkladem je ohodnocen polek. Pota zkou tahy pouze na polkch, kter maj velk ohodnocen. Polek s nzkm ohodnocenm si vbec nevm, a proto se obas stane, e prohraje i pi nejt잚 obtnosti. 
Rozliuje se mezi obrannmi a tonmi tahy, proto se ohodnocen polek mus potat zvl᚝ pro kadho z obou hr. Na kadm polku se nezvisle na sob vyhodnocuj vechny tyi smry (vodorovn, svisle, ikmo) a pak se tyto tyi hodnoty setou. Napklad kdy se ve dvou smrech naleznou dvojice stejnch znak, pak je ohodnocen podobn, jako kdy se v jednom smru nachz trojice. Kvli rychlosti se pi sputn programu vypote ohodnocen pro vechny mon kombinace devti polek a ulo se do pamti. Za bhu programu se sta podvat do tabulky (kter zabr 1MB pamti). Ohodnocen zvis na potu symbol a tak na tom, jestli nejsou z jedn strany blokovny soupeovm symbolem. Pokud jsou blokovny na obou stranch a poet polek mezi soupeovmi symboly je men ne pt, pak je ohodnocen nulov.
Pi kadm tahu se pepotv ohodnocen ty sousednch polek ve vech osmi smrech. Polka s velkm ohodnocenm jsou uloena ve spojovch seznamech. Pro kadho hre jsou vytveny ti seznamy. V nich jsou uloena polka, kter soused se dvma/temi/tymi stejnmi znaky. Doba pemlen by nemla zviset na velikosti hrac plochy. Cel plocha se prohledv jen v ppad, e neexistuje dn polko s dostaten velkm ohodnocenm.
Jestlie se nkde nachzej vedle sebe tyi stejn znaky, pak pota thne okamit bez pemlen. Jinak zkou, jestli se ned vyhrt tak, e bude dlat v kadm tahu tveice. V takovm ppad m protihr vdy jen jedinou monost obrany, a proto celkov poet kombinac nen moc velk, a proto se vyzkouej vechny. 
Nejdve pota zkou, jestli neme vyhrt. To se dl rekurzivnm prohledvnm do hloubky (backtracking). Kon se ve chvli, kdy se nalezne njak vhern posloupnost, nebo se zjist, e se protihr ubrn, nebo se doshne maximln hloubka rekurze. Pokud pota neme v nkolika nsledujcch tazch vyhrt, potom naopak zjiuje, jestli neme prohrt. To se dl stejn, jako by byl na tahu protihr a zkouel toit. Pokud protihr me vyhrt, pak se najde posloupnost tah, pi kterch vyhraje. Tato posloupnost se setd podle ohodnocen polek. Pak pota postupn zkou thnout na tato polka, dokud nenajde njak, na kterm neprohraje. Pokud prohraje v kadm ppad, pak zkou nkde toit tm, e si dl tveice a oddl tak svoji prohru o pr tah. 
Jestlie ani u jednoho z hr nen nalezena vhern kombinace, pak se najde polko s nejvtm ohodnocenm. Aby hra nebyla pokad stejn, pak se me nhodn vybrat polko, kter m o trochu hor ohodnocen.

Jak si vytvoit svj algoritmus
-------------------------------
Pouijte soubory pisqpipe.cpp a pisqpipe.h, kter obsahuj vekerou komunikaci s manaerem hry. Naprogramovat muste funkce brain_init, brain_restart, brain_turn, brain_my, brain_opponents, brain_block, brain_takeback, brain_end. Nzev vaeho EXE souboru mus zanat na pbrain-.
Druhou monost je pout zastaral souborov protokol, kde komunikace neprobh pes rouru, ale pomoc soubor Tah.dat, Plocha.dat, TimeOuts.dat, Info.dat, msg.dat. 
Dal informace se dozvte na http://gomocup.wz.cz
