IB111 - Domácí úkol č. 4 termín odevzdání: do 15. listopadu 2014, 23:59 Řešení napište do souboru s názvem .py a vložte jej do odevzdávárny Skupina <číslo vaší skupiny>/Domácí úkol č. 4. Zadání (max. 20 bodů + max. 4 bonusové body za nadstandardní řešení) Úkolem je vytvořit program hrající hru "Jednorozměrné piškvorky", ve které hraje 1 uživatel proti počítači.T Herní plán je tvořen N za sebou jdoucími políčky, kde N ≥ 7, očíslovanými čísly 1, 2, . . . , N. Na začátku hry jsou všechna políčka volná. Před začátkem hry je nutno stanovit, zda hru zahájí uživatel nebo počítač. Toto rozhodnutí proveďte pomocí funkce zacina(preference_uzivatele), která začínajícího hráče určí pseudonáhodně (parametr preference_uzivatele bude určovat pravděpodobnost výběru uživatele jako začínajícího hráče). Hra spočívá ve vyplňování volných políček hracího plánu křížkem. Hra končí, jestliže nastala situace, kdy jsou libovolná tři sousední políčka hracího plánu vyplněna křížkem. Vítězem se stává hráč, který tuto situaci vytvořil. V průběhu hry, hráč, který je na řadě, si musí vybrat právě jedno volné políčko a vyplnit je křížkem. Potom se na řadu dostane protihráč. Pokud je na řadě uživatel, je třeba vypsat příslušnou výzvu a uživatel zadá číslo políčka, které bude poté vyplněno křížkem. Pokud je na řadě počítač, výběr provede pomocí funkce vyber_policko. Tato funkce může pracovat buď čistě pseudonáhodně (základní varianta) nebo využívat nějakou strategii. Pro získání plného počtu bodů (20 bodů) stačí implementovat pseudonáhodnou (základní) variantu funkce vyber_policko, ale je nutné, aby tato funkce splňovala alespoň tyto dvě podmínky: 1. Pokud pro počítač existuje možnost v následujícím tahu vyhrát, tak se tato možnost vždy využije. 2. Pokud je to možné, nevytvoří takovou situaci, aby uživateli zbýval k vítězství jen jeden tah. Za implementaci nějaké inteligentní herní strategie je možné získat bonusové body. V takovém případě k programu přiložte podrobný slovní popis této strate- gie. 1 Poznámky Na začátku hry a potom po každém tahu proveďte vizualizaci stavu hracího plánu. Volné políčko reprezentujte pomlčkou a vyplněné políčko reprezentujte znakem ‘X’. Po každém tahu vypište celkový počet provedených tahů. V případě neplatných vstupních parametrů funkcí (např. N=6) vypište příslušná chybová hlášení. Pokud uživatel při svém tahu zvolí políčko nesprávně (již je vyplněné nebo je zadaná hodnota neplatná), vypíše se odpovídající chybové hlášení a uživatel dostane další možnost zvolit si políčko. Příklad hry Celkovy pocet policek hraciho planu: 19 Pocet provedenych tahu: 0 stav: - - - - - - - - - - - - - - - - - - Na tahu: uzivatel Zvolte policko: 15 Pocet provedenych tahu: 1 stav: - - - - - - - - - - - - - - X - - - Na tahu: pocitac Pocet provedenych tahu: 2 stav: - - - - - - X - - - - - - - X - - - Na tahu: uzivatel Zvolte policko: 9 Pocet provedenych tahu: 3 stav: - - - - - - X - X - - - - - X - - - Na tahu: pocitac Pocet provedenych tahu: 4 stav: - - - - - - X X X - - - - - X - - - Vyhral pocitac. 2