IB111/10 Domácí úloha č. 4 Odevzdejte do 17.11. Zadání: Vytvořte program hrající hru "Jednorozměrné piškvorky"proti uživateli. Tato variace piškvorek se hraje na jednorozměrném hracím plánu o zadané velikosti, tj. hrací plán je řada políček. Stejně jako u běžných piškvorek se hráči střídají a dělají značky do zatím neobsazených políček, tentokrát však oba hráči dělají křížky. Vyhrává hráč, který jako první vytvoří alespoň 3 křížky vedle sebe. Nelze hrát na již obsazenou pozici ani se vzdát tahu. Kdo začíná, se určí náhodně (počítač i uživatel mají 50% šanci na začínání). Při výpisu průběhu hry se alespoň přibližně držte předlohy uvedené níže (v sekci Příklady hry). Základní variantou je program, který dodržuje pravidla, ale jinak hraje náhodně. Za takové řešení obdržíte až 4 body. Abyste získali 5 bodů, měl by program hrát alespoň trochu rozumně, např. když může jedním tahem vyhrát, tak to udělá a nenahrává na výhru, pokud se tomu lze vyhnout. Pokud váš program bude hrát "inteligentně", můžete získat bonusové body. V tom případě napiště do komentáře stručné vysvětlení, jak moc inteligentně program hraje. Poznámky • Než začnete psát kód, rozmyslete si (nejlépe si i nakreslete) dekompozici problému na jednodušší funkce. Jinak se v tom ztratíte. • Začněte variantou s náhodnými tahy, rozumnné chování přidejte až potom. Při dobré dekompozici by rozšiřování neměl být problém. • Zkuste si tuto hru pákrát zahrát (s někým nebo i sami se sebou), pomůže vám to lépe pochopit, jak by měl počítač hrát. Příklady hry: >>> piskvorky(26) . . . . . . . . . . . . . . . . . . . . . . . . . . 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 0 | 1 | 2 Na tahu: hrac Zadej tah: 1 1 . X . . . . . . . . . . . . . . . . . . . . . . . . 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 0 | 1 | 2 Na tahu: pocitac Zahral na pozici: 4 . X . . X . . . . . . . . . . . . . . . . . . . . . 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 0 | 1 | 2 Na tahu: hrac Zadej tah: 6 . X . . X . X . . . . . . . . . . . . . . . . . . . 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 0 | 1 | 2 Na tahu: pocitac Zahral na pozici: 5 . X . . X X X . . . . . . . . . . . . . . . . . . . 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 0 | 1 | 2 Prohrál jsi! >>> piskvorky(15) . . . . . . . . . . . . . . . 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 0 | 1 Na tahu: pocitac Zahral na pozici: 0 X . . . . . . . . . . . . . . 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 0 | 1 Na tahu: hrac Zadej tah: 20 2 Neplatny tah, zadej jinou pozici. X . . . . . . . . . . . . . . 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 0 | 1 Na tahu: hrac Zadej tah: 0 Neplatny tah, zadej jinou pozici. X . . . . . . . . . . . . . . 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 0 | 1 Na tahu: hrac Zadej tah: 3 X . . X . . . . . . . . . . . 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 0 | 1 Na tahu: pocitac Zahral na pozici: 6 X . . X . . X . . . . . . . . 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 0 | 1 Na tahu: hrac Zadej tah: 1 X X . X . . X . . . . . . . . 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 0 | 1 Na tahu: pocitac Zahral na pozici: 2 X X X X . . X . . . . . . . . 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 0 | 1 Prohrál jsi! 3