IB113/03 - Domácí úkol 05 Blokování Deadline - 9.12.2020, 12.00 Pokyny • Pátý domácí úkol odevzdejte do lávárny naší seminární skupiny nejpozději do 9.prosince do pravého poledne (12.00). • Svá řešení pište přímo do šablony, kterou naleznete ve studijních materiálech. Odevzdáváte jediný soubor pod názvem du05.py. V šabloně neměňte názvy funkcí ani jejich argumenty. • Úkoly vypracovávejte samostatně. Dotazy k zadání pište veřejně do Dis-cordového vlákna, nebo se na stejné platformě obracejte přímo na cvičícího předmětu. • Za celý úkol můžete získat až 40 bodů. Rady 1. Otestujte si, že program korektně funguje na obdélníkových plánech. 2. V Pythonu můžete předávat jako parametr i jméno funkce. Můžeme tedy mít: def play_game(width, height, strategyl, strategy2): ... kterou následně voláme například: play_game(6, 4, strategyjrandom, stratégy_maxblock) kde stratégy_random, stratégy_maxblock jsou jména funkcí implementujících strategie. 1 1 Blokovací hra (20 bodů) Implementuj všechny potřebné části blokovací hry, kterou můžou hrát dva hráči proti sobě. Funkce block_game je již hotová a přijímá jako argumenty různé strategie hry. V základním módu hrají dva lidští hráči proti sobě. Napište funkci human_player, která bude komunikovat s uživatelem a umožní mu hrát manuálně hru. Připravte ji tak, aby byla hra pro uživatele příjemná. Ošetřete, aby při nezodpovědném chování hráče hra nespadla. Dále je třeba napsat zbývající funkce print_board, encLof -game, write_symbol a is_empty. Funkce jsou popsány přímo v kostře úkolu. ROUND 4 player 'x' 1 2 3 4 5 +-----------+ 1 I - # # # - I 2 I # # o # - I 3 I x # # # # I 4 I # # - # o I 5 1---# # I 6 1-----I +-----------+ first coordinate: >? 6 second coordinate: >? 1 ROUND 5 player 'o' 1 2 3 4 5 +-----------+ 1 I - # # # - I 2 I # # o # - I 3 I x # # # # I 4 I # # - # o I 5 I # # - # # I 6 I x #---I +-----------+ first coordinate: >? 2 Automatické strategie (20 bodů) Implementujte alespoň čtyři automatické strategie počítače. Ke při implementaci navrhněte vhodné podfunkce. Následují návrhy možných strategií: • Postupná strategie Hraje na první volné pole, které najde při systematickém průchodu plánu. 2 • Náhodná strategie Hraje na náhodně zvolené prázdné pole. • Maximálně blokující strategie Hraje na takové pole, které zablokuje co nejvíce ostatních polí. • Minimálně blokující strategie Hraje na takové pole, které zablokuje co nejméně ostatních polí. • Inteligentní zakončovač Pokud má k dispozici tah, kterým zablokuje všechna zbývající pole (a tudíž vyhraje), tak tento tah zvolí, jinak hraje náhodně. • Lichý chytrouš Na plánech, kde výška i šířka jsou lichá čísla a kde začíná, vždy vítězí, protože hraje optimální výherní strategii (hrát doprostřed a pak symetricky). Na ostatních plánech hraje náhodně. • Vždy vítěz Vaše vlastní stratgie, která vždy zvítězí. • ... 3