Documente Academic
Documente Profesional
Documente Cultură
Mortar Mayhem
MPS Joi 8-10 (Team Name Pending)
Cuprins
1. Scopul documentului
2. Conţinutul documentului
3. Modelul datelor
3.1. Structuri de date globale
3.2. Structuri de date de legătură
3.3. Structuri de date temporare
3.4. Formatul fişierelor utilizate
4. Modelul arhitectural şi modelul componentelor
4.1.1. Arhitectura
4.1.2. Şabloane arhitecturale folosite
4.1.3. Diagrama de arhitectură
4.2. Descrierea componentelor
4.3. Restricţiile de implementare
4.4. Interacţiunea dintre componente
5. Modelul interfeţei cu utilizatorul
5.1. Succesiunea interfeţelor
5.2. Ferestrele aplicaţiei
6. Elemente de testare
6.1. Componente critice
6.2. Alternative
1. Scopul documentului
2. Continutul documentului
Documentul este format din patru sectiuni esentiale :
Aplicatia server foloseste ca date globale o instanta a clasei ServerMain. La randul ei, aceasta
asigura interactiunea dintre celelalte module.
Pe langa principalele structuri de date, exista si alte obiecte a caror durata de viata fie se
limiteaza la corpul unei functii, fie sunt folosite pentru a se transmite anumite date auxiliare
dintr-un modul in altul, dar acestea sunt nesemnificative (ca marime sau importanta) fata de cele
deja enumerate.
Aplicatia foloseste fisiere XML ca mod de stocare a informatiilor despre fiecare joc
desfasurat cat si pentru clasamentul jucatorilor. Aceste fisiere respecta standardul XML
(http://www.w3.org/TR/2008/REC-xml-20081126/). Datele despre un anumit utilizator se pot
afla prin accesarea acestor documente.
4. Modelul arhitectural si modelul
componentelor
4.1. Arhitectura sistemului
4.1.1. Sabloane arhitecturale folosite
Solutia software imlementata pentru jocul Mortar Mayhem a fospt proiectata dupa
modelul de arhitectura client-server. In acelasi timp, interfata cu ultilizatorul se bazeaza pe
sablonul event-driven architecture.
Modulul de Logica
Este responsabil de coordonarea celorlalte module si asigura buna functionare a
aplicatiei.
Modulul Retea
Asigura comunicarea intre client si server prin transmiterea de pachete.
Modulul de Fizica
Se ocupa de calculul traiectoriei, impactului si tot ce tine de partea de calcul.
Modulul de Render
Formeaza si afiseaza pe ecran diversele obiecte prezente in joc.
Modulul MiniDB
Este o mini baza de date stocata sub forma unui fisier xml ce contine diverse informatii
despre jucatori (nume, scoruri).
In continuare pasii ce vor fi executati depind de optiunile alese de utilizator din meniul
disponibil in interfata grafica. Se poate ca utilizatorul sa aleaga sa inchida aplicatia, caz in care se
vor opri componentele pornite pana acum si se va inchide aplicatia.
Se pot schimba setari ale jocului precum numele jucatorului, situatie in care Modulul GUI va
prelua optiunile utilizatorului si le va transmite Modulului de Logica cu care va interactiona
permanent. Modulul de Logica va prelua datele de la Modulul GUI si le va stoca permanent in
cadrul unor structuri de date si variabile speciale.
In cazul in care utilizatorul solicita demararea jocului, Modulul de Logica va lansa in aplicatie
Modulul Retea care se va ocupa de conectarea la un server de joc si comunicatia cu acesta.
Modulul de Render va comunica cu Modulul GUI pentru a plasa obiectele la locul lor in
fereastra de joc.
Pentru componenta Server, Modulul de Logica este responsabil cu initializarea tuturor
celorlalte module. Clasa Main din acest modul va fi apelata la initializarea serverului si aceasta
va porni si va gestiona celelalte module.
Pentru obtinerea informatiilor legate de jucatori sau scoruri precum si alte informatii, Modulul
de Logica va comunica in permanenta cu Modulul MiniDB care va fi initializat de acesta si care
va furniza informatiile solicitate. De asemenea Modulul de Logica va si trimite informatii pentru
stocare catre Modulul MiniDB.
Astfel, utilizatorul va putea naviga din meniul principal pentru a vizualiza fereastra cu
clasamentul jucatorilor avand cele mai mari scoruri, apasand butonul Clasament. Tot din meniul
principal el poate vizualiza fereastra cu detalii despre joc si despre realizatorii acestuia prin
intermediul butonului Autori. Atat din fereastra cu clasamentul, cat si din cea cu autorii se poate
reveni la meniul principal apasand tasta Escape.
Din fereastra cu meniul principal se poate intra in modul de configurare al jocului, prin
apasarea butonului Start. Se va trece in fereastra “Setari optiuni joc”, de unde se va lansa jocul
efectiv prin intermediul butonului Enter. Din “Joc efectiv” avem optiunea de a parasi jocul
reintorcandu-ne la meniul principal, folosind tasta Escape. In caz contrar, la sfarsitul rundei se
va intra automat in fereastra de afisare a statisticilor si optiunilor de cumparare. Daca s-a atins
numarul de runde prestabilit se intra de asemenea automat in fereastra de premiere , de unde prin
Enter se revine la meniul principal.
Daca nu s-a ajuns la numarul de runde setat , apasand Enter, se va intra in fereastra de unde se
va alege urmatoarea harta de joc de catre castigatorul rundei. Revenirea in fereastra de joc
efectiv se realizeaza prin intermediul butonului Enter.
Aceasta fereastra este prima care apare in momentul deschiderii aplicatiei, oferind
utilizatorului (jucatorului) optiuni de navigare in ferestrele jocului.
Butoanele vor fi pozitionate central sub forma unui tabel descris in imaginea de mai sus. Aceste
butoane vor fi Start, prin care jucatorul va inainta spre jocul efectiv, dar prin parcurgerea
ferestrei de Setari optiuni joc.
La selectarea butonului de Clasament se va afisa clasamentul cu utilizatorii avand cele mai
mari scoruri.
La selectarea butonului de Autori se vor afisa informatii despre joc si despre creatorii
acestuia.
Nota: Aceasta fereastra va aparea doar daca programul curent este serverul.
Reprezinta fereastra unde se vor face setarile fara de care jocul nu ar putea incepe si va avea
ca model urmatorul desen:
In aceasta fereastra se vor putea face setarile privind numarul de jucatori (2 pana la 8), numarul
de runde si strategia de joc (Supravietuire, Distrugere sau Exterminare).
5.2.3 Fereastra Clasament
Este fereastra unde se vor afisa numele celor mai buni 10 jucatori, si scorurile inregistrate de
acestia in ordine descrescatoare, precum in modelul de mai jos :
Acestea vor fi tinute minte printr-o mini baza de date, ce va fi de fapt un fisier XML.
5.2.4 Fereastra Autori
Cea mai importanta si mai complexa fereastra, in care utilizatorul va participa activ la
derularea jocului:
In aceasta fereastra vor aparea un numar de tancuri egal cu numarul de jucatori participanti la
joc, o harta ce initial va fi aleasa random, iar mai apoi de castigatorii rundei.
In partea de jos a ferestrei vor aparea toti participantii la joc, in dreptul textului Jucator activ
va aparea numele jucatorului al carui rand este in acel moment, iar in dreptul textului Jucatori
pasivi vor aparea numele jucatorilor care isi asteapta randul.
In partea din stanga sus vor aparea optiunile jucatorului activ, care va putea sa stabileasca
puterea de tragere, si unghiul sub care va trage.
Sus, in partea centrala va aparea Armura, in dreptul careia se va afisa "Nu" daca jucatorul
activ nu si-a cumparat armura, si "Da" in caz contrar. De asemenea va aparea si Arma jucatorului
activ selectata in acel moment si numarul de lovituri ramase cu arma respectiva.
In coltul din dreapta sus se va afisa valoarea elementului Viata, care prin atingerea cifrei de 0
va duce la eliminarea jucatorului.
5.2.6 Fereastra Statistici si cumparare
Aceasta fereastra va fi formata din trei component, in chenarul din stanga sus se vor afisa
informatii ale utllizatorului in cauza, in chenarul din stanga se va afisa clasamentul si punctajul
din acel moment, iar in partea de jos a ferestrei se regaseste meniul de cumparare arme/armuri.
5.2.7 Fereastra Premiere
Aceasta fereastra va aparea automat doar in cazul in cazul in care s-a terminat numarul de
runde setat la inceput.
Aceasta are ca si continut desemnarea celor trei mari castigatori ai jocului: Distrugatorul,
Exterminatorul si Castigatorul la puncte.
5.2.8 Fereastra Alegere harta
Aceasta fereastra va aparea dupa fiecare runda, mai putin dupa runda finala a jocului. Ea este
descrisa mai jos:
Castigatorul rundei precedente are posibilitatea de a alege harta pentru runda urmatoare, in
timp ce ceilalti jucatori vor putea doar sa apese Enter. Dupa ce toti jucatorii au dat Enter se va
reveni la fereastra de joc efectiv, in urmatoarea runda.
6. Elemente de testare
In functie de masina pe care ruleaza, exista cateva module care pot influenta in mod
direct performantele jocului. Modulul de render, prin nivel de detalii, si cel de fizica, prin
realism, pot ridica probleme pentru placa video, respectiv procesor. De asemenea modulul
retea poate ingreuna rularea prin ramanerea intr-o stare de asteptare atunci cand nu se
primeste nimic de la server. De asemenea datele trimise pe retea vor trebui sa fie suficient de
mici pentru a asigura o rulare fluenta.
6.2. Alternative: