cvicenie-4

Plán cvičenia

Cieľom cvičenia je pochopiť tieto pojmy z OOP:

Úloha 1

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.