Algoritmus Piškvorek

Tyto piškvorky pracují na velmi jednoduchém principu a bez promýšlení tahů dopředu.

Při každém tahu počítače je ohodnoceno každé políčko určitým číslem, které říká jak výhodné je dát značku právě tam. Značka je nakreslena do políčka s největším ohodnocením. Hodnocení se skládá z obrané a útočné složky. Útočná složka zvýhodňuje políčka, která vedou ke zvýšení n-tic počítače a obraná zase ta políčka jimiž lze zabránit ve vytvoření n-tice protihráče.

Vyhodnocování celého pole probíhá tak, že se vezmou všechny možné pětice ve všech směrech, které se mohou na hrací ploše nacházet. Každá taková pětice je ohodnocena nezávisle na ostatních. Celé hrací pole je pak ohodnoceno tak, že každému jeho políčku je přiřazen součet ohodnocení všech pětic, které jím procházejí. Například políčkem, které je dostatečně daleko od okraje, prochází dvacet pětic. Pět svisle, pět vodorovně a pět a pět šikmo.

Každá pětice je ohodnocena podle toho kolik v ní chybí značek jednoho nebo druhého spoluhráče k celému jejímu zaplnění - tj. kolik chybí do pěti. Čím víc tam má jeden hráč svých značek, tím větší hodnotu pětice má. Pokud jsou v pětici současně značky obou hráčů, má hodnotu nula, protože už z ní vítězná piškvorka nikdy být nemůže.

Hra počítače je určena tabulkou přiřazující pětici hodnotu podle toho, kolik obsahuje značek hráče a protihráče.

Tento algoritmus jsem vymyslel v roce 1995 a protože je tak jednoduchý tak jsem piškvorky napsal tenkrát v qbasicu a měli jen necelých 50 řádek. Řádky byly sice trochu delší, ale dalo se to dobře vytisknout. Abych je tenkrát trochu zviditelnil, nazval jsem je Piskvorky 95, čímž se mi podařilo úspěšně parazitovat na tehdejší reklamní kampani okolo Windows 95.

Zdrojový kód: Piskvorky.java

 

Diskuse

Datum: 24/07/2012 17:08   Autor: Michal   (ip: 88.101.127.213)
Předmětu: Ohodnocení \"Utok 5\"
Zdravím. Neměl by mít \"Utok 5\" mnohem větší bodové ohodnocení? Takhle dostane políčko s 2×\"Obrana 5\" více bodů (16000) než políčko s 1×\"Utok 5\" (10000), které je ale vítězné.

Přidat příspěvek