Semestrálny projekt

Zadanie

Napíšte program, ktorý umožní jednému alebo viacerým hráčom zahrať sa nejakú doskovú hru. Váš program vykreslí hraciu plochu, umožní hráčom ťahať, bude pritom kontrolovať prípustnosť ťahov a zároveň bude kontrolovať, či niektorý z hráčov nevyhral, resp. neprehral.

Témy

Vyberte si jednu z týchto hier, alebo sa nimi inšpirujte:

Môžete sa inšpirovať online hrami na internete, napr.

Pri výbere hry myslite na to, že by sa mala ovládať najmä myšou (klikanie, ťahanie), mala by obsahovať aspoň jeden animovaný prvok, a samotná hracia plocha sa vnútorne reprezentuje ako nejaké dvojrozmerné pole.

Je vhodné si tému projektu nechať schváliť cvičiacimi, aby ste mali istotu, že to čo idete programovať je dobrá téma. Samozrejme, že tému si môžete hocikedy zmeniť.

Pravidlá vybranej hry si môžete prispôsobiť alebo aj dosť radikálne zmeniť.

Požiadavky

Váš program musí spĺňať nasledovné požiadavky:

  • program musí byť realizovaný ako inštancia vašej triedy Program, napr.

    import tkinter
    
    class Program:
        def __init__(self):
            ...
            tkinter.mainloop()
    
        ...
    
    Program()
    
  • okrem tejto triedy definujte aspoň jednu ďalšiu triedu pre popis nejakej časti hry, napr. figúrky, kartičky, políčka, hráč, nepriateľ, … túto triedu využijete v hlavnom programe (tieto pomocné triedy môžete definovať buď v tom istom module alebo v ďalšom)

  • okrem definícíí týchto tried a inštancie triedy Program, nepoužívajte žiadne globálne premenné ani funkcie

  • zvoľte si takú hru, aby sa pri realizácii hracej plochy využilo dvojrozmerné pole (napr. šachovnica, labyrint, …)

Ďalej musí platiť:

  • grafika je realizovaná modulom tkinter:
    • na ovládanie hry použite udalosti myši (klikanie, ťahanie)
    • využite časovač (pomocou after())
    • môžete využiť aj klávesnicu
    • apoň nejaká časť grafiky musí byť realizovaná obrázkami (.png, .gif), pričom musíte simulovať aspoň jednu animáciu (striedanie niekoľkých obrázkov v časovači)
    • môžete využiť aj také funkcie a vlastnosti tkinter, ktoré sme sa neučili
  • program by mal čítať aj zapisovať aspoň jeden textový súbor, napr. rozohratú partiu, úvodné nastavenie, rôzne nastavenia hry, tabuľka najlepších výsledkov a pod.
  • môžete ešte použiť aj moduly random, math a json

Dopredu si dohodnote s cvičiacimi, ak by mala vaša téma problém s niektorou z týchto požiadaviek.

Hodnotenie

Projekt budú hodnotiť vaši cvičiaci, ale musíte ho odovzdať na úlohový server L.I.S.T., pričom

  1. za splnenie všetkých požiadaviek bude základných 5 bodov (nedáva sa menej ako 5 bodov)
  2. za umelecký dojem, pohodlné ovládanie, nové zaujímavé prvky, použitie nejakého náročnejšie algoritmu a pod. do 5 bodov - tieto body sa budú pridávať k základným 5 bodom

Takto získané body sa pripočítavajú k bodom ku skúške len vtedy, ak ich získate ešte pred samotným termínom skúšky.