Projekty

Záverečné projekty možno chápať aj ako individuálne zadanie domácej úlohy (je možné mať len jeden projekt), t.j. body sa projekty budú zarátané do bloku "domáca práca". Cieľom projektov je navrhnúť a implementovať vlastnú netriviálnu miniaplikáciu, ktorá by nejakým spôsobom preukázala vaše programátorské zručnosti. Projekty nie sú povinné (no odporúčané).

Témy projektov

Téma projektu môže byť naozaj ľubovoľná. Všetko závisí len na dohode s "hlavným" cvičiacim skupiny. Cvičiaci je osoba, ktorá rozhoduje o akceptácii navrhnutej témy projektu. Záujemcom odporúčame sa o téme projektu čo najskôr porozprávať s cvičiacim, ktorý vás vie v prípade potreby vo výbere témy projektu usmerniť. Je preferované, aby žiadne dve osoby nemali projekt s rovnakou témou. Ak ale táto situácia nastane, rovnaká téma znamená nezávislú prácu na projektoch.

V odôvodnených prípadoch je možná aj tímová práca na projekte - v takomto prípade ale musí byť rozsah projektu taký, že tímové riešenie projektu bude mať svoje opodstatnenie (jednoduché hry do tejto kategórie určite nespadajú). Pri obhajobe projektu musí byť tiež jasné, kto a ako sa podieľal na jednotlivých moduloch projektu.

Príklady tém projektov:

Niektoré minuloročné a predminuloročné projekty:

Poznámka: Pri projektoch môžete (ale nemusíte) využívať JPAZ2.

Hodnotenie projektov

Hodnotenie projektu závisí od náročnosti projektu, kvality implementácie a používateľského rozhrania. Za projekt spĺňajúci všetky naň kladené požiadavky s primeranou náročnosťou sa dá získať maximálne 40 bodov. O tom, aký približný počet bodov sa bude dať získať za projekt v závislosti na téme projektu, vás bude vedieť informovať váš cvičiaci teoretických cvičení po zaslaní témy projektu. Reálne získaný počet bodov ale závisí len od kvality realizácie projektu.

Požiadavky na implementáciu projektu

  • GUI: V prípade grafických aplikácií je možné vytvoriť aplikáciu využivajúcu JPAZ2. Samozrejme aj GUI vytvorené v AWT, či Swingu je akceptované. Používateľské prostredie navrhnite a implementujte tak, aby bolo intuitívne, užívateľsky príťažlivé a zároveň "blbo-vzdorné" (program je odolný voči "nevhodnej" aktivite používateľa - napr. zlý vstup, pokus o nepovolený ťah). Ak sa rozhodnete vytvoriť "negrafickú aplikáciu" (napr. spracovanie nejakých súbor, ...), GUI nie je potrebný - treba však dbať na to, aby používatelia vašej aplikácie ju vedeli pohodlne ovládať (napr. jasne definované argumenty pri spúšťaní aplikácie z príkazového riadku v prípade konzolovej aplikácie).
  • Triedy: Funkcionalitu aplikácie rozumne rozložte do vlastných tried (zobrazovanie/funkcionalita/dáta). Toto je jedno z najdôležitejších kritérií na posúdenie kvality implementácie projektu. Projekt by mal teda pozostávať z viacerých tried (napr. v hre nad JPAZ-om môžeme mať triedy HraciaDoska, Figurka, ...)
    • Príklad: ak sa rozhodnete pre naprogramovanie hry s využitím JPAZu, tak v triede rozširujúcej triedu WinPane implementujte len zobrazovaciu funkcionalitu. Logika a stav hry nech sú uložené v samostatnej triede (napr. takáto trieda pozná obsah políčok hracej dosky; vie povedať, či je ťah povolený; vie zrealizovať ťah, atď. ). Na uloženie komplexnejších dát rovnako využite samostatné triedy (napr. ak je stav figúrky popísaný viacerými hodnotami).
  • Práca so súbormi: Pokiaľ to charakter témy projektu pripúšťa, je nutné implementovať v projekte aj prácu so súbormi (napr. uloženie stavu hry, zoznam najlepších výsledkov a podobne)
  • Okomentovaný a prehľadný zdrojový kód!

Poznámka: v prípade hier pre viac hráčov netreba programovať inteligentných protihráčov!

Časový plán projektov

  • najneskôr do 6.12.2013 dohodnúť tému projektu (aj osobne dohodnutá téma projektu musí byť spísaná a odoslaná cvičiacemu e-mailom), v e-maile uveďte:
    • názov projektu
    • stručný opis projektu
  • projekt je treba odovzdať najneskôr do 5.2.2014
    • projekt odovzdajte cez Moodle (jeden skomprimovaný súbor so zdrojovými kódmi projektu). V prípade, že súbor bude väčší ako 4MB, na zaslanie súboru využitie niektorú zo služieb na zdieľanie súborov (napr. uloz.to) a do Moodlu uložte len odkaz na súbor (napr. ako komentár)
    • dátum, čas a miesto verejných prezentácií a obhajoby projektov budú upresnené neskôr, na jednu obhajobu bude vyhradených asi 10 minút
    • vo vybraných prípadoch môže byť doplňujúca neverejná diskusia k projektu s cieľom overiť autenticitu autorstva (jedna sa to osôb, kde odprezentovaný projekt nebude korelovať s výsledkami počas semestra), resp. u kvalitných projektov diskusia k detailom projektu s cieľom upozorniť na drobné chyby, či dať rady do ďalšej programátorskej činnosti

Odovzdané projekty budú zverejnené na webových stránkach predmetu PAZ1a. Dajte si preto záležať, aby ste sa za svoj projekt po zverejnení nemuseli hanbiť.

Obhajoba projektov

  • Obhajoba projektov sa koná v 7.2.2014 (piatok) o 13:00 v SA1A1 (P/01). Treba prísť pár minút skôr, aby bol čas vyskúšať si funkčnosť projektu na počítači v P/01 (predbežne sú už všetky projekty vo workspace v Eclipse).
  • Na obhajobu projektu je vyhradených asi 10 minút
  • Obhajoba je nasledovaná diskusiou (okolo 5 minút)
  • Slajdy nie sú nutné, ale sú vítané (určite ich prítomnosť oceníte aj počas obhajoby)
  • Počas obhajoby by mal študent:
    • predstaviť projekt a uviesť motiváciu k projektu: o čom je projekt, prečo som si vybral danú tému, čo je cieľom projektu
    • demonštrovať projekt: praktická ukážka fungovania projektu a jednotlivých aspektov jeho funkcionality (táto časť môže byť spojená s predchádzajúcou)
    • predstaviť návrh/štruktúru tried: z akých tried sa projekt skladá a akú funkcionalitu poskytujú (netreba hovoriť o každej triede, aké má metódy, treba predstaviť "zmysel života" objektov triedy a jej zaradenie do kontextu ostatných tried)
    • porozprávať o implementácii projektu: aké najťažšie problémy sa ukázali pri implementácii projektu, čo bolo treba riešiť a ako sa to nakoniec podarilo/nepodarilo vyriešiť
    • zosumarizovať prácu na projekte: ako ďalej možno vylepšiť projekt, čo som sa pri projekte naučil, ...

Súťaž o najlepší projekt

Najlepšie projekty získajú odmenu vo forme 15, 10 a 5 prémiových bodov.

Zverejnené projekty

Prihlásené projekty

Ak sa rozhodnete, že projekt nebudete robiť, dajte nám o tom čo najskôr vedieť.

  • -Jaroslav Andrejko (B) - Šachy-
  • Ivana Badiarová (E) - Vlajky
    • Naučte sa poznávať a vedieť priradiť vlajku k štátu.
  • Tomáš Csatáry (B) - Duck hunter
    • Hra je voľným klonom známej hry Moorhuhn. Ide o hru pre jedného hráča. Cieľom hry je zastreliť čo najviac kačiek.
  • -Lukáš Fenďa (Ex) - Míny-
  • Martin Glova (A) - Švabliky
    • Program vygeneruje náhodne súčet alebo rozdiel napríklad dvoch trojciferných čísel a tento príklad by sa na obrazovke zobrazil z poukladaných zápaliek s tým rozdielom, že by boli napríklad dve zápalky presunuté inak, aby súčet/rozdiel nesedel a úlohou by bolo presunúť tieto zápalky naspäť, aby sa obe strany v súčte/rozdiele rovnali.
  • Jakub Gnip (Ex) - Vojna (klasická kartová hra)
    • Zamiešame karty a rozdelíme ich na dve hracie kôpky. Kôpky sú položené na hracom stole lícnou stranou nadol. Zakaždým sa vezme jedna horná karta z kôpky hráča a položia sa lícnou stranou nahor do stredu stola. Ten kto má kartu vyššej hodnoty, berie obidve karty a zasunie si ich na spodok svojej hracej kôpky. V prípade že hráči vhodili karty rovnakej hodnoty - nastane vojna - tj. vhodia postupne ďalšie tri karty zo svojej kôpky a tretia karta rozhodne o ďalšom postupe. Vyššia hodnota berie všetko, rovnaké hodnoty znamenajú ďalšiu vojnu. Vyhráva hráč, ktorý získa všetky karty.
  • -Roman Haluška (B) - Finančný poradca-
    • Aplikácia, ktorá odporúča na základe vyplnenia dotazníka stratégiu investovania do akcií. Aplikácia obsahuje aj kurzovú kalkulačku.
  • -Milan Chrastina (A) - Snake-
  • -Eva Jaščurová, Petra Mitroová (E) - IS-LM model-
    • Program by mal pracovať tak, že nám ukáže ako sa budú IS a LM krivky meniť a posúvať keď zmeníme jednotlivé veličiny.
  • Šimon Javorský (A) - Bang!
    • Bang! je kartová hra na motívy divokého západu určená pre 4-7 hráčov. Úlohou hráča je, podľa náhodne pridelenej úlohy (šerif, odpadlík, bandita), zabiť svojich nepriateľov. Hra končí, keď je šerif mŕtvy alebo ako jediný živý. Projekt je zameraný na hru pre jedného hráča proti trom NPC.
  • Alica Kačengová (A) - Chrobáky
    • Popis: V hracej ploche sa nachádza postavička, okolo ktorej lezie množstvo chrobákov. Keďže sa ich bojí, snaží sa nafúknuť čo najväčšiu bublinu, aby po jej dofúknutí zmizli chrobáci z jej okolia. Ak sa chrobák dotkne bubliny pred dofúknutím, tá praskne a postavička musí si zobrať novú žuvačku a fúkať odznova. Cieľom hry získať čo najviac bodov za zničenie čo najviac chrobákov.
  • -Jakub Kovář (A) - Snake-
  • Michaela Mihalíková (B) - Pexeso
    • Počítačová verzia hry pexeso. Ide o hru pre jedného hráča v ktorej sa snaží otočiť všetky dvojice rovnakých kariet.
  • Marián Opiela (A) - Mlyn
    • Počítačová verzia tradičnej abstraktnej doskovej hry pre dvoch hráčov. Hráči presúvajú svojich 9 hracích kameňov po doske s 24 priesečníkmi a snažia sa odstrániť všetky súperove kamene, alebo mu zabrániť v ďalších ťahoch.
  • Martin Palkovík (Ex) - Arkanoid
    • Hra na princípe starej klasickej hry Arkanoid, v ktorej úlohou hráča je rozbiť poskladanie tehličky v hornej časti obrazovky za pomoci loptičky a plošiny na odrážanie ovládanej hráčom.
  • Patrik Pekarčík (A) - Hudobný prehrávač LITE
    • Užívatelia môžu organizovať, prehrávať hudbu do playlistov, upravovať informácie o súboroch/piesňach.
  • -Matúš Piroh (B) - Kartová hra Srdcia-
  • Matúš Rubický (A) - Hangman
  • -Viktor Škultéty (A) - Space-time Traveler-
    • Cieľom projektu bude spracovanie niektorých dôsledkov špeciálnej teórie relativity na simulácii rakety letiacej vesmírom.
  • -Veronika Tkáčová (E) - Míny-
  • Jakub Valent (B) - Turtle Space Wars
    • 2D RTS hra, v ktorej ide o zabratie počítačom ovládaných sĺnk a zničenie jeho korytnačiek. Každé zabraté slnko vygeneruje jednu vlastnú korytnačku každých pár sekúnd. Každá korytnačka vie zničiť presne jednu nepriateľskú korytnačku, pričom sa sama zničí. Hra je založená na hre Auralux pre Android a iOS, alebo na jej predchodcovi Phage Wars.
  • -Radka Vašková (A) - Milionár-
    • Cieľom hry Milionár je odpovedať na 15 otázok, ktorých obtiažnosť postupne rastie. Ku kažej otázke sú 4 možnosti, z ktorých vždy práve 1 je správna. Ak sa na otázku odpovie správne, postupuje sa na ďalšiu, ak nesprávne, tak hra končí. Hra Milionár sa môže ukončiť kedykoľvek a na akejkoľvek otázke. Na piatej a desiatej otázke sú garantované hranice. Ak sa odpovie nesprávne, klesne sa na najbližšiu nižšiu garantovanú hranicu resp. na nulu. Počas hry Milionár sú k dispozícii 3 žolíci: '50 na 50', 'zavolám známemu' a 'opýtam sa publika'. Žolíci sa môžu použiť v ľubovolnom poradí a na ľubovolných otázkach.
  • Vladimír Vojtek (A) - As High As You Can
    • Cieľom hry je vyletiet s raketou do čo najväčšej výšky. Raketa je ovládaná šípkami na klávesnici (doprava a doľava), pričom počas svojho letu stretáva zlé objekty (letiace predmety, ktoré poškodzujú raketu) a dobré objekty, ktoré opravujú raketu, resp. dopĺňajú benzín. Hra končí pri úplnom poškodení rakety alebo minutí všetkého benzínu.
  • Andrej Teťák (D) - Walking Dead
    • Popis: 2D strieľačka s cieľom eliminovať čo najviac zombíkov. Hráč postupne prechádza úrovňami kde získava nové zbrane a vylepšenia pričom obtiažnosť hry narastá.
  • -Peter Petráš (D) - Battle of the ring-
    • Bojové prevedenie hry človeče nehnevaj sa, s postavami z pána prsteňov. Pohyb po pláne ostáva nezmenený no pri strete figúrok dochádza k boju. Boj je založený na princípe súbojového systému Dračí doupě 1.6. Za zabitie každej postavy sa udeľujú body od 1 do 10 podľa sily postavy. Víťazí hráč s najväčším počtom bodov. Výnimkou je zničenie prsteňa alebo jeho odovzdanie Sauronovi.
  • -Martin Menkyna (D) - Pohyb telies-
    • (gravitacny) problem pohybu N telies
    • nejake blbosti k tomu, fakt neviem este presne popisat presne (elektricke pole, anihilacia...), ale hlavny ciel je ten problem N telies :)
  • Jakub Rodák (D) - Backgammon
    • Cieľom hry Backgammon je preniesť všetkých svojich 15 kameňov po vyznačenej dráhe najpv do vlastnej „ohradky“ a potom ich odstrániť z hracej plochy. Hráči sa striedajú, na začiatku každého ťahu hodí hráč oboma kockami a podľa výsledku hodu posunie niektorý svoj kameň (alebo kamene) o príslušný počet políčok smerom k ich cieľu. Na každom poli môže byť ľubovoľný počet kameňov jedného hráča (aj všetkých 15 na jednom poli). Ak však hráč ukončí ťah kameňom na poli, kde je jeden súperov kameň, „vyhodí“ ho, t. j. vráti ho až na začiatok jeho cesty, na tzv. bar. Na pole, na ktorom je viac ako jeden súperov kameň, sa ťahať nemôže. Kamene protihráčov sa pohybujú v navzájom protichodných smeroch. Keď má hráč všetky svoje kamene v poslednej časti hracej plochy, môže s nimi ťahať i mimo plochu, čím ich odstraňuje z hry. Hráč, ktorému sa podarí takto odstrániť všetky kamene, je víťazom.
    • http://sk.wikipedia.org/wiki/Backgammon
  • Denisa Dupláková (D) - Sokoban
    • Premiestnovanie krabiciek pomocou nejake figurky na vopred vyznacene miesto na ploche. hra by mala niekolko, napr. 10 levelov, ktore by hrac musel prejst pre uspesne skoncenie hry.
  • -Samuel Havadej (D) - Stratégia-
    • Real time stratégia pre jedného hráča v 2D grafike a s adaptabilným prostredím. o to sa chcem pokúsiť a dúfam že sa mi to aj podarí. Čo tam chcem využívať, je určite knižnica JPAZ2, ale aj mapovanie a nejakú tú umelú inteligenciu. Aspoň na nejakej primitívnej úrovni. Tak dúfam, že nebude až taký problém že som to poslal až takto neskoro.