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
FELADATKÖRE
Mikes Péter
csapatvezetı, kód, naplózás, egyéb
Tündik Máté Ákos Déri András
dokumentáció, teszt kód, teszt
Sóskuthy Zalán
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.
A csapatok regisztrációja Követelmény, projekt, funkcionalitás beadása
Febr. 26. Márc. 5. Márc. 12. Márc. 19.
Analízis modell kidolgozása I. beadása Analízis modell kidolgozása II. beadása Szkeleton tervezése beadás Szkeleton beadása
Márc. 26. Ápr. 2. Ápr. 16. Ápr. 23.
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
Máj. 7. Máj. 14.
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
a kincskeresı indián, a játék fıszereplıje
Gyémánt
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,
Barlang
emellett többféle terepelemnek ad teret, pl. a már említett Gyémántnak, emellett gránitnak, sziklának, földnek
Gránit
olyan terepelem, mely mozdíthatatlan, azonban robbantás után át lehet haladni helyén
Fal
a Barlang-ot (játékteret) veszi megsemmisíthetetlen terepelem
körül,
mozdíthatatlan
és
olyan terepelem, mely mozdítható, emellett képes zuhanni és
Szikla
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é
Kiásható föld
válik Üres terület
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
Mezı
a barlangot felépítı elemek, mezın állhat szikla, gyémánt, szörny, stb
felveszi
Júz Kéz begyőjti, „felveszi” a gyémántot, ekkor a gyémánt helyén üres terület lesz
Begyőjtött száma
gyémántok 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
Odébb tolni
mike_lefeautt (22.)
Júz Kéz képes a sziklát a pálya üres mezıjére mozgatni, „odébb tolni”
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
mike_lefeautt (22.)
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.
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:
új játék játékos
Leírás:
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.