Podrobná specifikace toho, co musí agent umět a jak musí vypadat, aby mohl být otestován automatickým evaluačním systémem.
Stáhněte si reversi_2023l.zip
ZIP obsahuje soubory implementující prostředí, ve kterém se bude hrát. Pro zahrání samotné hry jsou k dispozici dvě prostředí: grafické reversi_creator.py
, nebo terminálové headless_reversi_creator.py
. Modul player.py
obsahuje šablonu vašeho hráče (viz níže). Podrobnosti k těmto souborům najdete v README.
Odevzdávat budete ZIP archiv obsahující váš modul player.py
a případně další vaše moduly, které modul player.py
potřebuje. Tyto soubory musí být v kořeni archívu, archív nesmí obsahovat žádné adresáře! Váš ZIP archív (a jen tento soubor) nahrajete do
BRUTE. Se zdrojovými kódy vašeho hráče (a vašich pomocných modulů) můžete nahrát nějaké datové soubory, pokud nutně potřebujete. Ale velikost odevzdávaného ZIP archivu nesmí přesáhnout 1MB.
Balíček také obsahuje soubor player.py
s třídou MyPlayer
. V ní upravte metodu move()
tak, aby realizovala strategii vašeho hráče.
Docstring popisující třídu MyPlayer je omezen na 80 znaků, neboť se objeví v tabulce s výsledky. Zkuste v docstringu velice stručně popsat hlavní princip vašeho hráče.
Vašeho hráče (v souboru 'player.py') implementujete ve formě třídy MyPlayer
(soubor '/reversi/player.py' v archivu výše), která obsahuje tyto metody:
metoda | vstupní parametry | výstupní parametry | vysvětlení |
---|---|---|---|
__init__ | my_color , opponent_color , board_size | žádné | Vytvoření hráče dané barvy s protihráčem druhé barvy. Velikost hrací plochy máte v konstruktoru pro případnou přípravu heuristických ohodnocení. |
get_all_valid_moves | board | seznam souřadnic | Metoda vrátí seznam všech korektních tahů. |
move | board | souřadnice | Metoda vrátí tuple souřadnic na hrací desce, kam váš hráč chce umístit hrací kámen. Tuto metodu musíte dopsat. |
Samozřejmě není vhodné implementovat celou strategii jen v metodě move()
. Doporučujeme zamyslet se nejprve nad dekompozicí celého problému, ve třídě MyPlayer
implementovat i další metody řešící nějaké podproblémy vaší strategie a tyto metody jen z move()
volat.