====== Hráč ====== Podrobná specifikace toho, co musí hráč umět a jak musí vypadat, aby mohl hrát turnaj s ostatními. * Reversi hráč musí fungovat v **Pythonu 3.8.x**, který bude nainstalován na strojích pro automatické hodnocení! Jinak se může stát, že vaše kódy nebudou fungovat správně! ===== Soubor k odevzdání ===== Odevzdávat budete ZIP archív s vaším modulem ''player.py'' a případně se všemi moduly, které tento modul importuje. **Tyto soubory musí být v kořeni archívu, archív nesmí obsahovat žádné adresáře!** ZIP archív (a jen tento soubor) nahrajete do [[https://cw.felk.cvut.cz/brute/|BRUTE]]. ===== Třída MyPlayer a její metody ===== Hráče (v souboru 'player.py') implementujete ve formě třídy ''MyPlayer'', která bude poskytovat tyto metody: ^ metoda ^ vstupní parametry ^ výstupní parametry ^vysvětlení ^ | ''%%__%%init%%__%%'' | ''my_color'' (moje barva), ''opponent_color'' (barva soupeře) | //žádné// | Vytvoření instance hráče. Hráč //vždy// dostane barvu vlastních kamenů ''my_color'' a barvu soupeřových kamenů ''opponent_color''. Barva kamene je buď hodnota 0 nebo 1.| | ''move'' | ''board'' (n x n matice hrací plochy) | r , c (row, column souřadnice Vašeho tahu v tuple(n-tici) se dvěma inty) | Vygenerování tahu. Na vstupu dostanete současný stav hrací plochy ''board'', který je reprezentován dvourozměrným seznamem. Metoda vrací tuple(n-tici) délky 2 (obe cisla typu int) se souřadnicemi tahu - například (0,0), čímž umístíte svůj kámen na pozici ''board[r][c]''. Pokud není možné zahrát validní tah, metoda vrací None. Hodnoty obsažené v ''board'' jsou -1 pro prázdné políčko a 0/1 pro barvy již umístěných kamenů. Maximální setrvání v metodě je 1 sekunda.| ===== Vlastnosti třídy MyPlayer ===== * Třída MyPlayer se bude identifikovat popisem ve formě doc-stringu. Maximální délka je 80 znaků. Popis by měl pokud možno vysvětlovat jak hráč hraje. * Třída bude obsahovat proměnnou ''name'' s FEL username studenta (například 'novakj16'). Příklad třídy MyPlayer: class MyPlayer: '''Hrac hraje nahodne''' def __init__(self, my_color,opponent_color): self.name = 'username' #username studenta def move(self,board): return (*,*) #pozice kam hráč umisťuje svůj kámen