Autor: Mateorid
Implementujte jednoduchou střílecí hru alespoň jednoho hráče proti počítači.
Hra musí splňovat následující funkcionality:
- Objekty, které je možné zničit (nepřátelské jednotky, statické barikády)
- Pohybovat s hráčem (chůze panáčka, let vesmírné lodi, páčka na odrážení míčků)
- Po zničení objektu s určitou pravděpodobností zůstane bonus, implementujte několik různých bonusů (munice, rychlejší nabíjení,...)
- Implementujte jednoduchý "fyzikální" model (setrvačnost lodi, gravitace, odrážení, nabíjení zbrani,...)
- Implementujte načítání (generátoru) mapy ze souboru a ukládání nejlepších skóre do souboru.
Kde lze využít polymorfismus? (doporučené)
- Rozdělení objektů: (ne)pohyblivý, hráč vs. nepřítel
- Různé bonusy: munice, silnější zbraně, zdvojení zbraní, rychlejší přebíjení,...
- Uživatelské rozhraní: konzole, ncurses, SDL, OpenGL (různé varianty), ...
Jedná se o klasickou hru Arkanoid. Cílem hry je zničit všechny bloky a nenechat míček "spadnout" na zem. Hra se ovládá šipkami (pohyb platformy doleva, doprava), mezerníkem (vypuštění míčku) a escapem (ukončení hry).
Jednotlivé herní objekty jsou implementovány jako dědicové třídy GameObject
, ve které se nacházejí
všechny základní a nutné informace. Jednotliví dědicové si potom přidávají další potřebné informace a metody, popřípadě
přetěžují metody třídy GameObject
.
Herní smyčka se nachází ve třídě Game
, která zároveň spravuje i herní okno a objekty.
Rozmístění bloků se bude dát načítat ze souboru pomocí třídy MapLoader
a bude uloženo ve třídě Map
.
Polymorfismus se nachází ve třídě GameObject
, která obsahuje několik plně virtuálních metod. Metody Init
a
Update
jsou ty, ve kterých se nachází polymorfismus. Ve třídě Ball
slouží metoda Update
k udržení setrvačnosti
míčku a případné změně směru (kolize se stěnou). Ve třídě Bonus
slouží tato metoda k vytvoření "gravitace" (bonus padá k zemi).
Dále třída Block
má přetíženou metodu Render
, kvůli využití sprite textury u této třídy (potřebujeme vědět kterou část textury chceme zobrazit).
Polymorfismus pro bonusy zde nemám. Různé bonusy zatím řeším switchem. Pokud se to stane nepřehledné (velmi pravděpodobné), implemtuji jej.
Implementovat jiné uživatelské rozhraní nehodlám (musím mít čas na Overwatch C: ), v úvaze je ale přidání menu s nastavením a tlačítkem "play"