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.
Kódy najdete ve studentském repozitáři KUI Reversi:
kui-reversi.
gitu:
cd kui-reversi git clone https://gitlab.fel.cvut.cz/kui-student-materials/kui-reversi.git .Nezapomeňte na
. na konci předchozího příkladu: tečka říká gitu, aby obsah repozitáře naklonoval do aktuálního pracovního adresáře.
kui-reversi-master. Extrahujte její obsah do složky kui-reversi. (Ve složce kui-reversi byste neměli vidět podadresář kui-reversi-master.)
V podpůrných kódech najdete:
player.py - modul se šablonou pro vašeho hráče, a také
reversi_creator.py) a terminálové (headless_reversi_creator.py) prostředí umožňující hru spustit a zahrát.
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 select_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ů. |
select_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ě select_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 ze select_move() volat.