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.