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:
hracie dosky s figúrkami:
dáma, reversi, šach, mlyn, človeče nehnevaj sa, ludo, hex, bridge it, monopoly, go, lines of action, backgammon, dots and boxes, …
kartičkové hry:
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 funkciesnaž 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čilipre 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
ajson
(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
za splnenie všetkých požiadaviek bude základných 5 bodov
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
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.