====== Reversi II ====== ===== Program ===== * Dotazy a odpovědi * Hádanka * Diskuse Reversi, cvičný upload korektně hrajícího hráče * Programovací úlohy ===== Hádanka ===== [[https://forms.gle/kFqxMq54p7hjByPu6|101]] [[https://forms.gle/3nLTaoxHoVa3zQVk7|102]] [[https://forms.gle/QaZvFUtncp1Ne1CH7|103]] [[https://forms.gle/vzsGD3QyLgcqMk1g7|104]] [[https://forms.gle/oMqTMgeh4ao4uiwL8|105]] [[https://forms.gle/uyin2XUR2RuBFCna6|106]] [[https://forms.gle/MuffuZrZW4u4wWx8A|107]] [[https://forms.gle/4kfZisGQAbhkvdvHA|108]] [[https://forms.gle/yARdGc2Gxtt5qAudA|109]] > {{page>courses:b4b33rph:internal:puzzles#cviceni_6}} ===== Diskuse Reversi ===== * Formulace a implementace funkce hodnotící proveditelnost tahu. * Jaké jsou základní strategie? * Jaká jsou důležitá pole? * Jaké vlastnosti by měla mít má strategie (krom toho, že každého vždy porazí)? > {{page>courses:b4b33rph:internal:cviceni:program_po_tydnech:tyden_06#reversi_gui_tool}} ===== Programovací úlohy - Game of Life ===== V dnešním cvičení budete mít za úkol naimplementovat jednoduchou hru s názvem Game of Life (Hra života), viz [[https://cs.wikipedia.org/wiki/Hra_%C5%BEivota|wikipedia]]. Jedná se o jednoduchý dvourozměrný celulární automat s těmito čtyřmi pravidly: - každá živá buňka s méně než dvěma živými sousedy zemře, - každá živá buňka se dvěma nebo třemi živými sousedy zůstává žít, - každá živá buňka s více než třemi živými sousedy zemře, - každá mrtvá buňka s právě třemi živými sousedy oživne. Začněte stažením neúplného programu {{:courses:b4b33rph:cviceni:program_po_tydnech:game_of_life.py|Game of Life}}. Nejdůležitějším atributem třídy GameOfLife je ''self.population'' která ukládá stav aktuální generace ve 2d seznamu. Živá buňka má hodnotu 1 a mrtvá buňka hodnotu 0. Doimplementujte následující dvě metody třídy GameOfLife: * ''num_life_around(self, r, c)'' - určí počet živých buňek v okolí buňky na pozici ''r''-tého řádku a ''c''-tého sloupce. * ''life(self)'' - vytvoří novou generaci pomocí výše uvedených čtyř pravidel a uloží ji do ''self.population''. Všimněte si že je v této metodě dobré využít předem implementovanou metodu ''num_life_around''. > {{page>courses:b4b33rph:internal:cviceni:program_po_tydnech:tyden_06#game_of_life}} ===== Domácí úkol ===== ==== Odevzdání ==== Nadcházející neděli do 23:59:59 je třeba odevzdat první verzi hráče Reversi s korektním pokládáním kamene. [[courses:b4b33rph:cviceni:reversi:specifikace|specifikace]] Pokud vám něco není jasné, váš triviální hráč není schopen hrát, je nejvyšší čas to řešit. ==== Příprava na další cvičení ==== Přečtěte zbytek vašeho vybraného Python tutorialu. Nemusíte úplně rozumět všemu, ani si pamatovat vše zpaměti. Měli byste mít natrénován postup jak si dohledat potřebné informace, mít natrénovanu práci s např. [[http://docs.python.org/py3k/tutorial/index.html|Python 3 tutoriálem]], nebo jiným podobným zdrojem veškeré moudrosti ;-) /*Na příštím cvičení budeme využívat následující věci:*/ > {{section>courses:b4b33rph:cviceni:spam:krok1#priprava&noheader}}