2. Követelmény, projekt, funkcionalitás 2.1 Követelmény definíció: 2.1.1 A program célja, alapvetı feladata: A program nem más, mint egy ügyességi játék, ahol a feladat a pályán lévı gyémántok megszerzése. A játék célja a következı pályára való lépés, amelyet kellı számú gyémánt összegyőjtésével érhetünk el, miközben különféle akadályokat kell elkerülni és legyızni. A játékmenet részletesebb leírása a játék ismertetésénél található. A fejlesztés célja egy olyan játékprogram elıállítása, mely mőködıképes, élvezhetıen játszható, és amely minden olyan gépen futtatható, melyen a megfelelı Java futtatókörnyezet található. 2.1.2 A fejlesztıkörnyezet: Az UML modellezéshez külön segédprogramot használunk, a Sparx Systems Enterprise Architect 7.1 nevő UML fejlesztı eszközét. A forráskód szerkesztéséhez és fordításához a Netbeans IDE 6.5 fejlesztıkörnyezetet választottuk. Közben ügyelünk arra, hogy a program kompatibilis legyen a Sun Java 1.4-es szabványával. A cél az, hogy a játékprogram a Hallgatói Számítógép Központban rendszeresített JDK alatt fordítható és futtatható legyen. A dokumentumokat a Microsoft Word szövegszerkesztı különbözı verzióin készítjük el. A napló vezetésére Microsoft Word 2007-et használunk. 2.1.3 A futtatáshoz szükséges környezet: Java Runtime Environment, illetve olyan számítógép, mely ezt futtatni képes. A Sun ajánlásai a PC-re: Pentium 166 MHz vagy gyorsabb processzor és 32 MB memória. A játék használatához grafikus képernyı és billentyőzet szükséges. 2.1.4 A felhasználói felület: A játékprogram grafikus felhasználói felülettel fog rendelkezni, a programot a felhasználó billentyőzet segítségével vezérelheti. 2.1.5 Minıségi tényezık: Teljesítmény: A cél az, hogy a játék élvezhetıen játszható legyen a meghatározott minimális rendszeren. mike_lefeautt (22.) 1 / 8 2009.02.19.
Újrafelhasználhatóság: A cél az, hogy a pályákat a program többi részétıl teljesen különválasszuk, így lehetıvé téve azt, hogy késıbb egyszerően tudjunk a játékhoz új pályákat létrehozni. Rugalmasság: A rugalmasságot a fejlesztıkörnyezet biztosítja, a játéknak ugyanis minden olyan környezetben futtathatónak kell lennie, melyben létezik megfelelı Java futtatókörnyezet. Felhasználhatóság: A használat különösebb tanítást nem igényel, alapfokú számítástechnikai tudással a felhasználói kézikönyv elolvasása után könnyen játszható, az említett dokumentum is inkább az irányítás és a játékszabályok miatt fontos. 2.1.6 A szoftver minısítése: A fejlesztett szoftver akkor megfelelı, ha minél pontosabban megegyezik a fentebb leírtakkal és a feladat elızetes leírásával. Ezt ellenırizni lehet a játék futtatásával és kipróbálásával. 2.1.7 A kibocsátás: A program kibocsátása elıször a konzulens felé fog történni. Az ellenırzés és az értékelés után a program a világhálón is elérhetıvé válik. 2.2 Projekt terv: 2.2.1 A fejlesztıi csapat: CSAPATTAG NEVE Mikes Péter Tündik Máté Ákos Déri András Sóskuthy Zalán FELADATKÖRE csapatvezetı, kód, naplózás, egyéb dokumentáció, teszt kód, teszt dokumentáció, teszt 2.2.2 Életciklus modell: A feladat elıször a program megtervezése, mely a dinamikus- és objektummodelleket foglalja magába. Ezen feladatok elvégzése után elkezdıdhet a szkeleton rész tervezése és implementálása. A megfelelı modellek alapján itt már nem merülhet fel semmiféle komplikáció. A szkeleton rész elvégzése után a programnak alkalmasnak kell lenni arra, hogy a különbözı forgatókönyvek és szekvencia diagramok ellenırizhetık legyenek. A következı feladat a prototípus elkészítése. A prototípus program célja annak demonstrálása, hogy a program elkészült, helyesen mőködik, valamennyi feladatát teljesíti, csak a kifejlett grafikus interfész hiányozhat. A programnak ebben az állapotban könnyen mike_lefeautt (22.) 2 / 8 2009.02.19.
tesztelhetınek kell lennie. A megjelenítés és mőködtetés egy alfanumerikus képernyın lesz követhetı, ugyanakkor a megjelenítés fájlban is logolható lesz, ezzel megteremtve a rendszer tesztelésének lehetıségét. Ha már a prototípus is megfelelı, akkor kezdıdhet a grafikus felület megvalósítása. A teljes változat a prototípustól csak a kezelıi felület minıségében fog különbözni. Itt is fontos a tesztelés és a kiértékelés, mert a jó megjelenés sokat számít a játék élvezhetıségében. Ha fentebb említett feladatrészek elkészültek, kész lesz a program elsı változata. A kötelezı feladat csak eddig tart, ezt a változatot kell leadni a dokumentációval és a forráskóddal együtt. 2.2.3 Szervezési struktúra: A csapat négy emberbıl áll. A feladat szempontjából a tudásunk közel azonos, s bár programozókra és dokumentálókra osztottuk a csapatot, terveink szerint a programozók is fognak dokumentálni és a dokumentálók is fognak programozni. Azt a felépítést választottuk, hogy mindenki az érdeklıdésének és tudásának legmegfelelıbb részeket kapja az egyes feladatokból. A feladatok szétosztását az értekezleteken beszéljük meg, ahol az egyéni kívánságok mellett ügyelünk arra is, hogy minden feladat kiosztásra kerüljön, valamint a csapattagok az egész feladat megoldásából nagyjából egyenlı mértékben vegyék ki a részüket. Az értekezleteken, mivel a szétosztott feladatok nagymértékben függnek egymástól, javaslatokat teszünk egymásnak a feladat megoldásának körülményeit és a határidıket illetıen. Ezt követıen a csapattagok elvégzik a rájuk kiosztott feladatokat, majd a többi csapattag is átnézi a másik a munkáját és közös egyeztetés után tesszük közzé a végsı verziókat. Hogy a fejlesztés minél hatékonyabb és zökkenımentes legyen, folyamatosan értekezünk a következı módokon: a fı értekezési pont az értekezletek, itt beszéljük meg a leglényegesebb dolgokat; személyesen és különbözı messenger programok és e-mail-eken keresztül is értekezünk; létrehoztunk a világhálón egy csapatcetlit, melyre bárki kiírhatja a fontos információkat, ötleteit; a feladatok megoldása közben keletkezett anyagokat egy a csapat tagjai számára hozzáférhetı helyen tároljuk és SVN verziókezelést használunk. 2.2.4 Fejlesztési ütemterv: A program fejlesztésének három fı lépcsıfoka van, ezek a következık: Szkeleton: A cél az, hogy mind a dinamikus, mind az objektum modell jól legyen kitalálva. Ha ezek elkészültek, akkor a fejlesztés szempontjából sikeresen leraktuk a szükséges alapokat. Prototípus: Ez szinte már a teljes változat, csak a grafikus felület elemei hiányoznak. Ez a változat tökéletesen megfelelı arra, hogy az objektumok, rutinok, függvények szemantikai helyességét vizsgáljuk. mike_lefeautt (22.) 3 / 8 2009.02.19.
Grafikus változat: A program teljes változata. Tulajdonképpen a prototípus a grafikus felülettel kiegészítve, esetleg kismértékben továbbfejlesztve. 2.2.5 Határidık: Febr. 13. Febr. 19. Febr. 26. Márc. 5. Márc. 12. Márc. 19. Márc. 26. Ápr. 2. Ápr. 16. Ápr. 23. Máj. 7. Máj. 14. A csapatok regisztrációja Követelmény, projekt, funkcionalitás beadása Analízis modell kidolgozása I. beadása Analízis modell kidolgozása II. beadása Szkeleton tervezése beadás Szkeleton beadása Prototípus koncepciójának beadása Részletes tervek beadása Prototípus beadása Grafikus felület specifikációjának beadása Grafikus változat beadása Összefoglalás beadása 2.2.6 Szükséges dokumentációk: Az a dokumentáció, mely a fejlesztés során keletkezik, a program belsı mőködési elvét jeleníti meg, egy esetleges továbbfejlesztésnél nagy elınyt jelent. Ezentúl a felhasználó számára is szükséges egy dokumentáció készítése, a játszhatóság és a könnyő használhatóság érdekében. A program a felhasználónak készül, így azt úgy kell közzétenni, ahogy a felhasználó elvárja és megérti azt, a játék pedig örömet és nem bosszúságot jelent a számára. 2.3 Kibıvített feladatleírás JÚZ KÉZ A JÁTÉK A játék nevét Júz Kéz, a kincskeresı indián ihlette, akinek a feladata az, hogy gyémántokat győjtsön össze egy kétdimenziós nézető barlangban. A barlangot fal veszi körül, ezen a falon az indián semmiképpen sem tud áthatolni. Magát a barlangot alapvetıen gránitok, sziklák, kiásható föld, valamint gyémántok alkotják. Ezek a geológiai tényezık jelentıs mértékben befolyásolják Júz Kéz mozgását. Júz Kéz 4 irányban képes mozogni: le-fel-jobbra-balra. Ez a szabad mozgás csak akkor lehetséges, ha ezekben az irányokban Júz Kéz mellett csak föld, vagy a kiásott föld helyén maradó üres terület található. mike_lefeautt (22.) 4 / 8 2009.02.19.
Ha gyémántos mezıre lép Júz Kéz, akkor a gyémántot felveszi, növekszik a begyőjtött gyémántok száma, és a gyémánt helyén üres terület keletkezik. Ha sziklával találkozik, képes odébb tolni, feltéve, hogy üres mezı van elıtte. A játék során gravitációval is kell számolnia bátor indiánunknak, amely akár halálát is okozhatja. Ugyanis, ha egy szikla alól kiássuk a földet, akkor a lefelé zuhanó(!) szikla Júz Kéz halálát okozza. Ugyanez igaz, a zuhanó gyémántokra is! Ha a szikla nem zuhan, csak alatta áll Júz Kéz, akkor a fejével képes azt halálos sérülés nélkül megtartani. A gránitra nincs hatással a gravitáció. Szintén a gravitáció okozza azt, hogy ha egymáson lévı sziklák vagy gyémántok találhatóak a barlangban, akkor ezek megfelelı üres hely esetén kupacban omlanak le. Az a szabály, hogy ha van lehetıség, akkor a legördülés iránya a bal, egyébként a jobb. A leomlást mindig a legfelsı elem kezdi. A sziklával ellentétben a gránitot nem lehet mozgatni, fel kell robbantani, hogy Júz Kéz a robbanószer lyukfúrása után tovább tudjon haladni. A robbanószer 2 célja tehát a grániton való áthatolás, és szörny-pusztítása. A robbanószer Júz Kéz mozgásához hasonlóan 4 irányban robbantja a földet (1 mezı hatótávban), tehát átlósan nem tud rombolni, valamint lehelyezését követıen 3 másodperc múlva robban. A robbanószerrel vigyázni kell, mert elpusztíthatja fıhısünket! Megjelennek tehát még szörnyek is. Ezeknek 2 típusa van: Amıba, Kefír. Az Amıba terjeszkedik a barlang falától annak belseje felé haladva, s szerencsétlen esetben körbezárja hısünket. Elpusztítani robbantással nem lehet, csak menekülni szorító fogságából. Az Amıba csak földdel táplálkozik növekedése során, valamint üres területre is ránıhet, de a gránitot, a gyémántot és a játékost nem tudja megenni! Kefír vérszomjasan üldözi Júz Kézt, azonban ha rázuhan egy szikla, gyémánttá változik. Ha robbanószer által hal meg, nem kapunk gyémántot, helyén üres mezı lesz. Kefír akkor öli meg Júz Kézt, ha a barlangban közvetlenül egymás mellé kerülnek. Miután Júz Kéz sikeresen felszedte az összes gyémántot, a barlang falán megjelenik a kijárat. Amikor Amıba által körbekerített pályán győjtöget Júz Kéz, akkor a barlang közepe tájékán jelenik meg a kijárat, annak könnyebb elérése érdekében. A többi barlang esetén a barlang keretéül szolgáló fal egyik mezıje változik kijárattá. Így a következı pályára jutunk, kivéve az utolsó pályát, hiszen: Az utolsó szint teljesítése után a készítık gratulációja fogadja a játékost. A barlangban maradó (Kefír robbantásból hátramaradó) gyémántok csak bónuszt jelentenek, a szintlépéshez ezek begyőjtése nem követelmény. A játék 3 szintbıl áll. Az elsı szinten csak gyémántokat kell összegyőjtögetni (különösebb nehézségek nélkül, szörnyektıl nem kell tartani, csak a terepakadályokat kell leküzdeni), a 2.-on megjelenik a vérszomjas Kefír, a 3. szinten pedig az Amıba. A 2. szinten nem feltételnül kell megölni a Kefírt a sikeres szintlépéshez. A játék tartalmaz egy instant pályaugrási lehetıséget is, amelyet úgy érhetünk el, hogy a Kefírre gyémántot ejtünk. mike_lefeautt (22.) 5 / 8 2009.02.19.
Minden szint teljesítéséhez 60 másodperc áll rendelkezésre. Ha lejár az idı, Júz Kéz meghal. Júz Kéz halála esetén (akár szörny által, akár idıtúllépés miatt történt): az adott szintet újra kell kezdeni! 2.4 Szótár Júz Kéz Gyémánt Barlang Gránit Fal Szikla Kiásható föld Üres terület Mezı felveszi Begyőjtött gyémántok száma Odébb tolni a kincskeresı indián, a játék fıszereplıje olyan eleme a pályának (szintnek), melyet Júz Kéz győjt össze, ez a győjtögetés adja a játék lényegét maga a játéktér, melyen belül mozognak a szörnyek és Júz Kéz is, emellett többféle terepelemnek ad teret, pl. a már említett Gyémántnak, emellett gránitnak, sziklának, földnek olyan terepelem, mely mozdíthatatlan, azonban robbantás után át lehet haladni helyén a Barlang-ot (játékteret) veszi körül, mozdíthatatlan és megsemmisíthetetlen terepelem olyan terepelem, mely mozdítható, emellett képes zuhanni és gördülni is ezt a fajta terepelemet nevébıl adódóan Júz Kéz ássa ki., mely annyit tesz, hogy az ilyen típusú mezıre lépve üres területté válik olyan terepelem, amelyen szabad az átjárása a szörnyeknek és Júz Kéznek is, emellett zuhanópályául szolgálhat gyémántnak és sziklának a barlangot felépítı elemek, mezın állhat szikla, gyémánt, szörny, stb Júz Kéz begyőjti, felveszi a gyémántot, ekkor a gyémánt helyén üres terület lesz ahány gyémántot felvett az adott szinten Júz Kéz. Minél többet vett fel, annál több ponttal rendelkezik. A pálya végére a begyőjtött gyémántok számának maximálisnak kell lennie (ebbe azokat értjük bele, melyek eredetileg is a barlang mezıin megjelentek, bónuszokat nem számítjuk bele.), hisz csak ebben az esetben teljesíthetı a pálya, ekkor jelenik meg a kijárat Júz Kéz képes a sziklát a pálya üres mezıjére mozgatni, odébb tolni mike_lefeautt (22.) 6 / 8 2009.02.19.
Halál megtörténhet szörnyekkel és Júz Kézzel is; ha utóbbinál következik be a halál, akkor annak a pálya újrakezdése lesz a következménye. Ha szörnyek halnak meg, könnyebb teljesíteni a pályát, kevesebb az akadályozó tényezı Zuhanó(!) szikla ha több mezınyi üres terület van a szikla alatt és Júz Kéz nem áll a szikla alatt közvetlenül zuhanni kezd, és halált okozhat, Júz Kéznek is, szörnyeknek is Zuhanó gyémántokra ugyanaz igaz Júz Kéz esetében, mint a zuhanó sziklára. Azonban ha Kefírre esik, akkor: Szintlépés következik be! Kupacban omlanak le a zuhanó sziklák és a gyémántok is, melynek elızményeként egymáson legördülnek Legördülés sziklák és gyémántok esetén bekövetkezı esemény, a lehetıségekhez mérten mindig balra gördülnek el, ha ez nem lehetséges, akkor jobbra Robbanószer lyukfúrása robbanószert helyezünk a gránit melletti mezıre, majd ez felrobban, lyukat fúr rajta, és a lyukfúrás által keresztülhaladhatunk azon a mezın is Szörny-pusztítása robbanószerrel és sziklával lehetséges, annak halálát okozza Lehelyezés a robbanószert a megfelelı helyre lehelyezve Kefírt ölhetünk, illetve gránitot robbanthatunk Szörny mozgó pályaelem, mely megkeseríti Júz Kéz gyémántgyőjtési akcióját. Két típusa van: Amıba és Kefír Amıba szaporodásra képes szörny, mely a pálya szélétıl indulva terjeszkedik a középpontja felé, megölni nem lehet, de ı sem öli meg Júz Kéz-t, csak körbekerítheti Kefír üldözi Júz Kézt, és ha szomszédos mezıre kerül vele, halált okoz neki, azonban elpusztítható robbanószerrel, és zuhanó sziklával is (ekkor átalakuláson megy keresztül). Ha zuhanó gyémánttal találkozik, pályaugrás következik be Gyémánttá változik kefírre igaz, ha zuhanó szikla pusztítja el Kijárat A kijárat biztosítja a szintek közti átjárást. A megfelelı számú gyémánt összegyőjtése után jelenik meg a barlangban. Terepakadályok Gránit, Szikla, amelyek lassítják Júz Kéz mozgását Instant pályaugrási Ha kefírre gyémánt zuhan, ez következik be. lehetıség Idıtúllépés Max. 60 másodperc áll rendelkezésre az egyes pályák teljesítésére. Ha valaki ezt túllépi, akkor Júz Kéz meghal. mike_lefeautt (22.) 7 / 8 2009.02.19.
2.5 Essential use-case-ek és diagramjuk: 2.5.1 Diagramok: 2.5.2 Use-case-ek leírása: Use-case: Actor: Leírás: új játék játékos A játékos új játékot kezd Use-case: Actor: Leírás: gyémántgyőjtés játékos A játékos gyémántokat győjt. Use-case: Actor: Leírás: pályalépés játékos A játékos a gyémántok összegyőjtése után pályát lép. mike_lefeautt (22.) 8 / 8 2009.02.19.