====== Dilema II ====== [[courses:b4b33rph:internal:cviceni:program_po_tydnech:tyden_03|Učitelská verze stránky]] ===== Výsledky učení ===== Po tomto cvičení student * má hotového jednoduchého PD hráče (nebo má jasný plán, jak ho dokončit); * chápe způsob interakce a komunikace mezi hrou (řízením hry) a jednotlivými hráči (strategiemi výběru tahů); * chápe význam tzv. //dunder// metod v Pythonu (např. ''__add__'', ''__mul__'', ''__len__'') a umí je použít. ===== Program ===== * Python tutorial, kapitoly 3-9: odpovědi na dotazy * Řešení [[courses:b4b33rph:cviceni:program_po_tydnech:tyden_02#skalarni_soucin_vektoru|domácího úkolu]], diskuse problémů * Co je aktuálně váš nejtížívější problém (rozuměj v souvislosti s tímto předmětem) * Hádanka * Programovací testík * Cvičný upload triviálního hráče (poslední šance se zeptat na nejasnosti) * Programování řízení dvouhráčové hry ====== Řešení domácího úkolu ====== Příklady řešení [[[[courses:b4b33rph:cviceni:program_po_tydnech:tyden_02#skalarni_soucin_vektoru|minulého domácího úkolu]]. Diskuse možných problémů. ====== Hádanka ======= Zadání hádanky se dozvíte na cvičení. ====== Herně - teoretický kvíz ======= Zadání kvízu se dozvíte na cvičení. ====== Otázky a odpovědi ====== Za domácí úkol jste si měli projít kapitoly 3 - 9 z knihy {[b4b33rph:Kubias2008]}. Pokud máte dotazy k probírané látce, zeptejte se. Zkuste nahrát vašeho triviálního PD hráče, nemusí být úplně funkční, ale měli byste mít jasný plán, jak ho zprovoznit. ====== Programovací testík ====== 1. online test na porozumění kódu. Řeší se na cvičení podle pokynů cvičícího. /*Zadání 1. testíku v interní části stránek.*/ ====== Kámen-nůžky-papír hráč ====== Naimplementujte triviálního hráče, hrajícího R-P-S game a vhodně otestujte. Nechte to zahrát proti sobě například hru "2 ze 3" a vyhodnoťe vítěze. Zkuste vytvořit dva hráče, např náhodného a konstantního a vyhodnoťte úspešnost při více opakování. Zkuste nejprve //algoritmus// řízení hry rozmyslet na papíře a pak teprve začněte programovat. ====== Domácí úkol ====== ===== Odevzdání ===== Nadcházející neděli do 23:59:59 je třeba odevzdat první verzi hráče: [[courses:b4b33rph:cviceni:veznovo_dilema:03_pd_hrac|Jednoduchý hráč]]. 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í ===== Pokračujte ve čtení a zkoušejte programovat. Dokončete pokročilého hráče pro vězňovo dilema - na dalším cvičení bude poslední možnost diskutovat nejasnosti před turnajem. Modul ''vectors.py'' respektive, třídu ''MyVector'' doplňte o metodu ''is_perpendicular_to(self, other)'' a vhodně otestujte. Zkuste si i složitější metodu ''cross_product(self, other)'', která, pokud to jde, realizuje [[https://en.wikipedia.org/wiki/Cross_product|vektorový součin]] a vytvoří novou instanci třídy ''MyVector''. if __name__ == "__main__": vec1 = MyVector([1,2,3]) # vektory mohou byt i jine dimenze nez 3! vec2 = MyVector([3,4,5]) if vec1.is_perpendicular_to(vec2): print('vectors are perpendicular') print(vec1.cross_product(vec2)) # Ovšem vektorový součin půjde spočítat jen pro vektory dimenze 3.