Semestrálny projekt v zimnom semestri

Zadanie

Napíšte program, ktorý umožní jednému alebo viacerým hráčom zahrať sa nejakú (najlepšie 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 (striedanie niekoľkých fáz animácie, napr. postavičky hráča).

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ícií týchto tried a inštancie triedy Program, nepoužívajte žiadne globálne premenné ani funkcie

  • snažte sa čo najviac dodržiavať pravidlá správneho zápisu pythonovských programov (pozri napr. Python štýl pre zápis programov)

Ď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 (ale hlavné ovládanie hry by malo byť ťahaním a klikaním myšou)

    • aspoň 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) počas hry (nestačí, ak je iba na „úvodnej obrazovke“)

    • môžete využiť aj také funkcie a vlastnosti tkinter, ktoré sme sa neučili

    • pre projekt môžete využiť ľubovoľnú grafiku z internetu alebo z nejakej hry (ak neplánujete nejako šíriť túto hru, inak by ste mali dbať na legálne použitie grafiky)

  • program by mal čítať aj zapisovať aspoň jeden textový súbor, napr. rozohranú 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 dohodnite 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 (menej ako 5 bodov sa nepripočítava ku skúške)

  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

  3. projekt by ste mali realizovať samostatne, bez cudzej pomoci, samozrejme, že môžete rôzne problémy konzultovať s vyučujúcimi ale aj so svojimi kolegami

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.