Semestrálny projekt v zimnom semestri¶
Zadanie¶
Napíš program, ktorý umožní jednému alebo viacerým hráčom zahrať sa nejakú (najlepšie doskovú) hru. Tvoj 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¶
Vyber si jednu z týchto hier, alebo sa nimi inšpiruj:
hracie dosky s figúrkami:
kartičkové hry:
hry pre jedného hráča:
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, aby si mal istotu, že to čo ideš programovať je dobrá téma. Samozrejme, že tému si môžeš hocikedy zmeniť.
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ň ďalšie dve:
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ú grafiku 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
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 (menej ako 5 bodov sa nepripočítava ku skúške)
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 (aspoň 5) sa pripočítavajú k bodom ku skúške len vtedy, ak ich získaš ešte pred samotným termínom skúšky.