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

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

3. Osztályok II. Programozás II

Dokumentáció. 1. Beadandó feladat

RESIDENT EVIL CODENAME: NIK

Programozási nyelvek II. JAVA

Szimulációs technikák

Osztályok. 4. gyakorlat

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

OOP: Java 8.Gy: Gyakorlás

JOGI STÁTUSZ KEZELÉS MŰKÖDÉSE

Országos Rendezési Tervkataszter

CabMap hálózat-dokumentáló rendszer

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

Johanyák Zsolt Csaba: Ugráló gomb oktatási segédlet Copyright 2008 Johanyák Zsolt Csaba

Programozási technológia

OOP: Java 6.Gy: Java osztályok. Definíció, static, túlterhelés

Iman 3.0 szoftverdokumentáció

Objektum elvu alkalmaza sok fejleszte se

Szoftvertechnolo gia gyakorlat

Interfészek. PPT 2007/2008 tavasz.

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

DAT adatcserefájl AutoCAD MAP DWG mapobject konvertáló program dokumentáció

Már megismert fogalmak áttekintése

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

OOP és UML Áttekintés

1. Template (sablon) 1.1. Függvénysablon Függvénysablon példányosítás Osztálysablon

GPRS Remote. GPRS alapú android applikáció távvezérléshez. Kezelési útmutató

2. Beadandó feladat dokumentáció

Programozási alapismeretek 4.

Java grafikai lehetőségek

Gyakorlati vizsgatevékenység A

1. Olvassuk be két pont koordinátáit: (x1, y1) és (x2, y2). Határozzuk meg a két pont távolságát és nyomtassuk ki.

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

Programozási nyelvek Java

Java és web programozás

Tisztelt Felhasználó!

Java Programozás 4. Gy: Java GUI. Tipper, MVC kalkulátor

Taninform KIR kapcsolat

Integrációs mellékhatások és gyógymódok a felhőben. Géczy Viktor Üzletfejlesztési igazgató

Programozás II. 2. gyakorlat Áttérés C-ről C++-ra

SZOFTVERES SZEMLÉLTETÉS A MESTERSÉGES INTELLIGENCIA OKTATÁSÁBAN _ Jeszenszky Péter Debreceni Egyetem, Informatikai Kar jeszenszky.peter@inf.unideb.

2. Beadandó feladat dokumentáció

Utolsó módosítás:

Objektumelvű programozás

EGYÉB BEFIZETÉSI MÓDOK (KÜLSŐ SZÁMLA, HÁZIPÉNZÁR)

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

II. labor Az alábbi osztálydiagram (2.10 ábra) alapján hozzuk létre a diagramban feltüntetett csomagokat, interfészt és osztályokat.

FELHÍVÁS! A játék pusztán, csak és kizárólag, a szórakoztatás céljából jött létre!

Modellező eszközök, kódgenerálás

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

Programozás I. Grafika Eseménykezelés. Programozás I. 2. gyakorlat Interakció a grafikus felületen, tagfüggvények. Surányi Márton PPKE-ITK

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

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

Változáskezelés Verzió Dátum Változás Pont Cím Oldal Kiadás: Verzió: 2.0. Oldalszám: 2 / 8

KAMIONIRÁNYÍTÓ RENDSZER

ELTE SAP Excellence Center Oktatóanyag 1

PlanetFight. Minden játékosnak van valamennyi űrhajója, amikkel képesek elfoglalni még fel nem fedezett, neutrális bolygókat.

Igazolási és támogatási igazolási kérelmek mellékleteinek központi kezelése

Programozási technológia

Webes vizsgakezelés folyamata Oktatói felületek

Programozás alapjai. 6. gyakorlat Futásidő, rekurzió, feladatmegoldás

A 2016/2017 tanévi Országos Középiskolai Tanulmányi Verseny első forduló javítási-értékelési útmutató. INFORMATIKA II. (programozás) kategória

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

Programozás II. 3. gyakorlat Objektum Orientáltság C++-ban

Számítógépes döntéstámogatás. Genetikus algoritmusok

Eseménykezelés. Szoftvertervezés és -fejlesztés II. előadás. Szénási Sándor.

Programozás. C++ osztályok. Fodor Attila. Pannon Egyetem Műszaki Informatikai Kar Villamosmérnöki és Információs Rendszerek Tanszék

Oszkar.com Android alkalmazás v1.2

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

Modellek dokumentálása

Kirakós játék. Döntő február 22. Alakzatok (katalógus) DUSZA ÁRPÁD ORSZÁGOS PROGRAMOZÓI EMLÉKVERSENY 2013/2014

Programozási nyelvek Java

Programozási nyelvek II.: JAVA, 3. gyakorlat

Virtuális függvények (late binding)

BUDAPESTI MŐSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM

1. beadandó feladat: egyszerű grafikus felületű alkalmazás. Közös követelmények:

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

Név: Neptun kód: Pontszám:

Öröklés és Polimorfizmus

Ugráló gomb oktatási segédlet Ugráló gomb

van neve lehetnek bemeneti paraméterei (argumentumai) lehet visszatérési értéke a függvényt úgy használjuk, hogy meghívjuk

Android Wear programozás. Nyitrai István

OOP. Alapelvek Elek Tibor

Interaktív, grafikus környezet. Magasszintû alkalmazási nyelv (KAL) Integrált grafikus interface könyvtár. Intelligens kapcsolat más szoftverekkel

Analízis modell kidolgozása I.

10. EGYSZERŰ HÁLÓZATOK TERVEZÉSE A FEJLESZTŐLAPON Ennél a tervezésnél egy olyan hardvert hozunk létre, amely a Basys2 fejlesztőlap két bemeneti

1. Beadandó feladat dokumentáció

Java-ról Kotlinra. Ekler Péter AutSoft BME AUT. AutSoft

BME MOGI Gépészeti informatika 8.

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

Java Programozás 11. Ea: MVC modell

Adatintegritás ellenőrzés Felhasználói dokumentáció verzió 2.0 Budapest, 2008.

BIRDIE. Business Information Reporter and Datalyser. Előadó: Schneidler József

OOP: Java 5.Gy: Osztály, referencia, konstruktor

Felhasználói útmutató CVR mobil kliens, ios rendszerhez.

Egy családfaszerkesztő alkalmazás leírása

Készítette: Enisz Krisztián, Lugossy Balázs, Speiser Ferenc, Ughy Gergely

OAF Gregorics Tibor: Minta dokumentáció a 3. házi feladathoz 1.

A Skype architektúrája. P2P hálózat Supernode ok, peer-ek, login server

Átírás:

Kazsik Ádám Programozás Technológia 1. Első beadandó feladat Dokumentáció

Tartalom: I. A program jellemzői... 3 Játékszabályok... 3 Hadsereg... 3 Hadszíntér... 3 Hadszíntér ábra... 3 Magaslat... 4 Egységek... 4 Lerohanás... 4 Tábor... 4 Lovas... 4 Lándzsás... 4 Íjász... 4 II. A program megvalósítása... 5 Interface-ek... 5 Harcol... 5 Elo... 5 Osztalyok... 5 Katona... 5 Ijasz... 6 Landzsas... 6 Lo... 6 NehezCsatalo... 6 KonnyuCsatalo... 6 Lovas... 6 Hadszinter... 6 Hadsereg... 6 Tabor... 7 III. Osztálydiagram... 8 IV. Továbbfejlesztési lehetőségek... 9 A program interaktívvá tétele.... 9 A programot grafikus felülettel láthatnánk el.... 9 2

I. A program jellemzői A program egy középkori csatát szimulál. A program implementálása és az osztálydiagram elkészítése előtt, legalább elméletben meg kellett alkotni egy szabályrendszert a programhoz, amely segítséget nyújtott abban, hogy milyen függvényekre lesz szükség a program egyes osztályaiban. Mivel a program egy játékprogramnak minősíthető így ezt játékszabályokként fogom ettől kezdve említeni. Játékszabályok: A játék egy hadszíntéren indul, melyen két hadsereg szerepel, és ezek egymással harcolnak. Hadsereg: A hadseregek egységekből állnak, így a játék elején mindkét hadsereg minden embere kap egy koordinátát. A játék nem tiltja, hogy a két hadsereg véletlenül (legalábbis a random számok generálása miatt) ugyanarra a koordinátára kerüljön már a játék elején. Ha két különböző koordinátáról indulnak, akkor ettől kezdve az egységek már külön mozognak. Amennyiben az ellenfél valamely egységével megegyező koordinátára lépnek, akkor harcolnak. Hadszintér: A hadszíntér a rögzített számok miatt, egy 6x6 egység méretű térként képzelhető el. (A kép csupán szemléltető eszköz, hibái csak rajzi hiányosságok) 3

Magaslat: A program felismeri, hogy az y = 3-nál nagyobb y koordinátájú pontok magasabban vannak. Egységek: Minden egységre jellemző tulajdonság, az élete, a páncélja, és a támadópontja, illetve a koordinátája. Lerohanás: Amennyiben valamely egység, eljut az (5,5)-ös koordinátára, akkor hadserege megtámadhatja az ellenfél táborát, ha az épp nem üres. Tábor: Ehhez arra is szükség van, hogy feltételt szabjunk, milyen esetben vannak egységek a táborban. Ezért egy egység akkor kerül a saját hadseregének táborába, ha előtte legyőzött egy ellenséges katonát (azaz az törlődött az ellenség hadseregéből). Ha egy egység a táborába kerül, akkor életpontjai és páncélja is nő. Amennyiben egy hadszíntéren lévő hadseregből az összes katona elfogy, akkor a program fokozatosan visszaküldi a táborban lévő egységeiket a hadszíntérre. Lovas: A lovas egység abban különbözik a többitől, hogy egy speciális rá jellemző tulajdonsága, a lova. A lovával együtt lehet létrehozni, azonban ha a lovának életpontjai elfogynak, a lovas önmagában is teljes értékű egységként harcol tovább. Amíg a lova életben van, addig ha a hadszíntér méretei engedik, a lovas képes két koordinátát is elmozdulni. Továbbá ha él a lova, akkor harc közben annak támadópontjaival sebződik az ellenség megtámadott egysége. S végül szintén a lovától függően, amíg a lova él, addig a sebzéseket is a ló életpontjaiból vonjuk le. Lándzsás: A lándzsás egyszerű egység. Íjász: Egyszerű egység, azonban képes távolabbról is megsebezni az ellenfelét, amennyiben pedig magaslaton áll, és az y koordinátája nagyobb, mint a megtámadott ellenfél y koordinátája (azaz magasabban van) akkor még nagyobb távolságról képes támadni. 4

II. A program megvalósítása: Az egységek főbb műveleteit két interfész : Harcol(), Elo() tárolja. Ezekben szereplő absztrakt függvények: tamad(harcol harcol); - megadható vele melyik egységünk kit támadjon sebzodik(float sebzes); - megadható vele hogy mennyivel sebződik a megtámadott egység mozog(); - akkor hívódik meg ha az egység senkit nem tud megtámadni a közelében double tavolsag(point2d.double p1, Point2D.Double p2); - kiszámolja milyen távol van pl: egy Ijasz egység az ellenfelétől int getid(); - megadja az egység generált ID kódját, (csak a névegyezés miatti megkülönböztetésben segít, nincs lényegi szerepe) boolean elo(); - eldönti az adott egység életpontja nagyobb-e mint 0 Ezt a két interfészt a Katona osztály valósítja meg. Ez az osztály tartalmazza az egységek fő konstruktorát, és főbb attribútumait. Illetve segédfüggvényeket tartalmaz ahhoz, hogy az egységekről adatok legyenek lekérdezhetőek más osztályok számára. Pl : Tabor, Hadsereg. A Katona osztály felüldefiniálja az interfészek függvényeit. Ezentúl függvényei: getelet(), setelet(float elet), getpancel(), setpancel(float pancel); - Getter/Setter páros, az Élet és a Páncél beállítására: getpos(),setp1(); - Getter/Setter az egység pozíciójának beállításához: setmagaslat() - Setter annak beállítására, hogy az egységünk épp magaslaton áll-e. tostring() - tostring felüldefiniálása, az egyes egységek nevének könnyebb kiírásához. log(string message) - felhasználói üzenetekhez segédfüggvény. 5

A Katona osztályból származnak az Ijasz, Landzsas, Lo és Lovas osztályok. - az Ijasz csupán a tavolsag(point2d.double p1, Point2D.Double p2) függvényt definiálja felül. - a Lovas felüldefiniálja a tamad(harcol harcol), sebzodik(float sebzes), és a mozog() függvényeket. - a Lo osztály absztrakt osztály belőle nem hozhatóak létre Lo egységek, azonban A Lo osztályból származnak a KonnyuCsatalo és NehezCsatalo osztályok. Ezek csak adataikban különböznek egymástól. A Hadszinter osztály alapvetően hadseregeket tárol, ezentúl a getrandomposition() függvény visszaad egy random koordinátát, melyet a seregelhelyez(hadszinter mezo) beállít a hadsereg kiinduló koordinátájának. Ezen kívül függvényei: addhadsereg(hadsereg hadsereg) - Hozzáadható egy paraméterül kapott hadsereg a hadszíntérhez getsize() - Visszaadja a hadszíntér listánk méretét getsereg(int szam) - Visszaadja a paraméterül kapott indexű hadsereget a hadszíntér listából removesereg(hadsereg hadsereg) - Eltávolítja a paraméterül kapott hadsereget a hadszíntér listából A Hadsereg osztály alapvetően egységeket tárol, valamint van egy neve, és egy koordinátája, amit a csata elején kap meg. Ezen kívül függvényei: Hadsereg(String name) - konstruktor a hadsereg létrehozásához. getp1(),setposition(point2d.double p1) - getter/setter páros a hadsereg koordinátájának beállításához, és lekérdezéséhez. getname() - getter a hadsereg nevének lekérdezéséhez. addkatona(katona katona) - hozzáadja a paraméterül kapott katonát a hadsereg listához. lerohanas(tabor tabor) - a paraméterül kapott tábor katonáit a hadsereg összes egysége megtámadja taborba(katona katona, Tabor tabor) - a paraméterül kapott katonát a paraméterül kapott táborba helyezi át 6

getkatona() - visszaad egy random katonát a hadsereg listából getsereg() - visszaadja a hadsereg listát (kiíráshoz) getsize() - visszaadja a hadsereg lista méretét remove(katona katona) - a paraméterül kapott katonát törli a hadsereg listából. A Tabor osztály alapvetően egységeket tárol, valamint van egy név attribútuma. Ezen kívül függvényei: Tabor(String name) - a Tabor osztály konstruktora getname() - visszaadja a tábor nevét. id(katona katona) - visszaadja a paraméterül kapott katona ID-jét addtaborozo(katona katona) - a tábor listához hozzáadja a paraméterül kapott katonát remove(katona katona) - a paraméterül kapott katonát kitörli a tábor listából getkatona() - visszaad egy random katonát a tábor listából gyogyit(katona katona), javit(katona katona) - a paraméterül kapott katonának növeli az élet/páncél pontjait. getsize() - visszaadja a tábor lista méretét seregbe(katona katona, Hadsereg hadsereg) - a paraméterül kapott katonát áthelyezi a paraméterül kapott hadseregbe gettabor() - visszaadja a Tabor listát (kiíráshoz) 7

III. Osztálydiagram: 8

IV. Továbbfejlesztési lehetőségek: 1. A program kiegészítése, bővítése. - Új egység osztályok megalkotása, ezáltal a játék árnyalása. - Minden egység speciális tulajdonságokkal való felruházása (Interface-ek függvényeinek felüldefiniálása). 2. A program interaktívvá tétele. - Egységek mozgásának interaktívvá tétele, ezáltal nem csak véletlenszerűen lépkednének. - Az egységek létrehozásának befolyásolhatóvá tétele, így a felhasználó dönthetné el, milyen egységet melyik hadseregbe hoz létre. - A tábor megtámadásának manuálissá tétele, így a felhasználó dönthetné el, hogy az adott hadsereg mikor támadja meg az ellenfél táborát. - Az egységek táborba küldésének manuálissá tétele, így a felhasználó dönthetné el, hogy az adott egység mikor kerüljön a hadseregének táborába. - A felhasználó dönthesse el, mikor lépjen két koordinátát, és mikor egyet a Lovas egység, ezáltal több taktikázásra nyílna lehetőség. 3. A programot grafikus felülettel láthatnánk el. - A hadszíntér grafikus megjelenítése, ezáltal vizuálisan megjeleníthetőek lennének rajta az egységek, ezáltal nem kellene koordinátákat memorizálni a játékhoz. - Látnánk mennyi egység van épp a hadszíntéren, így szükség szerint visszahívhatnánk egységeinket a táborunkból. - Megjeleníthetőek lennének, az egységek attribútumai, ezáltal könnyebben felmérhetővé válna, melyik egységnek van szüksége gyógyításra (táborba küldésre). - Mivel látnánk a csata folyamatát, nem volna szükség felhasználói üzenetekre, s sokkal átláthatóbbá válna a program működése. 9