Table of Contents

Reversi II

Program

Hádanka

101 102 103 104 105 106 107 108 109

Diskuse Reversi

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 wikipedia. Jedná se o jednoduchý dvourozměrný celulární automat s těmito čtyřmi pravidly:

  1. každá živá buňka s méně než dvěma živými sousedy zemře,
  2. každá živá buňka se dvěma nebo třemi živými sousedy zůstává žít,
  3. každá živá buňka s více než třemi živými sousedy zemře,
  4. 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 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:

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. 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ř. Python 3 tutoriálem, nebo jiným podobným zdrojem veškeré moudrosti ;-)

  1. Práce s datovou strukturou dictionary (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í metody items():
      eng_to_cz = {'cat': 'kocka', 'dog': 'pes', 'house': 'dum' }
      for eng, cz in eng_to_cz.items():
          print(eng, ',', cz)
  2. Zopakujte si použití sekce
    if __name__ == "__main__":
    (viz [Pilgrim2009], kapitola 1.10).
  3. 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říkazu with
    • Čtení ze souboru (po řádcích)
    • Načtení celého obsahu souboru do 1 řetězce
  4. Metoda split() řetězcových proměnných (viz dokumentace k str.split())
2018/07/17 13:25