Specifikace

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.

Podpůrné kódy

Kódy najdete ve studentském repozitáři KUI Reversi:

  1. Vytvořte si někde na svém disku pracovní adresář, např. kui-reversi.
  2. Kódy do něj můžete dostat dvěma způsoby:
    • Pomocí gitu:
      1. Naklonujte si repozitář kui-reversi:
        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.
    • Pomocí ZIP archivu:
      1. Stáhněte si kódy z repozitáře KUI Reversi jako ZIP soubor (nebo si přímo stáhněte kui-reversi-master.zip).
      2. Uvnitř staženého archivu najdete složku 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é
  • grafické (reversi_creator.py) a terminálové (headless_reversi_creator.py) prostředí umožňující hru spustit a zahrát.

Soubor k odevzdání

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.

Třída MyPlayer a její metody

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.

Další pravidla a omezení

  • Můžete používat svoje data, které použije konstruktor hráče. Konstruktor hráče (volá se jen 1x, na začátku partie) má limit 60 sekund, takže má dost času si vše promyslet.
  • Nepoužívejte vícevláknové algoritmy, respektive, nepomůžete si tím. Virtuální stroj v AE má vyhrazeno vždy jen jedno jádro.
  • Odevzdejte hráče v řádném termínu. Možná na konci semestru spustíme ještě dodatečný turnaj, pokud bude potřeba, ale nespoléhejte na to.
  • Penalty za pozdní odevzdání se odpočítávají jen 1x.
courses/b3b33kui/semestralni_ulohy/2_reversi/specifikace.txt · Last modified: 2025/02/27 14:55 by xposik