Endless runnery sa stali populárne na mobiloch, jedným z prvých bol Temple Run. Hráč neustále beží, vyhýba sa prekážkam a cieľom je zabehnúť čo najdaľej. Skúste si to implementovať v 3D, zaujímavé je generovanie nekonečnej trate.
Bodovanie:
Pre uznanie ako RP je potrebné splniť všetky podúlohy aj s bonusom (teda získať 15 bodov)!
Poznámka: pozrite si súbory z prednášky o JavaFX 3D, verím, že vám tam viacero vecí pomôže! Môžete použiť textúry z prílohy, alebo aj ľubovoľné iné (https://opengameart.org/ taktiež odporúčam texture packy z Minecraftu).
Voda padá v náhodných pramienkoch z vrchu. Plní nádoby a preteká. Simulácia sa dá zastaviť a spustiť. Obrázok je ilustračný a obsahuje chyby, vaša simulácia musí byť bezchybná, čiže každá nádobka sa musí správne naplniť než pretečie.
Úlohy:
[6 bodov] krásne spracovanie, pekné nádoby (vedierka, fontánky, kvetinky, whatever), prípadne iné objekty, budte kreatívni, môžu tam byť aj vrtuľky, rôzne farby vody, ktoré spolu reagujú... voda musí padať správne a nádoby sa správne plniť, simuláciu môžem stopnúť, zrýchliť, spomaliť, reštartovať
[4 body] editor: náhodný generátor, pridávanie objektov, posúvanie objektov, ukladanie a načítavanie týchto "layoutov"
[3 body] interaktivita: počas simulácie môžem klikať na nádoby a vylievať ich a podobne
[2 body] prázdne nádoby: niektoré nádoby môžu zostať úplne zakryté inými objektami, napíšte algoritmus, ktorý takéto nádoby nájde a označí v každom layoute, otestuje
Názov Elder Scrolls zahreje pri srdci nejedného fanúšika RPG hier, a to je len jedna z množstva úspešných hier, ktorá sa dá hrať aj z pohľadu prvej osoby. V tomto projekte skúsite niečo podobné, akurát v menšom merítku.
Poznámka: pozrite si súbory z prednášky o JavaFX 3D, verím, že vám tam viacero vecí pomôže! Použite priložené textúry/modely, alebo aj iné (https://opengameart.org/ taktiež odporúčam texture packy z Minecraftu)
Escape Room ste si možno skúsili aj na vlastnej koži, teraz si predstavte, že by na vás ešte číhali nejakí nepriatelia. V tomto projekte si skúsite naprogramovať jednoduchú Stealth hru (ilustračný obrázok je z hry Death Point).
Poznámka: pozrite si súbory z prednášky o JavaFX 3D, verím, že vám tam viacero vecí pomôže! Použite priložené textúry, alebo aj iné (https://opengameart.org/ taktiež odporúčam texture packy z Minecraftu)
2D grafov ste už za svoj život určite videli stovky, no čo 3D? Respektíve, skúšali ste už napr. pythonovský matplotlib na vykreslenie funkcie s dvoma vstupmi? V tomto projekte si vyskúšate tvorbu takéhoto jednoduchého vizualizátoru.
f(x, y) = z
Poznámka: pozrite si súbory z prednášky o JavaFX 3D, verím, že vám tam viacero vecí pomôže! Zdroj ilustračného obrázku: http://davud.rostam-afschar.de/graph3d/graph3d.htm
Jedna z výhod kryptomien je fakt, že záznam o každej transakcii je verejne dostupný, na tzv. blockchaine. Skúste si vizualizovať tieto transakcie v 3D grafe pre zopár adries kryptomeny Ethereum.
Poznámka: pozrite si súbory z prednášky o JavaFX 3D, verím, že vám tam viacero vecí pomôže! Definíciu si môžete mierne upraviť, hlavná myšlienka je zjavná - vizualizovať transakcie v 3D grafe.
Cieľom je vytvoriť edukatívnu hru pre deti 1.stupňa ZŠ, ktorá zobrazí ofarbenú kocku, a 4 rôzne ofarbené plášte kocky, pričom práve jeden zodpovedá ofarbenej kocke. Dieťa má úhádnuť, ktorá možnosť je správna. Samozrejme, kocka má niekoľko plášťov. Skúste si nájsť rôzne plášte kocky, keď ich máte menej ako prstov oboch rukách, tak pokračujte v hľadaní. Bez tejto prípravy príklad nie je pre vás. Teda, kocka má ?? plášťov a musíte ich nájsť a zaintegrovať do programu tak, aby váš program neponúkal len najtriviálnejšie plášte ako "kríž" a "Tčko".
Vyberte si jednu z variant 3D šachu zo Star Treku a implementuje ako hru pre 2 hráčov.
[7 bodov] pekné a rozumné zobrazenie a ovládnie hry pre 2 hráčov z jednej klávesnice (alebo myšou), vrátanie overenia dovolených ťahov, počítanie skóre (vyhodené figúrky) a vyhodnotenie konca hry
[4 body] pekná grafika, 3D s možnosťou otáčať hrací plán, vylepšené šikovné ovládacie prvky
[2 body] kreatívne vychytávky do hry: pozrite si Big Bang Theory diel The Wildebeest Implementation, kde Sheldon vymyslel 3-person chess s pridanými figúrkami, tunelmi, ...
[2 body] hráč si môže zahrať hru proti počítaču, vyžaduje AI, čím chytrejšia, tým viac bodov (v tomto prípade stačí aj pomerne hlúpa)
Rušná hodinka je logická hra na štvorcovej mriežke (napr. parkovisko), kde hráč posúva rôzne dlhé a zafarbené vozidlá, tak aby sa červené auto vyslobodilo. S miernou nadsádzkou, parkovanie v Petržalke je trochu na podobnom princípe, keď nezaradíte rýchlosť a ručnú, na to, aby sused mohol odsunúť vaše auto a vyparkovať. Naprogramujte hraciu plochu s touto hrou. Zahratjte si: http://www.dr-mikes-math-games-for-kids.com/online-traffic-jam-game.html
Hidato/Hidoku je hra, v ktorej máte prejsť štvorčekovú mriežku vypĺňajúc ju postupne číslami 1,2,3,... Krok môžete urobiť na stranou políčka alebo jeho vrcholom (teda diagonálne) na susedné políčko. Niektoré políčka však majú predpísané číslo, s ktorým na ne musíte vkročiť. Príklad zadania je vľavo na obrázku, a riešenie je vpravo.
Z určeného miesta obrazovky vychádza svetelný lúč. Ten buď zanikne mimo obrazovky, ak mu nič nestojí v ceste, odrazí sa od odrážacej prekážky a pokračuje v smere odrazu alebo skončí, ak dosiahne cieľový bod, prípadne blokovaciu prekážku. Skúste sa zahrať hru na tento spôsob, zvanú Reflector: https://www.mathplayground.com/logic_reflector.html a naprogramovať podobnú hru. V našej verzii nebudú dané fixné body, kam treba predmety uložiť a budeme mať viac typov predmetov.
V prípade, že sa rozhodnete pre túto tému a nie je vám niečo jasné, odporúčam pozrieť link vyššie, prípadne nejaký gameplay alebo mi môžte napísať.
[2 body] – Hlavné menu s možnosťami play/quit/choose level
[3 body] – Vykreslenie obrazovky zo súboru – pozadie, herná plocha, lúč, odrážacie objekty, cieľový bod (formát súboru je na vás)
[3 body] – Korektný odraz lúča od predmetu, prípadne jeho koniec ak dosiahne cieľový bod a ukladanie predmetov
[3 body] – Aspoň 3 rôzne levely s použitím aspoň 3 rôznych objektov (napr. štvorec, trojuholník, kruh, kosodĺžnik...)
[3 body] – Špeciálny level alebo levely – bude obsahovať ešte nejaký jeden alebo viac prvkov navyše, napríklad viac koncových bodov (cez každý musí prejsť laser, a teda skončí len v tom poslednom), viac laserov (každý musí dosiahnuť nejaký cieľový bod), blokovacie prekážky (nedá sa s nimi pohnúť a laser sa od nich neodrazí, ale zanikne)...
[1 bod] - Bonusová funkcionalita, viď nižšie
Ako bonusová funkcionalita sa myslí dodatok, ktorý obohacuje hru v nejakom zmysle. Fantázii sa medze nekladú, vymyslieť môžte hocičo hodné bodu. Príklady takýchto funkcionalít:
- highscore časov prejdenia levelov spolu s jeho ukladaním do súboru a zobrazovaním na obrazovke- zvuky v hre, napr. rôzne zvuky odrazu od rôznych predmetov, pri prekrížení laserov atď- ďalší level navyše, pričom obsahuje všetky prvky navyše spomenuté pri špeciálnom leveli - iné funkcionality hodné bodov
Z bonusových funkcionalít sa ráta len jedna do bodu, ktorý garantuje, ale v prípade, že stratíte či nezískate nejaký bod v inej z úloh, môžte získaťešte jeden bod za ďalšiu funkcionalitu navyše (maximálne ale stále 15).
V stolovej hre Quoridor hrajú dvaja alebo štyria hráči, ktorých úlohou je prejsť svojou figurkou z jednej strany hracej dosky na druhú skôr ako súperi, pričom do cesty si kladú prekážky. Pravidlá nájdete tu: https://en.wikipedia.org/wiki/Quoridor
Zahrajte si najprv: https://danielborowski.github.io/site/quoridor-ai/display.html
Hexxagon je logická hra, určená primárne pre dvoch hráčov. Princíp hry spočíva v prehadzovaní a klonovaní kamienkov. V hre umiestňujete kamene, kopírovaním alebo skákaním a vyhráva hráč, ktorý má viac kameňov. Pokiaľ preskočíte cez 2 políčka, prvé stratíte a ostane Vám len druhé. Pozrite si starú hru a vytvorte rožšírenú variantu, kde hracia plocha môže byť ľubovoľný planárny graf.
[8 bodov] hra s pekným grafickým prostredím, ovládanie z jednej klávesnice, počítanie skóre a vyhodnotenie konca hry, načítanie grafu plochy zo súboru, testovacie súbory s rôznymi grafmi
[3 body] kreatívne vychytávky do hry: rôzne typy kameňov, tunely, pasce, ... ale aj návod na hranie s takýmito vychytávkami
[4 body] hráč si môže zahrať hru proti počítaču, vyžaduje nejakú AI, čím chytrejšia, tým viac bodov
Shirokuro je japonská hra, v ktorej na hracej ploche spájate biele a čierne body a len vodorovnými alebo zvyslými úsečkami, ktoré sa navyše nemôžu križovať. Tu vidíte príklad zadania aj riešenia (zo stránky). Na uvedenej adrese si môžete hru zahrať, stačí si vybrať konfiguráciu, podľa veľkosti, resp. obtiažnosti. Javasciptové riešenie vám dovolí hru zahrať si, vrátiť sa o niekoľko krokov späť, overiť, či vaše riešenie je koreknté, aj poskytnúť hint k riešeniu. Vaše riešeniu musí ponúkať podobný komfort.
V tomto projekte skúsime naprogramovať jednu z populárnejších menších hier pre dvoch - Fireboy and Watergirl. Zahrať sa môžte napr. na https://fireboywatergirl.org/
V hre je možné ovládať dve postavy, v našom prípade necháme ovládanie na WSAD a šípky. Každá z týchto postáv má špecifické vlastnosti - ktoré jej buď pomôžu, alebo práve naopak. Prvá z nich, Fireboy alebo oheň, má schopnosť prechádzať lávovým poľom, ale hocijaký kontakt s vodou ho okamžite zničí. Voda, alebo Watergirl, naopak nemá problém prechádzať cez jazerá či iné vodné plochy, ale stačí dotyk s lávou a vyparí sa. Obidva charaktery ale zničí kyselina. Môžme teda vidieť, ako sa charaktery dopĺňaju svojimi silnými stránkami a kompenzujú tými slabými. Okrem týchto možno doprogramovať aj iné vlastnosti či objekty do hry.
Cieľom hry je dostať sa s oboma postavami na koniec levelu, pričom musia prekonávať rôzne prekážky a často aj spolupracovať na to, aby dokázali prežiť.
Úlohou bude naprogramovať zopár levelov, pričom sa samozrejme nepredpokladá, že obrázky či zvuky budú presne rovnaké ako v pôvodnej hre, ale aspoň nejakú úroveň mať budú.
[2 body] - Základné menu s možnosťami Play/Choose Level/Exit (príp. Load a Highscore)
[2 body] - Postavy - funkčnosť (plynulý pohyb oboch postavičiek do strán, skoky, špecifické vlastnosti), vizuál (obrázok, príp. animácia)
[3 body] - 3 levely s miernou gradáciou obtiažnosti a obstojnou grafikou, pričom každý level bude predstavovať iná mapa
[2 body] - Pridanie prekážok či objektov - páky, tlačidlá, dvere... môžte sa inšpirovať hrou či vlastnou fantáziou
[1 bod] - Pridanie kyseliny, teda zeleného jazierka s vlastnosťou, že pri dotyku ľubovoľnej postavy daná postava zahynie.
[3 body] - Dodatkový 4. level, ktorý naozaj preverí schopnosti hráčov (t.j. treba pri ňom logicky uvažovať, záleží na poradí vykonávaných akcií s tlačidlom, krabicou či inými objektami, postavy nezačínajú pri sebe a spoja sa až na konci levelu atď)
[1 bod] - Možnosť ukladania a načítania hry (minimum obsahu - číslo levelu)
- highscore časov prejdenia levelov spolu s jeho ukladaním do súboru a zobrazovaním na obrazovke- zvuky postavičiek pri skoku, akcii a smrti- bonusové predmety na mape, ktoré nejako pozmenia aspekt hry či schopnosti postavičky, - dodatočné vlastnosti oboch postavičiek, napríklad vyšší skok jednej z postáv, ale pomalší pohyb, u druhej naopak...- iné funkcionality hodné bodov
Tento projekt bude založený na pôvodnej populárnej hre The binding of Isaac a jeho hlavným prvkom bude NÁHODA. Trochu si ju upravíme a zjednodučíme pre naše potreby, ale základný princíp a gameplay môžte nájsť napríklad tu: https://en.wikipedia.org/wiki/The_Binding_of_Isaac_(video_game)#Gameplay, odporúčam pozrieť aj nejaké video k tomu.
Hra začína postavičkou v prázdnej miestnosti. Tu môžme ovládať pomocou kláves WSAD, strieľať môžme pomocou medzerníka. Postavička bude strieľať tým smerom, ktorým je otočená (hore/dole/doprava/doľava). Jej rýchlosť, HP ako aj rýchlosť strieľania či iné jej vlastnosti budú od začiatku dané. HP bude niekde na obrazovke zobrazené.
Začiatočná prázdna miestnosť (teda ak nerátame postavičku v nej) bude jediná prázdna miestnosť na celej mape. Mapa sa bude skladať z NÁHODNÉHO počtu miestností v nejakom rozumnom rozmedzí, napr. <3, 7>. Medzi miestnosťami sa dá hýbať cez dvere, ktoré spájajú dve miestnosti. Môžte si pomôcť a natvrdo vytvoriť zopár máp a z nich potom NÁHODNE vybrať, alebo môžete mapu zakaždým vytvárať nanovo (a NÁHODNE). Výber je na vás.
Na mape bude ešte jedna špeciálna miestnosť - v nej bude tzv. boss, teda hlavný nepriateľ. Ten bude NÁHODNE zvolený s nejakého preddefinovaného výberu. Každý boss bude mať iné vlastnosti a vzhľad a cieľom celej hry bude zničiť ho. Akonáhle sa tak stane, hra sa skončí, resp. sa pokračuje na ďalší level, teda inú mapu.
V ostatných miestnostiach budú základní nepriatelia. Ich počet v každej miestnosti je NÁHODNÝ, ale z opäť z nejakého rozumného rozsahu (napr. <1-4>). Čim viac typov základných nepriateľov (teda s inými vlastnosťami a vzhľadom), tým lepšie. Pri vstupe do miestnosti s nepriateľmi sa zatvoria všetky dvere v miestnosti a otvoria sa až keď hráč zničí všetkých nepriateľov v danej miestnosti. Akonáhle sa tak stane, dvere sa otvoria a hráč môže prejsť do inej miestnosti. Po zničení nepriateľov môžu s nejakou pravdepodobnosťou spadnúť NÁHODNÉ predmety, ktoré nejako ovplyvnia hru alebo postavičku (zvyššia/znižia HP, rýchlosť streľby atď.).
Na začiatku novej hry sa určia všetky potrebné veci pre hru. To zahŕňa NÁHODNÝ výber mapy, postavy (ak teda vytvoríte viac postáv), nepriateľov v miestnostiach, bossa. To, či a aké predmety nepriatelia nechajú po ich zničení môžte určiť pri ich zničení. Každý typ postavy, nepriateľa či bossa bude mať nejaké špecifické hodnoty vlastností - to môžte určit natvrdo. Jedná sa o rýchlosť pohybu, strieľania, maximálny dosah streľby...výber je na vás. Všetci ale budú mať nejakú hodnotu HP - teda života, inak povedané, koľko nábojov treba na to, aby boli zničení.
Na vizuál sa v tomto projekte nebude až tak dbať, je ale potrebné, aby projekt obsahoval nejaké obrázky a všetky postavy či predmety sa dali jednozačne rozoznať. Taktiež logika nepriateľov nemusí byť na nejakej extra úrovni, pohyb a streľba základných nepriateľov môže byť NÁHODNÁ.
[3 body] - Postavy - funkčnosť (plynulý pohyb, strieľanie, aspoň 3 špecifické vlastnosti), vizuál. Každá postava za bod, maximum ale 3 body
[3 body] - Základní nepriatelia - funkčnosť (plynulý pohyb, strieľanie, aspoň 2 špecifické vlastnosti), vizuál. Každý nepriateľ za bod, maximum ale 3 body
[2 body] - Bossovia - funkčnosť (plynulý pohyb, strieľanie, aspoň 3 špecifické vlastnosti), vizuál. Každý boss za bod, maximum ale 2 body
[2 body] - Predmety, ktoré nejako ovplyvňujú hru, viď hore. Každý predmet za bod, maximum ale 2 body
[2 body] - Mapy s aspoň trochu obstojným vizuálom a správnou funkcionalitou (prepojenia miestností, obsah miestností atď), pričom platia ich vlastnosti spomenuté vyššie
[1 bod] - Správne vyhodnotenie konca hry či smrti postavy.
[1 bod] - Miestnosti obsahujú prekážky, cez ktoré sa nedá prejsť, napríklad kameň či jamy.
Ako bonusová funkcionalita sa myslí dodatok, ktorý obohacuje hru v nejakom zmysle. Fantázii sa medze nekladú, vymyslieť môžte hocičo hodné bodu. Príklady takýchto funkcionalít:-pohyb a streľba bossov nie je úplne NÁHODNÁ, ale má aspoň trošku rozumné vylepšenie (napr. strieľaj tým smerom, kde je postavička, utekaj, ak máš málo života atď.) - hra obsahuje zvuky streľby a úmrtia postavy/nepriateľa- highscore časov prejdenia levelov spolu s jeho ukladaním do súboru (takéto highscore sa potom zobrazí v ľavom hornom rohu obrazovky hry)- minimapa v pravom hornom okraju obrazovky - ukazuje iba zatiaľ navštívené miestnosti v skutočnom rozložení- viac levelov - po prejdení jedného levelu sa postava premiestni na novú mapu a ide odznova, ale jej vlastnosti (aj pozmenené) zostávajú zachované- iné funkcionality hodné bodov
Ste malá ryba v oceáne. Všade naokolo veľké hrozivé ryby. Čo spravíte, aby ste prežili? Stanete sa ešte väčšiou a hrozivejšou! V tomto projekte napodobníme úspech oddychovky Feeding Frenzy, arkádovo-štylizovanej hry starej už skoro 20 rokov. Zahrajte sa: https://kbhgames.com/game/feeding-frenzy
Hru budeme ovládať len pomocou myše. Ňou budete ovládať svoju rybu - spočiatku malú, o prežitie bojujúcu rybu, ktorá sa ale s vašou pomocou zmení na vládcu oceána (alebo aspoň rýb :)). Pohybovať sa s ňou môžete len v priestore obmedzenom oknom. Do okna budú plávať aj iné ryby - všetkých možných veľkostí. Princíp prežitia bude jednoduchý - pri kontakte dvoch ľubovoľných rýb (nielen hráčovej s inou!) sa jedna ryba eliminuje - a to vždy tá menšia. V prípade, že narazia na seba dve rovnako veľké ryby, tak každá z nich bude mať šancu prežiť presne 50 % (prežije vždy len jedna). Hráč taktiež získava body na základe veľkosti zožratej ryby.
V tejto hre sa taktiež viac pohráme s vizuálom - Každá veľkostná kategória ryby bude mať iný obrázok (potencionálne aj vlastnosti). Hráčova ryba bude mať špecifický obrázok, ktorý sa bude zväčšovať tak, ako ryba rastie (v prípade, že by zväčšený obrázok vyzeral zle, tak ho môžte nahradiť iným, alebo začať zmenšovať ostatné ryby a ich obrázky). Hráč dosiahne výhru, ak jeho ryba dosiahne špecifickú veľkosť - teda zožerie určitý počet rýb. Zväčšovanie ryby môžte spraviť iteratívne (jemné zväčšenie po každom zožratí ryby) alebo po častiach (ryba sa zväčší až po zožratí špecifického počtu rýb). V oboch prípadoch ale musí byť jasné, ktorá ryba je väčšia a teda bude mať navrh (až na prípad rovnosti).
Level bude trvať presne 60 sekúnd. Po ich uplynutí (alebo hráčovej smrti) hra končí a zobrazí sa výsledné skóre. Pri hráčovej smrti sa skóre vypočíta jednoducho ako score = score/2. Ak je toto skóre najlepšie aké doteraz bolo, zapíše sa ako highscore. Pozor, highscore sa musí zapamätať aj pri vypnutí a zapnutí programu.
[2 body] - Hlavné menu s možnosťami Play/Quit (príp. Choose Level)
[2 body] - Vykreslenie levelu s pomocnými informáciami v hornej časti obrazovky (veľkosť hráčovej ryby, skóre, highscore...)
[2 body] - Plynulý pohyb myšou po obrazovke, pričom hráčova ryba je na kurzore (alebo ho predstavuje) myši
[3 body] - Generovanie a pohyb rýb v oceáne - tie prídu z jednej strany obrazovky a hýbu sa na druhú stranku, kde zmiznú, pričom sa generujú náhodnej veľkosti s náhodnou rýchlosťou
[2 body] - Správne riešenie kontaktu ľubovoľných rýb, v prípade kontaktu s hráčovou rybou aj započítanie skóre, zväčšovanie rýb
[2 body] - Viac levelov, ktoré sa líšia v designe a v druhoch rýb (každý level môže mať úplne iné ryby alebo zdieľané skupiny), predpokladá sa gradácia obtiažnosti
[1 bod] - Ukladanie a načítavanie highscore do súboru
Ako bonusová funkcionalita sa myslí dodatok, ktorý obohacuje hru v nejakom zmysle. Fantázii sa medze nekladú, vymyslieť môžte hocičo hodné bodu. Príklady takýchto funkcionalít:- hra obsahuje zvuky zožratia, pohybu a smrti - v prípade zožratia taktiež možno občas zobraziť nejaký vtipný text v bubline pri rybe (ako napríklad v originále - Yummy!) - pokročilejšie levely obsahujú pokročilejších nepriateľov - napr. žralok (proti nemu vždy ryba prehrá), alebo jedovatá ryba (jed určitú dobu pomaly zmenšuje rybu ktorá ju zožrala - ak bude veľkosť 0, hráč prehral, preto potrebuje veľa jesť) a iné- hráčova ryba môže po zjedení veľkého počtu rýb mať špeciálne vlastnosti - napr. sa môže na 10 sekúnd zrýchliť, vyhrať pri hocijakom kontakte s hocikým....- iné funkcionality hodné bodov
Hit od vydavateľa PopCap, ktorý sa stal večnou klasikou a hralo ho skoro každé dieťa - a my ho teraz skúsime napodobniť. Pre tých, ktorí náhodou túto hru ešte nevideli, je link tu: https://en.wikipedia.org/wiki/Plants_vs._Zombies alebo množstvo videí či článkov na internete.
Pointou hry je ubrániť sa od postupných vĺn zombií. Nie je to však typický "tower defense" štýl, keďže hra vyžaduje sústavnú pozornosť hráča hlavne počas vĺn a nie pred nimi. Každý level začíname s prázdnou mapou (v originálnej hre to bol trávnik) s piatimi cestami. Tie vedú horizontálne sprava doľava, teda tým smerom pôjdu nepriatelia - zombie. Pred každou vlnou nepriateľov si môžme zvoliť z obmedzeného výberu určitý počet druhov rastlín, ktoré si do prichádzajúcej vlny zoberieme. Po potvrdení výberu začína vlna.
V každej vlne začíname s určitým počtom slnečných lúčov (povedzme 100), za ktoré môžeme sadiť rôzne typy rastlín. Lúče sa postupne počas vlny dopĺňaju zbieraním (na mape sa raz za čas objaví 50 lúčov náhodne alebo z rastliny, pozbierame ho kliknutím naň). Rastliny môžme zasadiť len v počte 1 kus na 1 políčko (políčok je počet riadkov * 9 = 45). Každá rastlina ma po zasadení iné schopnosti a má nám pomôcť prežiť vlnu nepriateľov (rastliny môžu strieľať na zombie, žrať zombie, generovať slnečné lúče, slúžiť ako mína atď...).
Nepriatelia sa postupne zjavujú v pravej časti obrazovky v rôznych riadkoch a idú postupne doľava. Ak nejaký nepriateľ dosiahne ľavú stranu obrazovky, tak sme prehrali. Títo nepriatelia sú zväčša pomalí (sú to predsa zombie), napriek tomu treba voliť dobre stratégiu aby hráča ich počet neprevalcoval. Ak počas svojej chôdze nepriateľ narazí na nejakú rastlinu, musí ju najskôr zožrať - čo môže trvať rôzne dlho v závisloti od rastliny.
Každý typ zombie aj rastliny bude mať dva hlavné aspekty - špeciálne schopnosti a HP. HP je počet úderov/nábojov, ktoré znesie (môžme nastaviť napr. max 1 úder/výstrel za sekundu), schopnosti sú to, čo dané typy rozlišuje vo funkcii schopnosti rastlín boli spomenuté vyššie, zombie sú nižšie).
Level končí po prežití celej vlny, počas ktorej sa zjaví určitý počet nepriateľov alebo po našej prehre. Počet nepriateľov a ich typ závisí od levelu (typy zombie môžu byť napríklad klasický pomalý, rýchly, zombie čo dokáže preskočiť prvú rastlinu, na ktorú natrafí, obrnený zombie).
V tomto projekte sa posnažíme čo najviac napodobniť túto hru, pričom grafika nebude najdôležitejším aspektom (ale stále aspektom bude!)
[2 body] - Vykreslenie levelu s pomocnými informáciami v hornej časti obrazovky (druhy rastlín, počet slnečných lúčov, zostávajúci počet nepriateľov...)
[2 body] - Plynulé a správne ovládanie myšou (kliknutie pre zobratie lúča, drag-and-drop pre zasadenie rastliny)
[3 body] - Generovanie, pohyb, vizuál a funkčnosť zombie nepriateľov - tí prídu z pravej strany obrazovky a hýbu sa na druhú stranu, kde zmiznú, pričom ak narazia na rastlinu pred nimi, musia ju najskôr zožrať. Každý typ zombie za bod, maximum ale 3 body
[3 body] - Rastliny - funkčnosť (špecifické vlastnosti), vizuál. Každá rastlina za bod, maximum ale 3 body
[1 bod] - Viac levelov s rôznymi nastaveniami počtu a typov nepriateľov a rastlín
[1 bod] - Správne vyhodnotenia konca levelu (prehra/výhra)
Ako bonusová funkcionalita sa myslí dodatok, ktorý obohacuje hru v nejakom zmysle. Fantázii sa medze nekladú, vymyslieť môžte hocičo hodné bodu. Príklady takýchto funkcionalít: - highscore časov prejdenia levelov spolu s jeho ukladaním do súboru- rôzne veľkosti levelov, prekážky na políčkach- zvuky sadenia, jedenia rastlín a strieľania, príp. výbuchov (v rozumnom množstve aby sa moc neprehlušovali)- iné funkcionality hodné bodov
Naprogramujte klon oddychovky Alto's Adventure. Prejdite si aspoň 3 levely, princíp rýchlo pochopíte.
Čo má fungovať:
Pekná grafika, hudba, lamy, wingsuit potešia (a môžu zlepšíť body), no nie sú nevyhnutné.
Naprogramujte klon hry Osmos (zahrajte sa trochu:). Pri originálnej hre sa "kamera" hýbe po hracej ploche spolu s hráčom - toto implementovať nemusíte a namiesto toho zobrazte celú plochu naraz. Dôležitým prvkom hry je pohyb našej bunky a pohlcovanie iných, do čoho je zamontovaná celkom uveriteľná fyzika. Môžete použiť napr. tieto moje vzorce (odvodené zo zákona zachovania hybnosti) :
Pri pohybe moja bunka "vypľúva" malé bunky opačným smerom (všetky sú konštantnej hmotnosti \(m_{out}\) a rýchlosti \(v_{out}\)). Moja rýchlosť a hmotnosť sa teda zmení:
\[ m_{po} = m_{pred} - m_{out} \quad;\qquad v_{po} = (v_{pred}.m_{pred} - v_{out}.m_{out})/m_{po} \]
Keď sa veľká bunka (\(V, M\)) dotkne malej (\(v, m\)), každú sekundu z nej vysaje kúsok hmotnosti (\(\Delta m\)). Ich vlastnosti sa zmenia:
\[ m_{po} = m_{pred} - \Delta m \quad;\qquad v_{po} = v_{pred} \]
\[ M_{po} = M_{pred} + \Delta m \quad;\qquad V_{po} = (V_{pred}.M_{pred} + v.\Delta m)/M_{po} \]
Veľkosť bunky sa samozrejme odvíja od jej hmotnosti, napr. \(r = a.\sqrt{m}\), kde \(a\) je nejaká vhodná bulharská konštanta (fyzikálne má niečo spoločné s hustotou).
Za bonusové body sú kvalitne spravení nepriatelia (tí zelení v pôvodnej hre) alebo levely s gravitáciou (tam si už fyziku zistite sami).
Majme zaznamenané N-árne stromy, ktoré čítame z nejakých súborov, ale vždy vidíme len nejakú malú časť. Napríklad ako keby sme čítali JSON alebo XML súbor skrolovaním dokumentu v malom okne prehliadača. Časti stromu prečítame a doplníme do existujúcej štruktúry. Problém je, že treba identifikovať, ktorá časť z práve videného podstromu sa už nachádza v pamäti a na ktoré miesto sa má preniesť a "prilepiť". Naprogramujte algoritmus, ktorý nájde správne miesto na ktoré prilepí práve prečítaný podstrom. Zvoľte vhodnú reprezentáciu. Nájdite alebo vytvorte dataset, na ktorom to budete ilustrovať a vyrobte vizualizáciu, ktorá zobrazí prilepovanie stromu v krokoch čítania. Neváhajte sa ozvať s prípadnými otázkami, typy stromov alebo spracovaných dát vieme upresniť.
[6 bodov] vlastná reprezentácia stromu, načítanie stromu po sekvenciach hĺbky h (parameter v kóde), overenie na dátach, že to funguje, nejaký rozumný výpis
[3 body] vykreslenie lepenia stromov ako animácia, nejake triviálne ovládacie prvky ako pause, play, rýchlosť.
[2 body] načítanie ľubovoľného stromu z human readeble súboru (napr. načítať JSON alebo XML) alebo viacerých nadväzujúcich súborov (aj s testovacími príkladmi súborov)
[2 body] moznosť meniť strom (odrezať, prevesiť) a ukladať zmeny
[2 body] vyhodnotenie vyváženosti načítaného stromu, porovnanie 2 zlepených stromov (diff) alebo iné advanced vychytávky (dohoda možná)
Adaptujte známu kooperatívnu stolovú hru Pandemic pre momentálnu situáciu doma a vo svete. Naštudujte a ak máte možnosť zahrajte si túto výbornú stolovku a vymyslite ako ju urobiť pre PC. Vaše prevedenie nemusí mať rovnakú komplexnosť ako pôvodná hra. S radosťou poskytnem feedback a komentáre na navrhované riešenie ešte v stave plánovania.
[9 bodov] hra má layout, herný plán podľa originálnej stolovky, funguje na ťahy a udalosti podľa stolovky a môže ju hrať aspoň jeden hráč za 1 PC (idálne už v tejto fáze mať viac hráčov), počítanie skóre a vyhodnotenie konca hry, ukladanie rozohranej hry (toto je tiež dôležité lebo to nie je hra na 5 minút), dobrá ovládateľnosť a hrateľnosť, berte to tak, že sa to potom určite radi zahráte s kamarátmi
[3 body] grafické prevedenie a efekty
[3 body] editor: pridávanie a odoberanie miest, spôsobov dopravy, ukladanie a načítavanie zmenených layoutov
Vytvorte klon klasickej hry Lemmingovia.
V nej má hráč za úlohu bezpečne previesť N lemmingov zo štartu (odkiaľ padajú) do cieľovej brány. Samotní lemmingovia však chodia stále iba rovno, kým nenarazia na stenu, potom sa otočia a idú do opačnej strany.
Hráč musí jednotlivým panáčikom prideľovať úlohy tak, aby vytvoril trasu do cieľa, napr. "ty vykop dieru", "ty stavaj schody", "ty vybuchni", ...
Čo má fungovať aby ste mali 15 bodov:
Pekná grafika, hudba, veľa typov lemmingov, alebo ľubovoľná kreatívna práca navyše potešia (a môžu zlepšíť body), no nie sú nevyhnutné.
Conway's Game of Life je jednoduchý tzv. celulárny automat (neplašte sa, s UTI to má málo spoločného), kde máme bunky v mriežke, a každá bunka sa buď narodí alebo umrie podľa toho, koľko buniek je okolo nej.
Úlohou je naprogramovať aplikáciu na vizualizáciu alternatívnej verzie - Game of Life na šesťuholníkovej mriežke:
Požiadavky:
Ďalšie detaily/otázky mailom alebo osobne.
Vytvorte hlavolam, v ktorom bude hráč z dostupných dielov skladačky skladať požadovaný tvar.
Ako bonus môžete spraviť napr. hlavolamy s oblými hranami, alebo rozumne fungujúci generátor náhodných hlavolamov (ich obtiažnosť by mala byť netriviálna).