====== 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.