Analízis modell kidolgozása I.



Hasonló dokumentumok
Kincskereső játék. 78 TeraCorp DT. Bíró Barna. Konzulens:

KINDERGARTEN. 46 InFoka. Dady Róbert. Csapattagok: Konzulens:

Java VI. Egy kis kitérő: az UML. Osztály diagram. Általános Informatikai Tanszék Utolsó módosítás:

Követelmény, projekt, funkcionalitás 41 CSK 1

2. Beadandó feladat dokumentáció

Programozás 1. 2.gyakorlat

Szkeleton tervezése. 100 Generalis faliora. Csapattagok: Konzulens: Szabó András március 21.

Adatbázis rendszerek I

Verkehrsmeldungen am UML

Informatika-érettségi_emelt évfolyam Informatika

Bevezetés a Programozásba II 5. előadás. Objektumorientált programozás és tervezés

Előzmények

Bánsághi Anna 1 of 67

Java programozási nyelv 8. rész Grafikus felhasználói felület

1.sz melléklet Nyári gyakorlat teljesítésének igazolása Hiányzások

Informatikai Kar. 3. fejezet. alapismeretek. Giachetta Roberto

Szoftver-ergonómiára vonatkozó szabvány, avagy ISO 9241

Adatstruktúrák, algoritmusok, objektumok

Borkereskedő. Dokumentáció a Programozási módszertan elmélete című tárgy beadandó programjához. Magyar Attila mattila@inf.elte.hu

Dr. Pétery Kristóf: Word 2003 magyar nyelvű változat

Objektum Orientált Szoftverfejlesztés (jegyzet)

Modellalkotás UML-ben

Programozási nyelvek Java

A Blender használata (8. rész) Az animációkészítés alapjai

A vizsga részei A vizsga értékelése Gyakorlat i

A Szekszárdi I. Béla Gimnázium Helyi Tanterve

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

1. Az informatikai eszközök használata

Infokommunikáció (PF10IK511L) kérdései

Informatika. Középszintű érettségi vizsga témakörök. 1. Információs társadalom. 2. Informatikai alapismeretek hardver

2. Követelmény, projekt, funkcionalitás

Az élet szép, környezetünk tele van fákkal, virágokkal, repdeső madarakkal, vidáman futkározó állatokkal.

ÜGYVITELI ALAPISMERETEK


JAVA PROGRAMOZÁS 3.ELŐADÁS

OBJEKTUMORIENTÁLT TERVEZÉS ESETTANULMÁNYOK. 2.1 A feladat

Felhasználói kézikönyv a minősítési értékelő modul használatához

Ipari olaj- és gáztüzelőberendezés. Hőtechnikai berendezéskezelő

Dr. Pétery Kristóf: Excel 2007 feladatok és megoldások 2.

A TANTÁRGY ADATLAPJA

libgdx Android Studio alatt

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

A 2014/2015 tanévi Országos Középiskolai Tanulmányi Verseny döntő fordulójának feladatai. I. (alkalmazói) kategória

Szolgáltatási szabályzat titkosító tanúsítvány szolgáltatáshoz (HSZSZ-T)

14.2. OpenGL 3D: Mozgás a modellben

1. ekönyv Olvasó 2. USB-kábel 3. Fülhallgató 4. Rövid használati útmutató 5. Garanciakártya. A készülék ki-/bekapcsolása

animacio.max fájllal fogunk dolgozni. Mindenki mentse a fájlt saját nevével, az eredeti fájllal senki ne dolgozzon.

A SZOFTVERTECHNOLÓGIA ALAPJAI

Tartalom Kontextus modellek Viselkedési modellek Adat-modellek Objektum-modellek CASE munkapadok (workbench)

Adatbázisok I Adatmodellek komponensei. Adatbázis modellek típusai. Adatbázisrendszer-specifikus tervezés

Az Ön kézikönyve PHILIPS 278G4DHSD

Szoftverprototípus készítése. Szoftverprototípus készítése. Szoftverprototípus készítése

Magyar Telekom fokozott e- Szignó. nem-minősített hitelesítés szolgáltatás. Standard Üzleti Tanúsítvány. Fokozott Személyi Tanúsítvány

Számítástechnika-kidolgozott szóbeli tételek (11-15.)

ÜGYVITELI ALAPISMERETEK

Az informatika tantárgy fejlesztési feladatait a Nemzeti alaptanterv hat részterületen írja elő, melyek szervesen kapcsolódnak egymáshoz.

TOBORZÁS. Szempontok és segédletek gyűjteménye a tanulótoborzáshoz és beíratáshoz. 1/8. EMIR Azonosító: TÁMOP-3.2.

TANÁCSOK A HOSSZÚ ÉLETTARTAM ÉRDEKÉBEN:

A követelmények leírása

Hitelesítési Rend nyilvános körben kibocsátott nem minősített tanúsítványokra (HR-NMT)

Dr. Pétery Kristóf: Excel 2003 magyar nyelvű változat

részvétel a kulturális, társadalmi és/vagy szakmai célokat szolgáló közösségekben és hálózatokban. Az informatika tantárgy fejlesztési feladatait a

A billentyűzet az egyik legfontosabb adatbeviteli eszköz. Egyéb utasítás hiányában a számítógép innen várja a bemenő információkat, adatokat,

Access adatbázis elérése OLE DB-n keresztül

Közzététel és Adatszolgáltatás IT tudatosság projekt

Objektumorientált programozás C# nyelven

Java programozási nyelv 10. rész Input/output kezelés

rendszerszemlélető, adatközpontú funkcionális

OBJEKTUM ORIENTÁLT PROGRAMOZÁS JAVA NYELVEN. vizsgatételek

EGYÜTTMŰKÖDÉSI SZÁNDÉKNYILATKOZAT

Budapesti Műszaki és Gazdaságtudományi Egyetem Villamosmérnöki és Informatikai Kar Irányítástechnika és Informatika Tanszék. Önálló laboratórium

Quantometer 2.0 Fogyasztásmérő program és illesztőkészülék

Horgász Napló V Bemutató Verzió. Felhasználói Kézikönyv. Intelligens Fogási Napló Program

Vizuális nevelés. 3. évfolyam. Célok :

Felhasználói kézikönyv

Tartalomjegyzék. Bevezetés...2

Grafikus felületek készítése 1.

Objektumorientált programozás C# nyelven III.

Bártfai Barnabás. Office 2010

Teacher only opens the door!

Bevezetés. A WebAccess használatának bemutatása előtt néhány új funkció felsorolása következik:

Összefüggő szakmai gyakorlat témakörei évfolyam. 9. évfolyam

Összefüggő szakmai gyakorlat témakörei. 13 évfolyam. Információtechnológiai gyakorlat 50 óra

Útmutató szakdolgozatok készítéséhez Ez az útmutató a Szent István Egyetem Alkalmazott Bölcsészeti és Pedagógiai Karán készülő szakdolgozatokkal

Programozás III CSOMAGOK. Az összetartozó osztályok és interfészek egy csomagba (package) kerülnek.

Használati Utasítás Fajsúly meghatározó HU

10. évfolyam 105 óra azonosító számú Hálózatok, programozás és adatbázis-kezelés 105 óra Adatbázis- és szoftverfejlesztés gyakorlat tantárgy

XML sémanyelvek Jeszenszky, Péter

Informatika. Magyar-angol két tanítási nyelvű osztály tanterve. 9. évfolyam

Prezentáció használata

A HunPLUS 2009 újdonságai

TANFOLYAMI AJÁNLATUNK

CA Clarity PPM. PMO Accelerator - kiadási információk - On Demand. Release

Nemzeti alaptanterv 2012 MATEMATIKA

INFORMATIKA. Célok és feladatok évfolyam

3. Osztályok II. Programozás II

Magyar Telekom Minősített e-szignó. hitelesítésszolgáltatás

Példaprogramok Android alá (Lista, mentés, visszatöltés, pattogó android figura) Android alapok. Android játékfejlesztés.

VIZSGÁLATI SZEMPONTOK AZ ANYAGMOZGATÁS CÉLVIZSGÁLATÁHOZ

A DIÁKHITEL Rt. szoftver és hozzá kapcsolódó oktatás beszerzése Az ajánlatkérő neve, címe, távirati címe, telefon és telefax számai:

Átírás:

Analízis modell kidolgozása I. 65 Konzulens: Zsolnai Károly Csapattagok Balogh Péter Tamás B6E4VC b4logh.peter@gmail.com Gál István László EKCBOK galpityu@gmail.com Kárász Gábor QHTQ8N raknepseg@gmail.com Simon Endre András HZK8DP ndrewka@gmail.com Szabó Alex PEONHQ delanni.alex@gmail.com

2 3. Analízis modell kidolgozása 3. Analízis modell kidolgozása 3.1 Objektum katalógus 3.1.1 Character A játékos által irányított pálcikaembert reprezentáló objektum, melyből pontosan egy létezik. Számon tartja, hogy melyik szinten van, melyik pályaelemben, milyen pozícióban és, hogy rendelkezik-e már a szint teljesítéséhez szükséges kulccsal. 3.1.2 Clock A megfelelő időzítésért felelős objektum. Feladata, hogy az események előre meghatározott sebességgel való végrehajtódásának ütemezést adjon. 3.1.3 Door Egy adott szint teljesítését ellenőrző objektum, melyből minden szinten pontosan egy darab található. Tartalmazza a pálya teljesítettségének ellenőrzéséhez szükséges logikát, valamint kommunikál a Game objektummal. Felelőssége hogy ha van kulcsunk, átengedjen minket a következő szintre, ütközés esetén. 3.1.4 Game A program alapobjektuma, mely közvetve vagy közvetlenül tartalmazza az összes a programban szereplő objektumot. Feladata, hogy a játék indításkor megalkossa a Clock objektumot, valamint külső fájlból beolvasott adatok alapján létrehozza a pályákat (Level). 3.1.5 Key A Key felelőssége hogy kinyissa az ajtót, ha a játékos megszerezte(ütközött már vele). A kulcs megszerzése nélkül nem teljesíthetőek a pályák. Minden szinten pontosan egy darab található belőle. 3.1.6 Level Minden szinthez tartozik egy ilyen objektum. Feladata,hogy összefogja a hozzá tartozó pályaelemeket (LevelItem), valamint gondoskodjon a köztük zajló kommunikációról. Ezen felül tartalmazza a Karakter (Character) pályaelemeken (LevelItem) belüli és azok közti mozgatásának logikáját. 3.1.7 LevelItem Feladata a Karakter-nézet tényleges játékterének kialakítása, és a játékteret alkotó Spriteok egységbe foglalása és kezelése.

3 3. Analízis modell kidolgozása 3.1.8 Sprite A pályaelemeken (LevelItem) előforduló összes objektum közös interface, melyben ezek közös metódusai vannak definiálva, mint például az ütközésdetektálás. 3.1.9 SpriteFactory A Sprite interfész különböző leszármazottainak gyártásáért felelős. Egységbe foglalja az objektum gyártást, a polimorfizmus kezelését hivatott megkönnyíteni. 3.1.10 Wall A pályaelemeken (LevelItem) megjelenő áthatolhatatlan falakat és oszlopokat megvalósító virtuális építőkocka. Felelőssége hogy a játéktéren legyen, a rajta áthatoló charcter objektumot megállítsa. 3.2 Osztályok leírása 3.2.1 Character Név Felelősség Character A játékos által irányított osztály, felelőssége hogy az irányított objektumot valamilyen módon reprezentálja a világ számára (akár grafikusan, akár szövegesen, koordinátákkal). Ezzel kell a pályákon navigálni úgy, hogy megszerezzük a kulcsot és megoldjuk az adott pályát. Ősosztályok - Interfészek Sprite Attribútumok - position : Point3d - tárolja a karakter pontos helyét - haskey : Boolean - eltárolja, hogy a kulcs fel van-e véve - canmove : Boolean az aktuális pillanatban a játékos tud-e mozogni - movedir : int a mozgás irányát tárolja - game: Game a game objektumot tárolja Metódusok + Character(Point3d) - létrehozáskor beállítja a karakter pozícióját + reset() - a pálya újrakezdése + getposition() - a karakter pozíciójával tér vissza (interfészből) + getwidth() - a karakter szélességével tér vissza (interfészből) + getheight() a karakter magasságával tér vissza (interfészből) + checkhit(sprite) - az ütközésdetektálás megvalósítása (interfészből) + setposition(point3d) - beállítja a karakter pozícióját + gethaskey() - ellenőrzi, hogy a karakter felvette-e már a kulcsot + sethaskey() - beállítja a karakterhez a kulcsot, ha ütközött vele + resethaskey() - törli a karakter kulcsát + move( dir ) dir irányba mozgatja a karaktert + setcanmove() engedélyezi a játékos mozgását, egy adott óraütésre +Tick() az órától kapott óraütést ezen függvény meghívásával tudatosul

4 3. Analízis modell kidolgozása az objektumban 3.2.2 Clock Név Felelősség Clock A játék mozgatórugója. Adott idő eltelte után periodikusan eseményeket generál. Ezek az események eljutnak a játék résztvevőihez, és ezek alapján mozognak. Ősosztályok - Interfészek - Attribútumok - game : Game - tároljuk, metódushívások miatt - period : int - periódus számláló Metódusok + setperiod(int) - beállítja a periódus idejét + run() - elindítja az órát 3.2.3 Door Név Felelősség Door A szint végét jelző osztály. Ha a játékos eléri az ajtót, úgy hogy már birtokolja a kinyitásához szükséges kulcsot (Key), szintet léphet. Ősosztályok - Interfészek Sprite Attribútumok - position : Point3d - az ajtó pontos helye - character : Character - hogy tudjuk, van-e a karakternél kulcs - game : Game - tároljuk, metódushívások miatt Metódusok + Door(Point3d) - beállítja az ajtó pozícióját létrehozáskor + getposition() - az ajtó pozícióját adja vissza (interfészből) + getwidth() az ajtó szélességével tér vissza (interfészből) + getheight() az ajtó magasságával tér vissza (interfészből) + checkhit(sprite) - az ütközésdetektálás megvalósítása (interfészből)

5 3. Analízis modell kidolgozása 3.2.4 Game Név Felelősség Game A játék főbb mozzanataiért felelős osztály, pl Save Game, New Game, Load Game stb. Felelőssége továbbá hogy a Clocktól kapott óraütést eljuttassa az éppen erre váró objektumoknak. Ősosztályok - Interfészek - Attribútumok - clock : Clock - óra a játék eseményeinek generálásáért - level : ArrayList<Level> - láncolt lista a szintek tárolásához - character : Character - karakter, hogy nézetváltásnál eltároljuk - factory : SpriteFactory - a pályákon lévő sprite-ok létrehozásához - view : int - az aktuális nézetet tárolja Metódusok + Tick() - az óra által diktált ütemezést továbbítja a játék objektumainak + startgame() - új játék indítása + loadgame() - mentett játék betöltése + savegame() - az aktuális játék elmentése + nextlevel() - a következő pályára léptet + wingame() - a játékos nyer, ha nincs következő pálya + changeview(int) - nézet váltás a Pálya- és a Karakter-nézet között + getview() visszaadja, hogy épp melyik nézetben vagyunk + openmenu() - menü megnyitása + closemenu() - menü bezárása + showcredits() - megmutatja a készítőket + resetgame() - újrakezdi a játékot + move(int) a kívülről jövő mozgatás utasítások ezt a metódust hívják meg

6 3. Analízis modell kidolgozása 3.2.5 Key Név Felelősség Key A pályaelemen elhelyezett osztály. Felelőssége hogy kinyissa az ajtót, azaz engedélyezze az átjárást az ajtón keresztül, ha a játékos által irányított karakter már ütközött egy Key objektummal. Ősosztályok - Interfészek Sprite Attribútumok - position : Point3d - megadja a kulcs pontos helyét - visibility : Boolean - tárolja, hogy látható-e a kulcs - character : Character - metódushívások miatt tároljuk Metódusok + Key(Point3d) - létrehozáskor beállítja a kulcs pozícióját + getposition() - a kulcs pozíciójával tér vissza (interfészből) + getwidth() - a kulcs szélességével tér vissza (interfészből) + getheight() a kulcs magasságával tér vissza (interfészből) + checkhit(sprite) - az ütközésdetektálás megvalósítása (interfészből) + setinvisible() - beállítja a kulcs láthatatlanságát 3.2.6 Level Név Felelősség Level Felelőssége hogy az adott szinten egységbe foglalja a pályához tartozó pályaelemeket, számon tartsa, hogy éppen pályaelemeket irányítunk vagy a karakterrel mozgunk és a pálya végén új pályát indítson. Ősosztályok - Interfészek - Attribútumok - id : int - a pálya azonosítóját tárolja - levelitems : LevelItem[ ][ ] - a pályához tartozó pályaelemeket tárolja - activelevelitem : LevelItem - a pályaelemek közül az aktív pályaelem - EmptyItemPos_x : int - az üres pályaelem x koordinátája a pályán - EmptyItemPos_y : int - az üres pályaelem y koordinátája a pályán - character : Character - karakter, hogy nézetváltásnál eltároljuk Metódusok + getid() - a pálya azonosítójával tér vissza + moveemptyitem(int) - az üres pályaelem mozgatása + addlevelitem(levelitem) - pályaelem hozzáadása a pályához + addcharacter(charachter) a karakter hozzáadása a pályához + setactiveitem(levelitem) beállítja az aktív pályaelemet + getactiveitem() a jelenleg aktív pályaelemet adja vissza + Tick() az órától kapott óraütés ezt hívja meg közvetetten

7 3. Analízis modell kidolgozása 3.2.7 LevelItem Név Felelősség LevelItem Felelőssége a pályaelemek megvalósítása, a pályán előforduló spriteok egységbe foglalása. Szomszédos LevelItemekkel is kell kommunikálnia, hogy átjárható-e a két pályaelem közti rész. Ősosztályok - Interfészek - Attribútumok - pos_x : int - tárolja a pályaelem x koordinátáját a LevelItem[][]-ben - pos_y : int - tárolja a pályaelem y koordinátáját a LevelItem[][]-ben - id : int - a pályaelem azonosítója - sprites : List<Sprite> : pályelemen lévő spriteok tárolása Metódusok + checkneighbour(int) - megnézi, hogy dir irányban átjárhatóak-e a pályaelemek + getpos_x() - visszaadja a pályaelem x koordinátáját + getpos_y() - visszaadja a pályaelem y koordinátáját + move(int) - adott irányba mozgatja a pályaelemet + addsprite(sprite) - hozzáad egy Sprite-ot a pályaelemhez + intersectall() - megnézi hogy akrakter üzközik-e az pályán található Sprite-okkal + Tick() az órától kapott óraütést ezen függvény meghívásával tudatosul az objektumban + checkedges(point3d position, int dir) a játékos koordinátái, és a mozgásának iránya alapján ellenőrzi, hogy a karakter épp elhagyja-e a pályát, ha igen, ellenőrzi, hogy ez lehetséges-e ( LevelItemek illeszkedése alapján) 3.2.8 Sprite Név Felelősség Sprite A Wall, Character, Key, Door, azaz a pályaelemkre helyezhető osztályok közös interface-e. Így valósulhat meg a játékban a polimorfizmus. Az ezt megvalósító osztályok biztosan implementálják az ütközés detektálására felelős függvényt. Felelőssége tehát a polimorfizmus biztosítása és az ütközések detektálása. Ősosztályok - Metódusok + checkhit(sprite) - az ütközésdetektálás intrefésze + getposition() - a sprite pozíciójával + getwidth() - a sprite szélességével tér vissza + getheight() - visszatér a sprite magasságával

8 3. Analízis modell kidolgozása 3.2.9 SpriteFactory Név Felelősség SpriteFactory A SpriteFactory felelőssége hogy a közös Sprite őstől származó objektumokat egy egységes felületen keresztül hozhassuk létre. Interfészek Ősosztályok - Attribútumok - game : Game - kell, mert létrehoz olyan spriteokat, amik meghívják - character : Character - kell, mert létrehoz olyan spriteokat, amik meghívják Metódusok + creatsprite(int) - létrehoz egy adott típusú spriteot + SpriteFactory() - konstruktor + setgame(game) - beállítja a game attribútumot + setchar(character) - beállítja a character attribútumot 3.2.10 Wall Név Wall Felelősség Felelőssége a pályaelemeken a falak, a padló, oszlopok stb. megvalósítása. Lényegében a pályaelemekre helyezhető virtuális tégla, melynek mérete megadható. Ősosztályok - Interfészek Sprite Attribútumok - position : Point3d - megadja a falelem pontos helyét - width : int - tárolja a falelem szélességét - height : int - tárolja a falelem magasságát Metódusok + Wall(Point3d, int, int) - létrehozáskor beállítja a falelem pozícióját, szélességét és magasságát + getposition() - a falelem pozíciójával tér vissza (interfészből) + getwidth() - a falelem szélességével tér vissza (interfészből) + getheight() - visszatér a falelem magasságával (interfészből) + checkhit(sprite) - az ütközésdetektálás megvalósítása (interfészből)

9 3. Analízis modell kidolgozása 3.3 Statikus struktúra diagramok

10 3. Analízis modell kidolgozása 3.4 Szekvencia diagramok 3.4.1 Idő léptetése

11 3. Analízis modell kidolgozása 3.4.2 Játék indítása

12 3. Analízis modell kidolgozása 3.4.3 Játék bezárása

13 3. Analízis modell kidolgozása 3.4.4 Pályaelem és karakter irányítása

14 3. Analízis modell kidolgozása 3.4.5 Ütközésdetektálás

15 3. Analízis modell kidolgozása 3.4.6 A pálya vége

16 3. Analízis modell kidolgozása 3.4.7 A pálya széléhez ér a karakter 3.4.8 A pálya újrakezdése

17 3. Analízis modell kidolgozása 3.4.9 Kulcs felvétele 3.4.10 Nézet váltása

18 3. Analízis modell kidolgozása 3.5 State-chartok A játékhoz egyetlen state-chartot terveztünk, a nézetváltáshoz. Az, hogy a játékos miként látja az aktuális pályát, a játékban két állapotként jelenik meg. A game osztály view változója tárolja az éppen aktuális nézetet, a changeview() metódusa pedig a nézetek közti váltást valósítja meg. Az ide vonatkozó szekvencia diagram a 3.4.4. részben nézhető meg. Az állapotok közti átmenteket az alábbi diagrammal szemléltettük:

19 3. Analízis modell kidolgozása 3.6 Napló Tevékenység Időtartam Résztvevők Tevékenység leírása kezdete 2012. 02.21. 18:00 2 óra Balogh Gál Értekezlet, Martos Csocsó Klub Döntés: Kárász iteratív modellfejlesztés használata Simon Szabó fő objektumok nevének, szerepének tisztázása, első, nem részletes UML terv cél: egyszerűség, de a specifikáció teljes kielégítése 2012. 02.22. 17:00 1 óra Balogh Az első értekezleten készült tervek digitalizálása, megosztás a többiekkel 2012. 02. 23. 15:00 1 óra Simon Objektumok, az előző fejezetben készült Use-Casek és a leírás alapján lehetséges szekvencia diagramok meghatározása, megosztás a többiekkel. Ezek alapján a jegyzőkönyv vázának kitöltése. 2012. 02. 25. 12:00 1 óra Balogh 3.1 fejezet megírása 2012. 02. 25. 13:05 1 óra Simon 3.2 fejezet részleges megírása 2012. 02. 26. 15:35 1,5 óra Balogh Előzetes tervek alapján részletes static structure diagram készítés, a korábbi szekvencia diagramokat tartalmazó lista átnézése, a fontos esetek kiválogatása, a diagramok szóbeli leírása (time lineok, főbb mozzanatok) 2012. 02. 26. 17:00 7 óra Balogh Gál A rendelkezésre álló dokumentumok alapján online csapatmunka. Terv: Kárász Simon Szabó Simon készíti a szekvencia diagramot piszkozat formájában, ez alapján a struktúradiagramot javítja, ha kell. A piszkozat szekvencia diagramot elküldi Baloghnak, aki ez alapján stílusosan formázza, publikálható formára hozza. A kiadott változatokat a többiek folyamatosan nyomon követik, véleményezik, ellenőrzik. A hibásnak ítélt megoldásokat megvitatjuk közösen.

20 3. Analízis modell kidolgozása Ezen felül Gál és Szabó a 3.2 fejezet és az objektumok diagram konzisztenciáját felügyelték Kárász a kiadott, folyamatosan frissülő diagramok anyagait illesztette a megosztott dokumentumba. 2012. 02. 27. 00:15 1 óra Gál Dokumentáció ellenőrzése, finomítások, végleges kinézet megszerkesztése 2012. 02. 27. 02:13 1,5 óra Simon Végső konzisztencia ellenőrzés, nyomtatás