Zádory Zsolt BunnyDefense dokumentáció 1. Követelmény feltárás 1.1 Célkitűzés Egy egyszerű tower defense játék érintőkijelzős android telefonokra. Legalább háromféle torony és egy pálya legyen változó nehézségi szintekkel. 1.2 Szakterületi fogalomjegyzék tower defense: olyan stratégiai játék, melyben tornyok építésével kell megakadályozni a hordákban támadó ellenségek átjutását a pályán android: google linux alapú operációs rendszere 1.3 Funkcionális követelmények 1.4 Szakterületi követelmények Sok grafikus objektum mozog a képernyőn, így a megfelelő sebességhez erős többszálú optimalizálás szükséges, illetve hatékony rajzoló eljárás. Az érintőfelülethez kényelmes, megszokott elemeket kell biztosítani. 1.5 Nem funkcionális követelmények 1.5.1 Hardver 600Mhz processz 512MB RAM 1.5.2 Szoftver Android 2.2 op.rendszer 1.5.3 Fejlesztői eszközök: Archlinux i686 LibreOffice Writer dokumentálás Android SDK Revision 13 Eclipse Indigo 2. Terevezés 2.1 Program architektúrája A fő osztály az activity. Ez felel a gui megjelenítéséért és az érintés lekezeléséért. A statikus erőforrások külön xml fájlban van az átláthatóság kedvéért. Az ellenfelek és a tornyok képekként vannak megadva. Minden kép osztályban implementálva van a szálkezelés, hogy a számolás ne akassza meg a programot.
2.2 Állapotátmenet diagram 2.3 Felhasználói felület
2.4 Részletes programterv MainActivity: oncreate Létrejön az Activity. Betölti a layout -ot xml-ből, illetve a megfelelő GUI elemek kapnak Listenert (az osztály implementálja). OnTouch A felső menüben lévő tornyok váltják ki az eseményt. A tornyok képeit megragadva lehet húzni az objektumokat. A mozgatás nem folyamatos, hanem blokkonként ugrik (a játéktér blokkos szerkezetű). Érintés végekor pedig amennyiben szabad terület felett vagyunk (ezt ellenőrizni kell collideswith) létrehoz egy TowerView objektumot. OnClick Menü esményeit kezeli. Exit: running változót hamisra állítja, meghívja a kilépő parancsot Start game: létrehoz és elindít n darab ellenséget időzítve New game: újra inicializálja a játékot collideswith ütközésvizsgálat két View között TowerView TowerView Változókat kitölti a típus alapján a resource fájlra mutató pointerekkel. Torony árát levonja money -ból. run Amíg running, addig pásztázza az enemies listát. Ha valamelyik lőtávolba kerül, meghívja a tüzelő eljárást, majd vár k másodpercet és kezdi elölről. fire adott ellenségnek csökkenti a hp -ját damage értékkel (bővítés: látványos tüzelés) EnemyView EnemyView Változókat kitölti a típus alapján a resource fájlra mutató pointerekkel. run Amíg running, addig mozog a következő pontig (route tömbben léptet). Ha végigért, eggyel csökkenti a lives értékét, majd megsemmisül. sethp fire eljárás hívja. Amennyiben a hp 1 alá csökken, leveszi az objektumot a képernyőről és megsemmisíti magát, illetve növeli a money értékét.
3. Implementáció 3.1 Fejlesztőesztközök - Eclipse 3.7.1 - Android SDK plugin - UMLet plugin 3.2 Fájlok helyei ( BunnyDefense/ ) src/com/beadando/gui/ - MainActivity.java - TowerView.java - EnemyView.java bin/res/ - BunnyDefense.apk res/layout/ - main.xml res/menu/ - menu.xml res/values/ - string.xml res/drawable/ background.png bunny.png icon.png tower1/2/3/4.png 4. Tesztelés 4.1 Tesztesetek - tornyokat lehet érintésvezérelten mozgatni - tornyot nem lehet kihúzni a pályáról - nem lehet két tornyot egymásra tenni - nem lehet tornyot rakni az útra - ha sikerült lerakni a tornyot, vonja le a pénzből az árát - tornyok helyesen tüzelnek adott lőtávra, adott sebzéssel - Start Game menüpont elindítja időzítve az ellenségeket - az ellenségek csak a kijelölt útvonalon mozognak - ha elértek az út végére eltűnnek, és eggyel csökkentik az életek számát - minden körben növekszik az életük - ha a tornyok kilövik, eltűnik és hozzáad pénzt a kasszához - New Game menüpont letörli az összes tornyot és ellenséget, iicializálja a feliratokat - Exit gombra kilép a program 5. Felhasználói Dokumentáció 5.1 Ajánlott hardver, szoftver - 1Ghz vagy erősebb processzor - 512MB vagy több memória - Android 2.3 vagy újabb (4.0 különösen ajánlott) 5.2 Telepítés Rá kell nyomni a BunnyDefense.apk fájlra 5.3 Eltávolítás Beállítások Alkalmazások Alkalmazások kezelése BunnyDefense Eltávolítás
5.4 Program használata A BunnyDefense egy tower defense típusú játék. Célunk az ördögi vérnyulak legyőzése. Ha nem járunk sikerrel és végigjutnak az úton, megeszik az összes káposztát. Védekezni tornyok vásárlásával lehet. Tornyokat a felső panelről lehet vásárolni azok pályára helyezésével. Ezek erejéről és áráról a mellette lévő feliratokból lehet tájékozódni. Az út, illetve más tornyok tiltott területnek számítanak, ilyenkor meghiúsul a vásárlás. A felület teljesen érintésvezérelt, így a kényelmes drag&drop módon lehet a tornyokat mozgatni. Ha felkészültünk a rohamra, a menüben válasszuk ki a Start game pontot. Ekkor elindulnak a nyulak egymás után kis szünettel, és megpróbálnak végigjutni az úton. Ha valamelyiket sikeresen kilőttük, extra pénzhez juttat, amiből további védelmet tudunk vásárolni. Amennyiben mégis sikerül átjutni egy ellenfélnek, levon egyet az életpontunkból (ugyebár káposzta nélkül élni sem érdemes ;). Ha megszabadultunk az összes nyuszitól, lehetőség van pihenőt tartani, új tornyokat lerakni. Aztán ha felkészültünk, indíthatunk egy újabb kört. Nyulakból sosem lesz hiány, hiszen úgy szaporodnak, mint a nyulak. Azonban egyre szívósabbak lesznek minden roham után, így sosem lesz unalmas a védekezés.
Kiegészítő információk az alsó állapotsávon találhatók. Ezek sorrendben a rendelkezésre álló összeg, amiből tornyokat fehetünk, az életpontjaink, legutóbb pedig a nyulak szívosságát jelző érték. Menüben elérhető a roham indításán kívül az új játék opció New game néven. Kilépni pedig az Exit gombbal lehet. (Figyelem!!! kilépni csak a menüből szabad, más esetben újbóli indításnál rosszul működhet a program. 6. Egyéb 6.1 Ismert programhibák - nyulak nem mindig az útról indulnak - új játék kezdetekor nem mindig tűnik el az összes torony - időnként kimaradó tüzelés 6.2 Fejlesztési lehetőségek - látványos tüzelés, pl. lövedék objektumok - látványos sebződés a nyulakon, pl hp csík vagy vörös filter - tornyok fejleszthetőek legyenek - többféle ellenfél, boss level - program mentse le az állapotot, ha kikerül a fókuszból - multithreading értelmes használata - általános code cleanup, game manager osztály Felhasznált irodalom: http://developer.android.com/ http://www.oracle.com/technetwork/java/index-jsp-142903.html