Csoport neve: Segmentation_Fault

Feladat sorszáma: 6

Feladat címe: Stratégiai játék






Analízis modell




Gyakorlatvezető::

Repási Tibor

Segmentation Fault Logo




Csoport tagok:


Turai Attila

j74x9i

turai1@iit.uni-miskolc.hu

Hadházi Csaba

uvbydq

hadhazi1@iit.uni-miskolc.hu

Keserű János

iu84y5

keseru@iit.uni-miskolc.hu

Petrik András

f3zyt9

petrik3@iit.uni-miskolc.hu

Sebe György

ozj1fr

sebe2@iit.uni-miskolc.hu


2006.04.21







Történet


Dátum

Verzió

Leírás

Szerző

2006.04.08.

0.1

Kezdeti verzió

Segmentation_Fault

2006.04.18.

1.0

2. Kezdeti osztálydiagram

Hadházi Csaba,
Keserű János,
Petrik András,
Sebe György,
Turai Attila

2006.04.21.

1.1

Alrendszerek módosítása
3. Network System alrendszer modellje

Turai Attila,
Keserű János

2006.04.21. 1.2
5. Graphics System alrendszer modellje
Keserű János,
Petrik András,
Sebe György,
Turai Attila
2006.04.21. 1.3

4. Audio System alrendszer modellje

Sebe György
2006.04.21. 1.4
6. Game Core alrendszer modellje Keserű János,
Petrik András
2006.04.21. 1.5 1. Bevezetés
Turai Attila
2006.04.21. 2.0
A dokumentum véglegesítése.
Segmentation_Fault




Tartalomjegyzék

 

1. Bevezetés

2. Kezdeti osztálydiagram

2.1. Osztálydiagram
2.2. Osztályok felsorolása
2.3. Alrendszerek

3. Network System alrendszer modellje

3.1. Statikus modell

3.1.1. Kapcsolatok pontosítása
3.1.2. Attribútumok azonosítása
3.1.3. Bázisosztályok keresése

3.2. Dinamikus modell

3.3. Funkcionális modell

3.4. Operációk azonosítása

3.5. Az analízis modell osztálydiagramja.

3.6. Az analízis modell osztályainak listája.

3.6.1. Networks

4. Audio System alrendszer modellje

4.1. Statikus modell

4.1.1. Kapcsolatok pontosítása
4.1.2. Attribútumok azonosítása
4.1.3. Bázisosztályok keresése

4.2. Dinamikus modell

4.3. Funkcionális modell

4.4. Operációk azonosítása

4.5. Az analízis modell osztálydiagramja.

4.6. Az analízis modell osztályainak listája.

4.6.1. Audio

5. Graphics System alrendszer modellje

5.1. Statikus modell

5.1.1. Kapcsolatok pontosítása
5.1.2. Attribútumok azonosítása
5.1.3. Bázisosztályok keresése

5.2. Dinamikus modell

5.3. Funkcionális modell

5.4. Operációk azonosítása

5.5. Az analízis modell osztálydiagramja.

5.6. Az analízis modell osztályainak listája.

5.6.1. FightChangeScreen

5.6.1.1. CityScreen
5.6.1.2. ChangeScreen
5.6.1.3. FightScreen
5.6.2. MainMenu
5.6.3. Graphics

6. Game Core alrendszer modellje

6.1. Statikus modell

6.1.1. Kapcsolatok pontosítása
6.1.2. Attribútumok azonosítása
6.1.3. Bázisosztályok keresése

6.2. Dinamikus modell

6.3. Funkcionális modell

6.4. Operációk azonosítása

6.5. Az analízis modell osztálydiagramja.

6.6. Az analízis modell osztályainak listája.

6.6.1. Controller
6.6.2. FileHandler
6.6.3. Unit

6.6.3.1. MovingUnits
6.6.3.1.1. CirkaWorm

6.6.3.2. PlatoonUnit
6.6.3.2.1. CityUnit

X. Mellékletek

 

 

1. Bevezetés

Ez a dokumentum  felelős azért, hogy birokoljuk azt az információhalmazt, amely ahhoz szükséges, hogy függvénykönyvtáraink implementálása már minden akadálytól mentes legyen.
A dokumentumban felépitettük az osztályaink szerkezetét, viselkedést külöböző típusú diagrammok segítségével. A dokumentumban alrendszerekre bontva található meg osztályaink leírása, osztályterveink.

2. Kezdeti osztálydiagram 


2.1. Osztálydiagram

 

Kezdeti osztálydiagram

 

2.2. Osztályok felsorolása

Az eddig lerealizálódott osztályok felsorolása:
Osztályok leírása:

A központi vezérlő osztály. Az összes többi objektum rajta kersztül végez adatcserét. Kezdettől fugva fut és ő pédányosítja az osztályok nagy részét. A program fő változói és az azokon manipuláló függvények részei az osztálynak.

A grafikus megjelenítésért felelős osztály. Alapvető rajzoló és textúrákat megjelenítő függvények feglalnak benne helyet. A metódusai a grafikus megjelenítés egy-egy részfunkcióját valósítják meg.

- Homok, szikla és víz kirajzolása.
- Mozgó objektum kirajzolása.
- Kijelölés megvalósítása.
- Vonalhúzás ( mozgás kijelöléséhez ).
- HUD( Head Up Disaply ) kirajzolása.
- Térkép rajzolása.
- Üzenetkiirás megvalósítása.
- Kör számának kiirása.
- Víz mennyiségének kiirása.

- Homok.
- Szikla és víz.
- Mozgó egységek.
- Mozgás jelzők és kijelölés.
- HUD - keret és nyomógombok.
- Térkép.
- Üzenetek( kör, víz, egység tulajdonság ).
- Menü.

A hálozati kapcsolat felépítéséért és az azon keresztüli információcseréért felel. A bejövő információkat a Controllernek továbbítja.

A fájlműveletekért felel. Ment, létrehoz, módosít fájlokat. Elvégzi a játékállapot lementését, betöltését, illetve a konfigurációs fájl(ok) módosítását.

Külön szálon fut. Biztosítja a háttérzenét, és a különböző események által igényelt hangokat megszólaltaja. Az egységek esetén egy, az egységre jellemző hangminta halmazból választ, és véletlenszámgenerátor segítségével egy hangmintát megszóaltat.

A jaték főmenüét valósítja meg. A felhasználó egy menürendszerből választhatja ki, hogy mit kívan tenni. A menü a Felhasználói kézikönyvben leírt menürendszerrel egyezik meg, az ehhez kapcsolódó metódusok és adattagok szerepelnek benne.

 - City Screen : A Város fejlesztése és az egységek gyártása,csapatba szervezése.
 - Battle Screen : Csata lebonyolítása.
 - Platoon Screen : Csapat átszervezés,összevonás és menedzselés.

Az egységek megvalósításáért felel. Felépítése egy osztályhierarchia, amelyben az egyes alosztályok egységeket reprezentálnak. Az ősosztályban már megjelennek a közös adattagok és alapvető függvények, amelyek folyamatosan bővülnek a hierarchiában lefelé haladva.

 

2.3. Alrendszerek

 Alrendszerek


Alrendszerek felsorolása:
Osztályok leírása:
A játék központi magja. A játék fő feladatait ellátó osztályok összefogásáért felel.
A hálózati kommunikációért felelős osztályokat foglalja magába.
A hangok megszólaltatásáért felel.
Minden olyan osztályt taralmaz, mely grafikus megjelenítést is végez.

 

3. Network System alrendszer modellje

 

3.1. Statikus modell

 

3.1.1. Kapcsolatok pontosítása

Netwok_Kapcsolat

3.1.2. Attribútumok azonosítása

Netwok_Attributumok

3.1.3. Bázisosztályok keresése

 

3.2. Dinamikus modell

Network_Dinamikus

3.3. Funkcionális modell

Network_Funkcionalis

3.4. Operációk azonosítása


Netwok_Operaciok

3.5. Az analízis modell osztálydiagramja

Network_Anal_Modell_Diagram

3.6. Az analízis modell osztályainak listája

3.6.1. Networks

Név
Típus
Leírás
socket_id
int
A sucket azonosítója.
host
char **
Az ellenfél hostjának(jainak) az azonosítója.
port
int
Port száma.
change_struct
struct
Üzenet struktúra megvalósítása, amely a változásokat tartalmazza.

Név
Argumentumok
Leírás
open_socket
-
Socket létrehozása.
connect
- Kapcsolat létrehozása hosttal.
send
- Üzenet küldése.
close_socket
- Socket bezárása.
receive
- Üzenet olvasása a socket-ból. Ő valósitja meg az interface-t a Controller osztállyal.
networks
host, port
Konstruktor. A host név és a port béállítása.


4. Audio System alrendszer modellje

 

4.1. Statikus modell

 

4.1.1. Kapcsolatok pontosítása


               Audio_Kapcsolat

4.1.2. Attribútumok azonosítása

                Audio_Attributumok

Kódszavaknak(egész számok) feleltetjük meg a fájlokban letárolt hangeffektusokat és zenéket. Ezekkel a kódszavakkal hívjuk meg az egyes  hanghatásokat, így  nem kell  hosszú  sztringeket  használni aktuális paraméterként, ezzel időt takarítva meg.

 4.1.3. Bázisosztályok keresése

4.2. Dinamikus modell

               Audio_Dinamikus     

4.3. Funkcionális modell


            Audio_Funkcionalis

4.4. Operációk azonosítása

               Audio_Operaciok
A Graphics alrendszer MainMenu és InGameMenu osztálya hívja meg, a gombkattintásokat valósítja meg mindkét osztályban.
A Game Core alrendszer Controller osztálya hívja meg, hogy megvalósítsa környezet hangját: pl. szélsüvítés, vízcsobogás, homokvihar stb.A függvényhíváshoz számokat használunk, a számok hangeffekteknek felelnek meg, kódtábla tartalmazza a megfeleltetéseket.(hogy mely számnak mely környezeti hanghatás felel meg). 2000-től 2020-ig vannak számozva e függvény hanghatásainak a kódjai.
A Game Core alrendszer Controller osztálya használja, zenéket játsz le a segítségével, hogy fokkoza a játékélményt. A Music függvény.az Environment függvényhez hasonlóan számokat használ input paraméterének, amik konkrét mp3-as zenefájloknak felelnek meg a merevlemez meghajtón. Kódtábla tartalmazza ezeket a párosításokat, a kódszavak 1000-től 1020-ig terjednek.
A Game Core alrendszer Unit osztálya alkalmazza. A Unit osztály  képernyőn megjelenő egységeinek a hangeffektusait jeleníti meg.
Aktuális paramétere egy kétjegyű szám, az első szám egy adott egységet jelöl, a második az adott egység egy hangeffektjét:
pl. 11=1-es kódszámú egység(pl. forrás) 1-es kódszámú hangja(pl. kijelölés).
pl. 34=3-as kódszámú egység(pl. tank) 4-es kódszámú hangja(pl. lövés).

4.5. Az analízis modell osztálydiagramja

               Audio_Anal_Modell_Diagram

4.6. Az analízis modell osztályainak listája

4.6.1. Audio

Név
Típus
Leírás
fajlkod
int
A betöltendő zene kódja, ami konkrét fájlnak felel meg.

Név
Argumentumok
Leírás
click
-
Egérklikk hang lejátszása.
environment
fajlkod
Környezet hanghatásainak a betöltése. (pl. víz, szél, homokvihar stb.)
music
fajlkod
A játék zenéinek lejátszása.
voice
fajlkod
A játék egységei hangjainak lejátszása. (pl, lövés, mozgás, kijelölés stb.)
      


5. Graphics System alrendszer modellje

 

5.1. Statikus modell

 

5.1.1. Kapcsolatok pontosítása

GraphicsSystem_Kapcsolatok

 

5.1.2. Attribútumok azonosítása

GraphicsSystem_Attributumok

 

5.1.3. Bázisosztályok keresése

5.2. Dinamikus modell

Graphic_Dinamikus_MainMenu
Az állapotdiagram szemlélteti a MainMenu osztály működését.

Graphic_Dinamikus_Graphics
Az állapotdiagram szemlélteti a Graphics osztály működését.

Graphic_Dinamikus_CityScreen
Az állapotdiagram szemlélteti a CityScreen osztály működését.

Graphic_Dinamikus_ChangeScreen
Az állapotdiagram szemlélteti a ChangeScreen osztály működését.

Graphic_Dinamikus_FightScreen
Az állapotdiagram szemlélteti a FightScreen osztály működését.

5.3. Funkcionális modell

Graphic_Funkcionalis

5.4. Operációk azonosítása

GraphicsSystem_Operaciok

5.5. Az analízis modell osztálydiagramja

Graphic_System_Anal_Modell_Diagram

5.6. Az analízis modell osztályainak listája

5.6.1. FightChangeScreen

Név
Típus
Leírás
-
-
-

Név
Argumentumok
Leírás
show_screen
-
A FightChangeScreen képernyő kirajzolása.

5.6.1.1. CityScreen

Név
Típus
Leírás
-
-
-

Név
Argumentumok
Leírás
create
mit, mennyit
Mit paraméterben kapott egységet legyártja mennyit életerővel.
develop
-
A város maturity értékét növeli 10%- al, és csökkenti a vizet x egységgel.
send_commando
-
Létrehoz egy új csapatot és beletölti az egységeket.
send_unit
mit
Városon belüli csapatba helyezi az egységet.

5.6.1.2. ChangeScreen

Név
Típus
Leírás
csapat1 int
Az egyik csapat azonosítója.
csapat2
int
Az masik csapat azonosítója.

Név
Argumentumok
Leírás
ChangeScreen
csapat1, csapat2
Beállítja melyik az a két csapat, amik között lezajlik az egységcsere.
move
egyseg, hova
Mozgatja a paraméterül kapott egységet az egyik csapatból a másikba.

5.6.1.3. FightScreen

Név
Típus
Leírás
-
-
-

Név
Argumentumok
Leírás
FightScreen
csapat1, csapat2
Beállítja melyik az a két csapat, amik között lezajlik a csata.
Az egyik csapat természetesen lehet féreg is.
attack
tamodaok
A csata lebonyolításáért felel.


5.6.2. MainMenu

Név
Típus
Leírás
-
-
-

Név
Argumentumok
Leírás
MainMenu
menu_tipus
A menü felépítésért és lebonyolításáért felel.
~MainMenu
-
A menü lebontását bonyolítja le.
exit
-
A program szabályos lezárását segíti elő.

 

5.6.3. Graphics

Név
Típus
Leírás
-
-
-

Név
Argumentumok
Leírás
homok_szikla_viz_kirajzolo
-
A homokot, a sziklát és forrást rajzolja ki.
mozgo_objektum_kirajzolo
-
A mozgó objektumokat jeleníti meg.
kijeloles
-
Az egység kijelőlésénél a kijelölést jelző grafikát jeleníti meg.
vonal_huzas
-
A mozgás kijelőlésének jelőlésére egy vonalat húz az adott pontra.
hud_rajzolo
-
A hud-ot építi fel és kezeli.
map_rajzolo
-
A térképet rajolja ki.
uzenet_kiiro
-
A játék és más felhasználó által küldött üzeneteket jeleníti meg.
kor_kiiro
-
Kiírja hanyadik körben járunk.
viz_kiiro
-
A kitermelt víz mennyiségét frissíti.

6. Game Core alrendszer modellje

 

6.1. Statikus modell

 

6.1.1. Kapcsolatok pontosítása

GameCore_Kapcsolatok

6.1.2. Attribútumok azonosítása

GameCore_Attributumok

 

6.1.3. Bázisosztályok keresése

 

6.2. Dinamikus modell

GameCore_Dinamikus

6.3. Funkcionális modell

GameCore_Funkcionalis

6.4. Operációk azonosítása

GameCore_Operaciok

6.5. Az analízis modell osztálydiagramja


GameCore_Anal_Modell_Diagram

6.6. Az analízis modell osztályainak listája

6.6.1. Controller

Név
Típus
Leírás
map_matix
struct **
A játékteret tárolja.
turn_counter
int
Körök számát tárolja.
system_variables
struct
A program beállításait tároló struktúra.

Név
Argumentumok
Leírás
send_turn_data
package
Kör adatainak elküldése a hálózati osztály segítségével.
get_turn_data
-
Kör adatainak lekérése a hálózati osztálytól.
play_music
-
Véletlenszerű zene lejátszása az audio osztály segítségével.
draw_sceen
-
Képernyő kirajzoltatása a graphics osztállyal.
redraw_sceen
-
Képernyő változásainak újrarajzolása
generate_storm
-
Vihar generálása.
create_unit
type
Egység létrehozása
load_map
level_name
Játékállás/térkép betöltése a FileHandler-en keresztül
save_map
-
Játékállás lementése
draw_city_screen
city_data
Város képernyő kirajzolása
draw_change_screen
platoon1, platoon2 Change Screen kirajzolása
draw_fight_sceen
platoon1, platoon2 Csata képernyő kirajzolása
accomplish_turn
-
Kör végrehajtása
init_game
-
Játék inicializálása

6.6.2. FileHandler

Név
Típus
Leírás
file_resource
File *
Megnyitott file azonosítója

Név
Argumentumok
Leírás
FileHandler
file_tipus
Konstruktor új file létrehozásához
FileHandler file_nev
Konstruktor meglévő filehoz
betoltes
-
betölti a játkállást és pályát a fileból
mentes
-
lementi a játékállást
torles
-
letörli az aktuális filet

6.6.3. Unit

Név
Típus
Leírás
pozx
int
egység x koordinátája
pozy
int
egység y koordinátája
life
int
egység életereje / víz mennyisége

Név
Argumentumok
Leírás
Unit
x, y, life
konstruktor
get_x
-
x koordináta lekérése
get_y
-
y koordináta lekérése
set_x
x
x koordináta beállítása
set_y y
y koordináta beállítása
get_life
-
életerő lekérése
set_life
life
életerő beállítása
alter_life
life, increment
életerő növelése/csökkentése

6.6.3.1. MovingUnits

Név
Típus
Leírás
attack_points
int
támadási érték
defense-points
int
védekezési érték
speed
int
sebesség

Név
Argumentumok
Leírás
MovingUnits
x, y, life
-
get_attack_points
-
támadási érték lekérése
inc_attack_points inc
paraméterrel növeli az attack_points értékét
get_defense_points -
védekezési érték lekérése
inc_defense_points inc
paraméterrel növeli az defense_points értékét

6.6.3.1.1. CirkaWorm

Név
Típus
Leírás
-
-
-

Név
Argumentumok
Leírás
move
-
véletlenszerű érték és irány szerinti mozgás elvégzése

6.6.3.2. PlatoonUnit

Név
Típus
Leírás
units
Unit **
tartalmazott egységek pointereit tartalmazó tömb

Név
Argumentumok
Leírás
get_units
-
a units tömbbel tér vissza

6.6.3.2.1. CityUnit

Név
Típus
Leírás
maturity
int
fejlettséget reprezentáló érték

Név
Argumentumok
Leírás
get_maturity
-
maturity értékével tér vissza
set_maturity
maturity
maturity értékét állítja be


X. Mellékletek

A követközökben a mellékletek a pontokhoz kapcsolódva írjuk le.

5.2. Dinamikus modell

6.5. Az analízis modell osztálydiagramja

Mivel a mellékletben szerepő ábrák egy képernyőre méretezve sem olvashatóak, így ezeket az ábrákat az olvasó teljes méretükben tekintheti meg.


Vissza a nyitólapra.