Dilema II

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, že 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í 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í 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 [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.

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: 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, vytvoří nový objekt stejného typu - vektorový součin.

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))

courses/b4b33rph/cviceni/program_po_tydnech/tyden_03.txt · Last modified: 2024/11/01 16:23 by xposik