V dnešním cvičení budete mít za úkol naimplementovat jednoduchou hru s názvem Game of Life (Hra života), viz wikipedia. Jedná se o jednoduchý dvourozměrný celulární automat s těmito čtyřmi pravidly:
Začněte stažením neúplného programu 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
.
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. specifikace
Pokud vám něco není jasné, váš triviální hráč není schopen hrát, je nejvyšší čas to řešit.
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ř. Python 3 tutoriálem, nebo jiným podobným zdrojem veškeré moudrosti
Práce s datovou strukturoudictionary
(viz [Pilgrim2009], kapitola 2.7, nebo [Wentworth2012], kapitola 20)
Zopakovat: vytvoření prázdného slovníku, přidání páru klíč-hodnota, zjištění hodnoty pro klíč Vyzkoušejte si procházení položek slovníku pomocí metodyitems()
:eng_to_cz = {'cat': 'kocka', 'dog': 'pes', 'house': 'dum' } for eng, cz in eng_to_cz.items(): print(eng, ',', cz) Práce se soubory (viz [Pilgrim2009], kapitola 11, nebo [Wentworth2012], kapitola 13 - Ale pozor! Zde autoři zapomínají specifikovat kódování souboru!)
Otevření a uzavření textového souboru Použití příkazuwith
Čtení ze souboru (po řádcích) Načtení celého obsahu souboru do 1 řetězce Metodasplit()
řetězcových proměnných (viz dokumentace k str.split())