Search
Ve druhé úloze bude Vaším úkolem naprogramovat hráče (původně deskové) dvouhráčové hry Reversi.
Mějme čtvercovou hrací plochu 8 x 8 čtvercových políček. Hrací plocha je ohraničená a hrany hrací plochy spolu nesousedí. Máme hrací kameny dvou barev. Na začátku hry máme ve středu hrací plochy umístěny dva kameny od každé barvy. Hráč, který je na tahu, položí na některé volné pole hrací plochy kámen své barvy tak, aby uzavřel (zajal) alespoň jednu souvislou linii soupeřových kamenů zakončenou vlastním kamenem. Všechny uzavřené (zajmuté) soupeřovy kameny se přemění na kameny hráče, který je zajal. Je možné uzavřít více než jednu linii, a to ve všech 8 směrech (vodorovně, svisle a šikmo). Pokud hráč nemůže umístit kámen tak, aby soupeři zabral alespoň jeden kámen, hraje automaticky soupeř. Hra končí v okamžiku, kdy je celá hrací plocha zaplněna kameny nebo pokud žádný hráč nemůže položit svůj kámen. Vítězem hry je hráč mající na hrací ploše více kamenů než soupeř.
Naprogramujte hráče, který bude hrát korektně a lépe než hráči všech ostatních.
Na úloze si ukážeme následující vlastnosti této skupiny problémů:
Stejně jako v celém předmětu RPH se cení především vaše snaha. Pak se nemusíte bát, že byste kvůli této úloze předmět neukončili. Nicméně v průběhu práce na úloze budou definované kontrolní body, kdy budete muset odevzdat implementaci jisté části úlohy. Na závěr se porovná váš hráč s ostatními a pokusíte se umístit v této minisoutěži co nejlépe.
Odevzdání se dělí na dvě části:
player.py
Reversi
test_on_datasets.py