RESIDENT EVIL CODENAME: NIK

Hasonló dokumentumok
C# Nyelvi Elemei. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) C# Nyelvi Elemei / 18

A következő táblázat tartalmazza az egyes fajták jellemzőit.

OOP: Java 8.Gy: Abstract osztályok, interfészek

Objektumorientált programozás C# nyelven

3. Osztályok II. Programozás II

OOP: Java 8.Gy: Gyakorlás

Algoritmusok, adatszerkezetek, objektumok

OEP Gregorics Tibor: Minta dokumentáció a 3. házi feladathoz 1. Feladat. Elemzés 1

Programozási nyelvek Java

OOP #14 (referencia-elv)

Interfészek. PPT 2007/2008 tavasz.

Szoftvertechnolo gia gyakorlat

Bevezetés a Python programozási nyelvbe

JUnit. JUnit használata. IDE támogatás. Parancssori használat. Teszt készítése. Teszt készítése

JAVA PROGRAMOZÁS 2.ELŐADÁS

Programozási nyelvek II. JAVA

Programozás I. 5. gyakorlat. Szegedi Tudományegyetem Természettudományi és Informatikai Kar

Tájékoztató. Használható segédeszköz: -

Gyakorlati vizsgatevékenység A

Programozási technológia I. 1. beadandó feladatsor

Programozás alapjai gyakorlat. 4. gyakorlat Konstansok, tömbök, stringek

Smalltalk 3. Osztályok létrehozása. Készítette: Szabó Éva

Programozási alapismeretek 4.

Programozás I. Gyakorlás egydimenziós tömbökkel Többdimenziós tömbök Gyakorló feladatok V 1.0 ÓE-NIK-AII,

Programozás I ZH, Név:... A. csoport EHA: pont Gyakorlatvezető:...

Objektum Orientált Programozás. 11. Kivételkezelés 44/1B IT MAN

Programozás III KIINDULÁS. Különböző sportoló típusok vannak: futó, magasugró, focista, akik teljesítményét más-más módon határozzuk meg.

OOP: Java 11.Gy: Enumok, beágyazott osztályok. 13/1 B ITv: MAN

Számítástechnika II. BMEKOKAA Előadás. Dr. Bécsi Tamás

Már megismert fogalmak áttekintése

Programozás 2. gyakorlat

OE.Prog2.Jatek.Jatekter névtéren belül készítsük el az alábbiakat: Új osztály: JatekElem. A JatekElem osztályt egészítsük ki az alábbiakkal:

Osztályok. 4. gyakorlat

Java programozási nyelv 5. rész Osztályok III.

Programozás I gyakorlat

C++ programozási nyelv

Tájékoztató. Használható segédeszköz: -

ELTE SAP Excellence Center Oktatóanyag 1

Programozási nyelvek Java

Rendszerterv. Makoviczki András. Neptun: JJ26AR

C++ programozási nyelv Konstruktorok-destruktorok

7. K: JAVA alapok Konzultáció

Globális operátor overloading

Space Invaders Dokumenta cio

Web-programozó Web-programozó

és az instanceof operátor

Java VIII. Az interfacei. és az instanceof operátor. Az interfészről általában. Interfészek JAVA-ban. Krizsán Zoltán

Kazsik Ádám Programozás Technológia 1.

Programozás I. Matematikai lehetőségek Műveletek tömbökkel Egyszerű programozási tételek & gyakorlás V 1.0 OE-NIK,

Alkalmazott Modul III 6. gyakorlat. Objektumorientált programozás: öröklődés és polimorfizmus

Programozási Paradigmák és Technikák

Abstract osztályok és interface-ek. 7-dik gyakorlat

Programozás II gyakorlat. 6. Polimorfizmus

Java IX. telkezelés a Java-ban

Interfészek. Programozás II. előadás. Szénási Sándor.

Java IX. telkezelés a Java-ban

Programozási Nyelvek: C++

STL gyakorlat C++ Izsó Tamás május 9. Izsó Tamás STL gyakorlat/ 1

Objektum Orientált Programozás. 5. JAVA osztályok 21/1B IT MAN

Segédanyag: Java alkalmazások gyakorlat

Programozás I. Sergyán Szabolcs Óbudai Egyetem Neumann János Informatikai Kar szeptember 10.

BME MOGI Gépészeti informatika 7.

Verem Verem mutató 01

Készítette: Nagy Tibor István

C programozási nyelv Pointerek, tömbök, pointer aritmetika

Segédanyag: Java alkalmazások gyakorlat

SQL*Plus. Felhasználók: SYS: rendszergazda SCOTT: demonstrációs adatbázis, táblái: EMP (dolgozó), DEPT (osztály) "közönséges" felhasználók

HORVÁTH ZSÓFIA 1. Beadandó feladat (HOZSAAI.ELTE) ápr 7. 8-as csoport

Programozás I. Szöveges fájlok kezelése Felsorolástípus Objektumtömb Gyakorló feladatok

OE.Prog2.Jatek.Jatekter névtéren belül készítsük el az alábbiakat: Új osztály: JatekElem. A JatekElem osztályt egészítsük ki az alábbiakkal:

Java programozási nyelv 4. rész Osztályok II.

// keressük meg a legnagyobb faktoriális értéket, ami kisebb, // mint százmillió

Öröklés és Polimorfizmus

Feladat. Bemenő adatok. Bemenő adatfájlok elvárt formája. Berezvai Dániel 1. beadandó/4. feladat április 13. Például (bemenet/pelda.

Programozás I. Első ZH segédlet

Pelda öröklődésre: import java.io.*; import java.text.*; import java.util.*; import extra.*;

Kivételkezelés, beágyazott osztályok. Nyolcadik gyakorlat

1. Mi a fejállományok szerepe C és C++ nyelvben és hogyan használjuk őket? 2. Milyen alapvető változókat használhatunk a C és C++ nyelvben?

Eseménykezelés - Lottó játék

C++ programozási nyelv

BME MOGI Gépészeti informatika 8.

Java VII. Polimorfizmus a Java nyelvben

Objektum elvu alkalmaza sok fejleszte se

A feladatok megoldásához felhasználandó annotációk leírásait az alábbi URL-en találja meg:

Programozás I gyakorlat

Programozás I. Sergyán Szabolcs Óbudai Egyetem Neumann János Informatikai Kar szeptember 10.

Java VII. Polimorfizmus a Java nyelvben

Programozási technológia

Dr. Pál László, Sapientia EMTE, Csíkszereda WEB PROGRAMOZÁS 2.ELŐADÁS. Objektumorientált programozás

7. Laboratóriumi gyakorlat, 1. rész : Vezérlési szerkezetek II.

Programozási nyelvek Java

Osztálytervezés és implementációs ajánlások

Osztálytervezés és implementációs ajánlások

Programozás BMEKOKAA146. Dr. Bécsi Tamás 7. előadás

C#, OOP. Osztályok tervezése C#-ban

1. Jelölje meg az összes igaz állítást a következők közül!

Generikus osztályok, gyűjtemények és algoritmusok

Helyes-e az alábbi kódrészlet? int i = 1; i = i * 3 + 1; int j; j = i + 1; Nem. Igen. Hányféleképpen lehet Javaban megjegyzést írni?

Programozási nyelvek II.: JAVA

OOP #1 (Bevezetés) v :39:00. Eszterházy Károly Főiskola Információtechnológia tsz. Hernyák Zoltán adj.

Átírás:

RESIDENT EVIL CODENAME: NIK Gyakorló zárthelyi dolgozat Figyelem! A feladat mennyiségre több anyagot tartalmaz, mint a zárthelyi dolgozat, amely az órán várható. Ennek oka, hogy több gyakorlásra legyen lehetőség. Megjegyzés! Az osztályokban, metódusokban, változókban NE használjon ékezetes karaktereket. A feladat kiírásában a megértés és olvashatóság elősegítése végett kerültek ékezettel írottan. A feladathoz megtalálható a teljes kód feltöltve a weboldalamon, elakadás esetén érdemes első körben gondolkodni, második körben pedig megnézni, hogy mire is gondolt a költő. Amennyiben a feladat első körre túl nagy falat és belezavarodok érzést kelt egy-egy része, akkor javaslom, hogy az órai kisebb mintapéldákat elővenni és ott leellenőrizni a tanultakat. Megjegyzés! Amennyiben hibát / ellentmondást / bármi problémát vél felfedezni a leírásban, kérem jelezze azt a sipos.miklos@nik.uni-obuda.hu elérhetőségen. 1. Interfész osztályok IEllenség - int életerő G/S - int sebzés G/S - támadás metódus IJátékos típusú paraméterrel, logikai visszatéréssel IFőEllenség - terjessze ki az IEllenség-et - int legyőzhetőség G/S IJátékos - string név G/S - int életerő G/S - int sebzés G/S - JatekosKarakter karakter G/S o saját enumeráció típus (opciók: Leon, Jill, Chris) - támadás metódus IEllenség típusú paraméterrel, visszatérés nélkül IKivételek - string hibaüzenet G/S 1

2. Kivétel osztályok AlapException - valósítsa meg az IKivételek interfészt EllenfelekTeleException - származzon le az AlapException osztályból - int elemszám G/S ZombiModellBetoltesException - származzon le az AlapException osztályból - Zombi zombi G/S 3. Entitás osztályok Zombi - valósítsa meg az IEllenség interfészt - biztosítsa, hogy az osztályból példányt ne lehessen létrehozni - rendelkezzen (csak) egy konstruktorral, amely az életerőt fogadja paraméternek - biztosítsa, hogy az osztályból származtatott elemek a ToString metódust kötelezően felüldefiniálják majd, de itt ebben az osztályban még nem dönthető el, hogy mi legyen a felüldefiniált kimenet - készítsen hasonló elv mentén egy életerő visszatöltés metódust, amelyet a leszármaztatott osztályok kötelező jelleggel implementálniuk kell majd - támadás esetén ne tegyen semmit, csak adjon vissza hamis értéket - hozzon létre egy logzombi virtuális metódust, amely az adott példány típusát írja ki a konzolra BioZombi - származzon le a Zombi ősosztályból - int sugárzás G/S - ToString felüldefiniálás esetén adja vissza a következőt, a szükséges helyekre helyettesítse be az értékeket o BIOZOMBI (életerő) (sebzés) (sugárzás) - támadás esetén 10-zel sebezze a játékost - írja felül az életerő visszatöltésért felelős metódust, amely a zombi egyed életerejét 10- el megnöveli - írja felül a logzombi metódust, a példány saját típusával - modell generálás metódus, amely csak az osztályon belül látható és érhető el. Ezen metódus célja, hogy hibát szimulál. 50%-os valószínűsége van a hibának, amely esetén egy ZombiModellBetoltesException kivétel dobódjon a rendszerben, hibaüzenettel és egy referenciával a zombira, amely kiváltotta a hibát. Egyéb esetben nem kell mást tenni, a feladatnak nem része a grafikus modell megalkotása. 2

FutoZombi - származzon le a Zombi ősosztályból - int stamina G/S - ToString felüldefiniálás esetén adja vissza a következőt, a szükséges helyekre helyettesítse be az értékeket o FUTOZOMBI (életerő) (sebzés) (stamina) - támadás esetén 15-tel sebezze a játékost - írja felül az életerő visszatöltésért felelős metódust, amely a zombi egyed életerejét 10- zel megnöveli - írja felül a logzombi metódust, a példány saját típusával Tyrant - valósítsa meg az IFőEllenség interfészt - támadás esetén az entitás saját sebzésének értékével sebezze a játékost Nemesis - valósítsa meg az IFőEllenség interfészt - támadás esetén az entitás saját sebzésének értékével sebezze a játékost Játékos - valósítsa meg az IJátékos interfészt - támadás metódus esetén az ellenség életerejét csökkentse a sebzés mértékével - definiálja felül a ToString metódust, név és életerőt adjon vissza 6. Eddigiek tesztelése Hozzon létre egy Zombi referenciával rendelkező négy elemű tömböt, töltse fel futó és biozombi típusú elemekkel. Generáljon az egyes típusoknak véletlenszerűen sebzési értéket, típustól függően pedig stamina és sugárzás értékeket. A zombik modellének létrehozásakor figyeljen a kivételekre, kezelje le azokat a tanultaknak megfelelően. Hívja meg a logzombi metódust, vizsgálja meg a polimorfizmust az objektumok tömbjének minden elemére. 3

7. Játék osztály Készítsen egy játék osztályt, amely az egész program lényegét és irányítását fogja adni. A konstruktorban lehessen megadni, hogy a játékon belül hány darab ellenséget tudunk eltárolni. Ehhez használjon tömb adatszerkezetet. Készítsen egy külső változót, amely mindig az aktuális ellenségszámot mutatja majd. Tehát az osztályon belül található elemek: - Játékos játékos G/S - IEllenség típusú elemek tárolására alkalmas tömb adatszerkezet G/S - ellenfélszám G/S - EllenfélHozzáadás metódus, amely egy IEllenség típusú elemet fogad és a következő helyre helyezi a tömbben o amennyiben nincs már hely, úgy dobjon egy saját készítésű EllenfelekTeleException kivételt, hibaüzenetnek adja meg, hogy nincs már több hely ellenfélnek, továbbá azt, hogy hány elemű gyűjtemény (jelenleg tömb) volt az, amely betelt - EllenfelekKilistázása metódus, amely az ellenfeleket kiírja egymás alá a konzolra - Támadás metódus, amely egy IEllenség típust fogad és a játékos támadás metódusát hívja tovább, átadva neki a paraméterként kapott ellenséget 8. Eddigiek tesztelése Hozzon létre egy játék objektumot a Main részben, regisztráljon hozzá játékost is amelyet tetszőlegesen paraméterezzen fel. Adjon hozzá a játékhoz ellenfeleket, amelyeket korábban hozott létre, készítse fel a programot, hogy ezen a részen kivétel dobódhat. Kezelje azt le, és biztosítsa, hogy más kivétel dobása esetén se fagyjon le a program. Listázza ki a játékban található ellenfeleket. 9. Események integrálása Figyelem! Az eseményeknél a gyakorlás céljából két verzióban található meg a feladatleírás. A rövidebb verzióban minden lényegi rész említésre kerül, az alapján a feladat megvalósítható. A részletesebb verzióban bővebben ki vannak fejtve, hogy egyes dolgokat hogyan kellene megvalósítani. Aki magabiztos, próbálja meg a rövidebb leírás alapján. Aki kevésbé, nekik javasolt a részletesebb leírás. Rövid megfogalmazás: A játékos osztályban hozzon létre egy delegáltat és egy hozzá tartozó eseményt TalalatEventHandler néven, a tanult módon. Amikor a játékban az ellenfelet támadás éri, süsse el az előbbi eseményt. Biztosítsa, hogy az eseménynek legyen saját argumentuma TalalatEventArgs néven. Ennek segítségével egy IEllenség típusú ellenséget, egy Játékos típusú játékost és egy DateTime típusú időbélyeget tudunk az eseménnyel küldeni (amelyek mind olvashatók és írhatók). Hasonló képpen járjon el a Zombi osztályban is, amelynél egy MeghaltEventHandler delegált és eseményre lesz szükség. Ezt az eseményt akkor süsse el, ha a zombi életereje nulla vagy az alá csökkent. Készítsen egy ZombiMeghaltEventArgs osztályt, amelyben egy IEllenség típust és egy DateTime típust tudunk küldeni az eseménnyel. Mind a két esemény elsütése előtt vizsgálja meg, hogy elsüthető-e az esemény hibára futás nélkül. 4

Részletes megfogalmazás: Hozzon létre a játékos osztályban egy delegáltat TalalatEventHandler néven, amely visszatérés nélküli metódusszignatúrát ír elő, egy object és egy TalalatEventArgs típusú paraméterrel. Készítsen egy eseményt Talalat néven ehhez a delegálthoz. Módosítsa a támadás metódust úgy, hogy miután az ellenség életerejének csökkentése megtörtént, süsse el az eseményt a tanult módon, melyhez használjon egy OnTalalat metódust. Vizsgálja meg, hogy vannak-e feliratkozva már az eseményre, és csak akkor süsse azt el. Az eseményargumentumon keresztül kommunikálja az ellenséget és a játékost, továbbá az aktuális pillanattal hozzon létre egy időbélyeget. A TalalatEventArgs osztályt készítse el a következő paraméterekkel: - IEllenség ellenség G/S - Játékos játékos G/S - DateTime időbélyeg G/S Hozzon létre a zombi osztályban egy delegáltat MeghaltEventHandler néven, amely visszatérés nélküli metódusszignatúrát ír elő, egy object és egy ZombiMeghaltEventArgs típusú paraméterrel. Készítsen egy eseményt Meghalt néven ehhez a delegálthoz. Módosítsa az életerő set ágát oly módon, hogy miután az új értékkel felülírta az életerőt, vizsgálja meg, hogy az nulla vagy annál kisebb-e. Amennyiben igen, úgy jelezzen esemény formájában, melyhez használja az OnMeghalt nevű metódust. Elsütés előtt vizsgálja meg, hogy van-e feliratkozás az eseményre, és csak akkor süsse el. A ZombiMeghaltEventArgs osztályon keresztül adja át a zombit magát és egy időbélyeget is hozzon létre. A ZombiMeghaltEventArgs osztály a következő paraméterekkel rendelkezik: - IEllenség ellenség G/S - DateTime időbélyeg G/S Hozzon létre a játék osztályban két figyelőt TalalatFigyeloService és MeghaltFigyeloService neveken, amelyek JátékTalálatFigyelőService és ZombiMeghaltFigyelőService típusúak. Az első a játékos támadását fogja figyelni, és minden támadáskor logolni fog egy bejegyzést. A második akkor fog esemény formájában logbejegyzést készíteni, ha az egyik zombi meghalt. A játék osztályban készítsen egy EseményFeliratkoztatás metódust, amely a következőket csinálja: - TalalatFigyeloService példány létrehozása és esemény feliratkoztatása - MeghaltFigyeloService példány létrehozása és minden ellenfél saját eseményének a feliratkoztatása JátékTalálatFigyelőService osztályban hozzon létre egy megfelelő metódusszignatúrával rendelkező metódust, amely kiírja a bejegyzés időpontját, majd azt, hogy melyik játékos melyik ellenfelet találta el, és az ellenfél új életerejét. ZombiMeghaltFigyelőService osztályban hozzon létre egy megfelelő metódusszignatúrával rendelkező metódust, amely kiírja a bejegyzés időpontját, majd azt, hogy melyik ellenség halt meg. 10. Eddigiek tesztelése Tesztelje le az eseményeket, támadjon a játékossal egy zombi ellenségre, vizsgálja meg, hogy meghal-e megfelelő mennyiségű támadás után. További kivételek és események elhelyezhetők tetszés szerint, amelyek további gyakorlásra alkalmasak. 5

Osztályok vizualizálása 6

A program elvárt kimenete 7