Prog1 Géptermi ZH, 2019.05.24.

1.feladat

Egy társasjátékban a játékosok képességkártyákat játszhatnak ki, amivel képességet szereznek vagy váltanak le.

a) Alapfeladat

Ez a feladatrész a beugró, ha ez nem készül el, a ZH érvénytelen.

Oldd meg a kártyák kijátszását, ahol a programnak kezelnie kell, hogy a játékosnak milyen aktuális képességei vannak. A képességeket kategóriákra osztjuk, egyszerre egy kategóriából egy képességkártya lehet aktív. Egy kártya egyszerre több kategóriába is tartozhat, pl. egy "teljes páncél" kártya egyszerre lehet a mellvért és a sisak kategóriában.

Egy lehetséges példa kód:


Jatekos j;
Kartya k1("Csizma");
k1.kategoria_hozzaad("labbeli");
Kartya k2("Szandal");
k2.kategoria_hozzaad("labbeli");
Kartya k3("Kupak");
k3.kategoria_hozzaad("sisak");
Kartya k4("Buvarruha");
k4.kategoria_hozzaad("sisak");
k4.kategoria_hozzaad("labbeli");
j.kijatszik(k1);
j.kepesseg_kiir(); // labbeli: Csizma
j.kijatszik(k3);
j.kepesseg_kiir(); // labbeli: Csizma, sisak: Kupak
j.kijatszik(k2); // kidobni: Csizma
j.kepesseg_kiir(); // labbeli: Szandal, sisak: Kupak
j.kijatszik(k4); // kidobni: Szandal, Kupak
j.kepesseg_kiir(); // labbeli: Buvarruha, sisak: Buvarruha

Az érvényességhez tehát az alábbiaknak kell teljesülniük

  • kártya képességek kezelése
  • játékos képességek kezelése

    Az érvényességhez NEM szükséges interaktivitás, menü, grafikus felület. Érdemes inkább olyan main() függvényt mutatni, amivel tesztelhető az adatszerkezet működésének helyessége.

    b) Feltételes kártyák, másik játékos elleni kártyák

    Lehessen olyan kártyákat definiálni, amik csak akkor játszhatóak ki, ha a játékos valamely képessége aktív. Demonstráld a kijátszás hibaüzenetével az ellenőrzést. Egy kártya kijátszható lehessen másik játékosra: képesség megváltoztatása, megszüntetése.

    c) Értékek

    A képességekhez rendeljünk mértéket, és a kártyákhoz számokat, például a "Szandál" 1-es lábbeli, a "Csizma" 2-es. A képesség kiíró az értékeket is írja ki. Legyen egy függvénye a játékosnak, amelyik kártyák egy halmazából kiválasztja a leghasznosabbat a jelenlegi állapotához képest. Ez a saját értékek ellenféllel szembeni maximalizálását célozza.

    Pontozás

    A ZH érvényes, ha az 1.feladat a) része működik. A tökéletes a) b) és c) feladatrészek megoldásai 10+10+10 pontot érnek, +10 pont kapható a félévben tanult kódminsőget illető nyelvi elemek használatáért (pl. láthatóságszabályozás), ezt felülről korlátozza a funkcióra kapott összpontszám. 10 pont szerezhető a kiegészítős feladatból. 10 pontot ér a grafika. Ez összesen 60 pont.