Semestrálny projekt v zimnom semestri


Zadanie

Napíš program v Pythone, ktorý umožní dvom alebo viacerým hráčom zahrať sa nejakú doskovú hru. Tvoj program vykreslí hraciu plochu, umožní hráčom striedať sa v ťahaní, bude pritom kontrolovať prípustnosť ťahov a zároveň bude kontrolovať, či niektorý z hráčov nevyhral, resp. neprehral.

Témy

Vyber si jednu z týchto hier, alebo sa nimi inšpiruj:

Môžeš sa inšpirovať online hrami na internete, napríklad

Pri výbere hry mysli na to, že by sa mala ovládať najmä myšou (klikanie, ťahanie), bolo by dobre, keby obsahovala aspoň jeden animovaný prvok (striedanie niekoľkých fáz animácie, napríklad postavičky hráča).

Je vhodné si tému projektu nechať schváliť cvičiacimi prostredníctvom LISTu, aby si mal istotu, že to čo ideš programovať je dobrá téma. Samozrejme, že tému si môžeš hocikedy zmeniť.

  • odporúčame do LISTu vložiť textový súbor (do priečinku semestrálny projekt) s témou projektu, prípadne so stručným popisom, ak je to menej známa hra, alebo plánuješ výrazné zmeny pravidiel

  • cvičiaci ti dajú informáciu, ak to nie je vhodná téma, alebo majú nejaké otázky

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


Požiadavky

Tvoj program musí spĺňať nasledovné požiadavky:

  • program musí byť realizovaný ako inštancia takejto triedy Program, napríklad:

    import tkinter
    
    class Program:
        def __init__(self):
            ...
            tkinter.mainloop()
    
        ...
    
    Program()
    
  • okrem tejto triedy definuj aspoň jednu ďalšiu, napríklad pre:

    • pre popis a ovládanie hracej plochy

    • pre popis a funkčnosť nejakej časti hráča, napríklad figúrky, kartičky, políčka, hráč, nepriateľ, …

  • tieto triedy využiješ v hlavnej triede Program (tieto pomocné triedy môžeš definovať buď v tom istom module alebo v ďalšom)

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

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

Ďalej musí platiť:

  • grafika je realizovaná modulom tkinter:

    • na ovládanie hry použi udalosti myši (klikanie, ťahanie)

    • využi časovač (pomocou after())

    • môžeš 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íš 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ôžeš využiť aj také funkcie a vlastnosti tkinter, ktoré sme sa neučili

    • pre projekt môžeš využiť ľubovoľné súbory s obrázkami z internetu alebo z nejakej hry (ak neplánuješ nejako šíriť túto hru, inak by si mal dbať na legálne použitie grafiky)

  • program by mal čítať aj zapisovať aspoň jeden textový súbor, napríklad rozohranú partiu, úvodné nastavenie, rôzne nastavenia hry, tabuľka najlepších výsledkov a pod. (určite zapisovať a čítať viac informácií)

  • môžeš ešte použiť aj moduly PIL, random, math a json (prípadne ľubovoľné ďalšie, ktoré sú súčasťou inštalácie Pythonu)

Dopredu si dohodni s cvičiacimi, ak by mala tvoja téma problém s niektorou z týchto požiadaviek.


Hodnotenie

Projekt budú hodnotiť tvoji cvičiaci, ale musíš 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

  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 si mal realizovať samostatne, bez cudzej pomoci, samozrejme, že môžeš rôzne problémy konzultovať s vyučujúcimi ale aj so svojimi kolegami

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