Cieľom cvičenia je pochopiť tieto pojmy z OOP:
Vytvorte hru, v ktorej budú proti sebe bojovať 2 hráči. Hráč si môže vybrať charakter postavy (Knight, Barbarian, Ranger ). Jedná sa o ťahovú hru, tzn. v každej iterácii sa program spýta hráča či chce zaútočiť zbraňou alebo špeciálnou schopnosťou danou povahou postavy. Existujú 3 typy zbraní, ktoré sú určené pre jednotlivé postavy (Sword, Axe, Bow, v tomto poradí). Každá postava vie blokovať útok protivníka na základe svojich vlastností (atribútov).
Vytvorte triedu Player, ktorá reprezentuje 1 hráča. Táto trieda obsahuje generický typ Weapon. Každý hráč musí mať name, health a weapon. Zaručte, aby nemohol existovať hráč bez zadanej hodnoty atribútu name. Zaručte, aby Knight mohol používať iba zbraň Sword, Barbarian zbraň Axe a Ranger iba zbraň Bow.
Vytvorte triedu Weapon, ktorá bude mať abstraktnú metódu getDamage(). Každý typ zbrane musí mať inú implementáciu getDamage() v závislosti od atribútov typu zbrane. Každá zbraň musí mať nejaké atribúty, na základe ktorých sa vypočíta poškodenie. Napr. Bow môže mať počet výstrelov za minútu a rýchlosť vystreleného šípu. Poškodenie getDamage() sa vypočíta ako súčin týchto atribútov.
Pravidlá pre útok zbraňou:
Sila útoku = poškodenie zbraňou zmenšené o schopnosť blokovania útoku druhého hráča.
Health= Health – player1.damage*(1-player2.block())
Každá postava má iný typ blokovania (pravdepodobnosť, že sa útočník netrafí). Knight má veľkosť blokovania 0.2, Barbarian má náhodnú veľkosť bloku medzi 0.1 – 0.2 a Ranger nevie blokovať útok, t.j. blok=0:
Pravidlá pre útok špeciálnou schopnosťou:
Tento útok si môžete prispôsobiť podľa vlastnej predstavivosti. Napr. keďže Ranger nevie blokovať útok, tak pri aplikovaní útoku špeciálnou schopnosťou bude mať v nasledujúcom útoku 2-násobné poškodenie protivníka. Knight by mohol mať napr. v nasledujúcom útoku zväčšenú pravdepodobnosť blokovania útoku. Barbarian môže mať po aplikovaní špeciálneho útoku schopnosť zaútočiť v jednom ťahu 2-krát.
Necessary cookies are absolutely essential for the website to function properly. This category only includes cookies that ensures basic functionalities and security features of the website. These cookies do not store any personal information.