lucrare de licenta-info

Upload: larysa-merce

Post on 03-Jun-2018

256 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/11/2019 Lucrare de Licenta-info

    1/46

    PRINCESS RESCUE

    Vectorial Graphic Laboratory 2011

  • 8/11/2019 Lucrare de Licenta-info

    2/46

    Cuprins:

    1.

    Introducere...........................................................................................................3

    1.1. Alegerea temei ................................................................................................4

    1.2.

    Propunerea aplicaiei.....................................................................................4

    2. Resurse ...................................................................................................................5

    2.1. Construcia resurselor ...................................................................................5

    2.2. Monster Sprite ............................................................................................9

    3. Noiuni i algoritmi de programare folosii n aplicaie ...................................... 12

    3.1. Clasa static localSettings:........................................................................... 14

    3.2. Clasa static runTime.................................................................................. 15

    3.3. Clasa Monster............................................................................................... 15

    3.4. Metoda loadLevel ......................................................................................... 20

    3.5. Metoda Load a formei principale ................................ ................................ 22

    3.6. Functia principala refresh() a aplicaiei apelat la fiecare time_Tick....... 24

    3.7. Clasa Extra ................................................................................................... 31

    3.8. Clasa option .................................................................................................. 32

    4. Aplicaia PrincessRescue (UO-FS-DMI-2011) .................................................... 34

    4.1. Ecranul principal al aplicaiei are urmtoarea configuraie :.................... 34

    4.2. Setri............................................................................................................. 35

    4.3. Extras ............................................................................................................ 37

    4.4. Nivelul demonstrativ 0 ................................................................................. 39

    4.5. Fiierele resurs pentru crearea unui nivel:............................................... 40

    4.6. Nivelul demonstrativ 1 ................................................................................. 44

    4.7. Nivelul demonstrativ 2 ................................................................................. 45

    5. Bibliografie :......................................................................................................... 46

  • 8/11/2019 Lucrare de Licenta-info

    3/46

    3

    1. Introducere

    In introducere se gaseste o scurta descriere pentru tehnologiile si aplicatiile folosite inrealizarea acestei lucrari.

    CorelDRAW este un program de grafica vectoriala ,2D, ce a fost creat pentru a rula peplatforme Microsoft Windows. Pana in anul 2000 au existat si variante pentru Linux (versiunea

    9) si pana in 2001 pentru Macintosh (versiunea 11). In prezent, CorelDRAW ruleaza doar subMicrosoft Windows.

    C#este un limbaj de programare orientat-obiect conceput de Microsoft la sfritul anilor90. A fost conceput ca un concurent pentru limbajul Java. Ca i acesta, C# este un derivat allimbajului de programare C++.

    Graphics Device Interface (GDI) este o interfa de programare Microsoft Windows aaplicaiilor de baz i sistemului de operare fiind component responsabila de reprezentareaobiectelor grafice i transmiterea acestora la dispozitive de ieire , cum ar fi monitoare iimprimante .

    GDI este responsabil pentru sarcini, cum ar fi : desen linii i curbe, randare fonturi i demanipulare palete .

    Lucrarea este realizata in Windows Form Application , C# si este structurat pe 4capitole.

    n primul capitol se descrie propunerea aplicaiei si motivatia alegerii temei.

    n capitolul doi se arat cum sunt construite resursele folosite de aplicaie i modul degestionare a acestora.

    n capitolul trei este prezentat construcia aplicaiei din punct de vedere alprogramatorului.

    Capitolul patru contine prezentarea la nivel de utilizator a aplicaiei practice PrincessRescue.

  • 8/11/2019 Lucrare de Licenta-info

    4/46

    4

    1.1. Alegerea temei

    Am ales aceasta tema pentru realizarea lucrarii de licenta deoarece prin intermediulacestei aplicatii , numita Princess Rescue , pot sa ajut copii, si nu numai, sa isi formezedexteritatile in ceea ce priveste folosirea mouse-ului. Comenzile jocului sunt create doar pentru afi folosite de la mouse , astfel copii sau persoana care se joaca acest joc sa poata sa isi formeze

    dexteritatea cu mouse-ul jucand un joc distractiv.

    1.2. Propunerea aplicaiei

    n aplicaia practic asociat acestei lucrri se dorete construirea unui joc bazat petehnologiile GDI+ , adaugand faciliti i opiuni.

    Gestionarea unui obiect de ctre utilizator pe baza mouse-ului. Deciziile utilizatorului vor ficuantificate pe baza interaciunii dintre acest obiect i celelalte obiecte existente pe zona dejoc.

    Existena unui punctaj global ce reflect toate aciunile utilizatorului. Acest punctaj va fica valoare pozitiv i cresctor. Valoarea 0 a acestui punctaj arat c utilizatorul curent nu aacionat deocamdat corect relativ la cerinele jocului. n continuare vom numi acestpunctaj variabila Points.

    Existena unui punctaj secundar cu scopul de a cuantifica aciunile greite aleutilizatorilor dintre care amintim coliziunea cu un obiect de tip monstru sau trecerea prinzonele cu foc. Valoarea 0 a acestei variabile este una din condiiile de pierdere a jocului.Vom numi aceast variabil Life.

    Existena unor nivele de joc cu grade de dificultate diferite i posibilitatea de accesare aacestora de ctre utilizatori pentru mbuntire sau creare de nivele noi .

    Existena unor obiecte Montrii cu animaie 2D, personalizabili, cu diferite nivele deagresivitate i raz de aciune.

    Existena unor obiecte colectabile (heart i diamond) cu influen n creterea valoriivariabilelor Points i Life.

  • 8/11/2019 Lucrare de Licenta-info

    5/46

    5

    2. Resurse

    2.1. Construcia resurselor

    Toate resursele folosite de aplicaia Princess Rescue dinamice (montrii) sau statice

    (imagini de backGround) sunt de constucie proprie realizate prin tehnici i deprinderi nvate lalaboratorul de grafic pe calculator (2010) Fie imaginea i2.cdrConstruit n CorelDraw x5

    Fig 2.1. Resursa i2.png

    Are 5 elemente constructive: Cele 2 lnci, 2 sbii i scutul central. Cele dou lnci i cele

    dou sbii sunt identice ntre ele doar difer matricea de RTS (Rotaie, Translaie i Scalare).Astfel numrul de elemente constructive se reduce la 3 : O sabie, o lance i un scut. Se observdin imagine c scutul are 12 inte. Vom ncepe construcia cu :

    1.)

    un poligon regulat cu 12 vrfuri (obiect predefinit n corelDraw);2.)construirea elementului int prin suprapunerea a dou cercuri;

  • 8/11/2019 Lucrare de Licenta-info

    6/46

    6

    3.)

    prin operaii repetate Copy, Paste se centreaz fiecare obiect int n unul dinvrfurile poligonului ;

    4.)

    Cele 4 cercuri constructive ale conturului i ale cercului interior;

    5.)Se construiete un dreptunghi (elementul scndur constitutiv al scutului);6.)

    Prin repetri succesive Copy, Paste se construiete matricea de scnduri care segrupeaz (meniul arrangegroup );

  • 8/11/2019 Lucrare de Licenta-info

    7/46

    7

    7.)

    Aplicarea rotaiei cu un unghi oarecare (aici 18.9);

    8.)

    Plasarea cercului central peste matricea de scnduri;9.) Prin meniul ArrangeShapingIntersect obinerea figurii centrale;10.)

    11.)

    Texturareaiaplicarea efectului de umbrire;

    12.) Lsnd la o parte obiectul scut vom construi obiectul sabie din un dreptunghialungit;

    13.) Prin reuniunea unor obiecte (cerc, dreptunghi i cerc) prin meniul (Arrangeshapingweld) construim aprtoarea minii respectiv;

    14.) Mnerul sabiei din reuniunea obiectelor (trapez, dreptunghi i cerc);

  • 8/11/2019 Lucrare de Licenta-info

    8/46

    8

    15.) Elementele de combinare, texturare i copiere pentru a obine cea de a douasabie;

    16.) Dup obinerea lncii din elementele constructive ;

    17.) Construcia ansamblului final;

  • 8/11/2019 Lucrare de Licenta-info

    9/46

    9

    2.2. Monster Sprite

    Urmtoarele fiiere resurse construite n corelDrawx5 i exportate sub form de fiiere*.png stau la baza animaiei n aceast aplicaie. Pentru fiecare obiect ce se dorete a fi animat seconstruiesc imaginile corespunztoare diferitelor ipostaze ale miscrii obiectului respectiv dupcare acestea se afieaz succesiv (n funcie de o variabil intern (care primete sens (n cazulnostru) de vitez de rotaie)). Aceast succesiune de imagini ale aceluiai obiect poart numelede sprite i devine clasa de baz a unei aplicaii GDI+.

    Figurile urmtoare aratmodul de creare a unui Sprite din vectori de imagini *.png

  • 8/11/2019 Lucrare de Licenta-info

    10/46

    10

    Poziiile a) Monster01_t00, b) monster01_t01, c) monster01_t02, d) monster01_t03

    Poziiile e) Monster01_t04, f) monster01_t05, g) monster01_t06, h) monster01_t07

    Poziia i) monster01_t08

    Fig. 2.2.a,b,c,d,e,f,g,h,i . Fiierul sprite cu 9 poziii ale obiectului Monster_01.

    Fig. 2.3. Poziiile a) monster02_t00, b) monster02_t01 i c) monster02_t02

    Poziiile a) Monster03_t00, b) monster03_t01, c) monster03_t02, i d) monster03_t03

  • 8/11/2019 Lucrare de Licenta-info

    11/46

    11

    Poziiile e) monster03_t04 i f) monster03_t05 ale

    Fig. 2.4. Fiierul Sprite Monster03.

    Poziiile a) Monster04_t00, b) monster04_t01, c) monster04_t02, i d) monster04_t03

    Poziia e) monster04_t04 a

    Fig. 2.4 Fiierul Sprite Monster04

    Fig. 2.5.a i b Fiierul sprite Monster05

  • 8/11/2019 Lucrare de Licenta-info

    12/46

    12

    3. Noiuni i algoritmi de programare folosii naplicaie

    Aplicaia este construit n .Net C# ca i o aplicaie WindowsFormApplication cuurmtoarele componente :

    Forma principal conine urmtoarele zone:

    Fig. 3.1. Forma principal

    1.) Component de tip panel care conine informaiile despre punctajul de bonus,variabila lifei punctajul total;

    2.)

    Component de tip pictureBox, suportul zonei de joc;3.)

    Opiunile principale de ncepere a jocului (Start Game), accesarea zonei de setrirelative la dificultatea jocului (Options), accesare formei de afiare a datelor despreaplicaie i autori (Extra) respectiv ieirea din aplicaie;

    4.) Panelul de comand a utilizatorului format din 5 controale de tip button pentrudireciile cardinale + stop;

    5.) Zona de afiare a datelor (un control de tip listBox);6.) Controale de tip timer cu urmtoarele caracteristici:

  • 8/11/2019 Lucrare de Licenta-info

    13/46

    13

    Timer 1.Controleaz viteza jocului; Timer 2 Controlez interfaa grafic ; Timer 3 Controleaz viteza de deplasare a nscrisului Logo;

    Clasa Application Engine este format din 3 clase cu caracter static :

    public static class gameSettings

    {

    public static Graphicsg;

    public static ImagebackImage;

    public static int crtLevel = 0;

    public static int lastLevel = 3;

    public static Randomrnd = new Random();

    public static List monsters = new List();

    public static void loadMonster(string strData)

    {TextReaderdata_load = new StreamReader(strData);

    string data;

    List tmpData = new List();

    while ((data = data_load.ReadLine()) != null)

    {

    tmpData.Add(data);

    if (data == "endm")

    {monsters.Add( new monster(tmpData));

    tmpData.Clear();

    }

    }

    data_load.Close();

    }

    }

    publicstaticGraphicsg; obiectul principal de tip graphics destinat zonei de joc publicstaticImagebackImage; variabila suport a obiectului grafic g publicstaticintcrtLevel = 0; nivelul curent publicstaticintlastLevel = 3; ultimul nivel (n versiunea demonstrativ)

    public static Random rnd = new Random(); variabila global folosit pentru a generanumere aleatoare (se folosete n aplicaie la explozia minelor (timpul la careexplodeaz i zonele din matrice afectate de foc se genereaz aleator))

  • 8/11/2019 Lucrare de Licenta-info

    14/46

    14

    publicstaticList monsters = newList(); variabila de tip list care vareine toate obiectele de tip monstru

    public static void loadMonster(string strData) procedura de ncrcare a fiierului

    @..\ ..\ LarisaGame\ LarisaGame\ Resource\ Monsters\data01.txt n lista monsters.

    3.1. Clasa static localSettings:

    publ i c stat i c cl ass l ocal Set t i ngs

    {

    publ i c stat i c bool showMonst er Radi us = true;

    publ i c stat i c f l oat monst erDamageMul t i pl y = 1;

    publ i c stat i c i nt f i r eResi st ance = 10;

    publ i c stat i c i nt hear t Li f eSi ze = 30;

    publ i c stat i c i nt di amondPoi nt sMul t i pl y = 3;publ i c stat i c i nt di amondBasePoi nt s = 150;

    publ i c stat i c i nt bonusTi meMul t i pl yer = 3;

    publ i c stat i c s t r i ng l ogoSt r i ng = "" ;

    }

    public staticbool showMonsterRadius = true; Opiune de design care va afia sau nu

    raza de aciune a unui obiect de tip monstru pentru a da posibilitatea utilizatorilorde a aprecierea mai bine (vizibil) apropierea de un astfel de obiect

    public static float monsterDamageMultiply = 1; Variabila folosit n calculul uneicoliziuni cu un obiect de tip monstru n vederea obinerii punctajului cu care va fidiminuatvariabila life

    publicstatic intfireResistance = 10; Variabil de calcul folosit n coliziunea obiectuluigestionat de utilizator cu o zon cu foc.

    public static intheartLifeSize = 30; Numrul de puncte cu care crete variabila life ncazul n care utilizatorul colecteaz un obiect de tip heart

    publicstaticintdiamondPointsMultiply = 3 ipublicstaticintdiamondBasePoints = 150;variabile de calcul a punctajului acordat atunci cnd utilizatorul colecteaz un obiect detip diamond

    publicstaticintbonusTimeMultiplyer = 3; variabila de multiplicare a bonusului de timp.

    public static string logoString = ""; variabila string ce reine textul citit din fiierulG:\Projects\ LarisaGame\ LarisaGame\ Resource\ Text\ logo.txt i care este afiat nmicare n partea de sus a zonei de joc.

    La data publicrii acestei lucrri fiierul conine datele :Fiierul logo.txtLicenta UO-FS-DMI, GDI+ Tehnology 2011, Merce Larisa

  • 8/11/2019 Lucrare de Licenta-info

    15/46

    15

    3.2. Clasa static runTime

    (n completarea clasei localSettings)Conine datele care se modificpe parcursul jocului.

    publ i c stat i c cl ass r unTi me

    {publ i c stat i c i nt l i f e = 300;

    publ i c stat i c i nt poi nt s = 0;

    publ i c stat i c i nt pozx = 1;

    publ i c stat i c i nt pozy = 40;

    publ i c stat i c i nt bonus = 100;

    publ i c stat i c i nt gl obal Ti me = 0;

    }

    publicstaticintlife; valoarea curent a variabilei life publicstaticintpoints; variabila destinat stocrii punctajului

    public static int pozx, public static int pozy; poziia de start n matricea jocului aobiectului gestionat de utilizator

    publicstaticintbonus, valoarea curent a bonusului de timp publicstaticintglobalTime, timpul efectiv de joc.

    3.3. Clasa Monster

    S-a construit un obiect de tip monster (conform cerinelor date n propunereaaplicaiei) care s poat fi personalizat dup nume i imaginile asociate, direcia de deplasare,nivelul de apariie, agresivitatea i raza de aciune. Aceste date au fost introduse n fiierul@..\ ..\ LarisaGame\ LarisaGame\ Resource\ Monsters\data01.txt

    Pentru versiunea demonstrativ fiierul data01.txt are urmtoarea componen:Fiierul data01.txt.

    name : FirstDefenderN:30:5:S:60:5:N:30:5:W:10:10:E:20:10:W:10:10

    level : 0

    location : 250, 190

    image sets:

    monster01_t00,monster01_t01,monster01_t02,monster01_t03,monster01_t04,monster01_

  • 8/11/2019 Lucrare de Licenta-info

    16/46

    16

    t05,monster01_t06,monster01_t07,monster01_t08

    damage : 4

    relativeRange : 96

    endm

    name : defender01

    N:25:4:S:50:4:N:25:4level : 1

    location : 150, 125

    image sets:

    monster04_t00,monster04_t01,monster04_t02,monster04_t03,monster04_t04

    damage : 2

    relativeRange : 96

    endm

    name : defender02

    N:100:1:S:200:1:N:100:1

    level : 1

    location : 400, 125

    image sets:

    monster03_t00,monster03_t01,monster03_t02,

    monster03_t03,monster03_t04,monster03_t05

    damage : 2

    relativeRange : 96

    endm

    name : myGorgon

    s:20:1:N:20:2:S:20:1

    level : 1

    location : 100, 300

    image sets:

    monster11,monster11,monster12,monster12,monster13,monster13,monster12,monster12damage : 40

    relativeRange : 60

    endm

    name : 4xPacMan

    S:10:4:N:20:4:S:10:4

  • 8/11/2019 Lucrare de Licenta-info

    17/46

    17

    level : 2

    location : 130, 340

    image sets:

    monster05_t00,monster05_t00,monster05_t00,monster05_t00,

    monster05_t01,monster05_t01,monster05_t01,monster05_t01

    damage : 40relativeRange : 96

    endm

    name : 4xPacMan

    S:10:4:N:20:4:S:10:4

    level : 2

    location : 370, 190

    image sets:

    monster05_t00,monster05_t00,monster05_t00,monster05_t00,

    monster05_t01,monster05_t01,monster05_t01,monster05_t01

    damage : 40

    relativeRange : 96

    endm

    Pentru exemplificare s lum zona de nceput. Interpretarea acestui obiect monstru va fidat prin constructorul clasei Monster i are ca sens :

    name : FirstDefender

    N:30:5:S:60:5:N:30:5:W:10:10:E:20:10:W:10:10

    level : 0

    location : 250, 190

    image sets:

    monster01_t00,monster01_t01,monster01_t02,monster01_t03,monster01_t04,monster01_t05,monster01_t06,monster01_t07,monster01_t08

    damage : 4

    relativeRange : 96

    endm

    Numele de afiare : FirstDefender.

  • 8/11/2019 Lucrare de Licenta-info

    18/46

    18

    Direcia de deplasare : spre nord de 30 de ori cte 5 pixeli (N:30:5), spre sud de 60 de oricte 5 pixeli (S:60:5), din nou nord 30 cu cte 5 pixeli (N:30:5), apoi spre vest de 10 ori cu viteza10 pixeli (W:10:10) cnd ajunge la capt ncepe de la nceput.

    Nivelul de apariie (n acest caz level:0).Locaia de unde pornete pe hart (location : 250 cu 190)Setul de imagini Sprite care vor determina animaia .

    Figurile urmtoare aratmodul de creare a unui Sprite din vectori de imagini *.png .

    Fig.3.2 . Monster01 Sprite

    Variabila damage : reprezint puterea monstrului (n cazul n care acesta intr ncoliziune cu obiectul gestionat de utilizator) pentru exemplul anterior damage are valoarea 4

    Variabila relativeRange gestioneaz raza de aciune a obiectului monstru (valaorea

    se msoar n pixeli)

    publ i c cl ass monst er

    {

    publ i c st r i ng name;

    publ i c Li s t mPoi nt s;

    publ i c i nt l vl Apar i t i on;

    publ i c Poi nt st ar t Locat i on;

    publ i c Poi nt cr t Locat i on;

    publ i c i nt crt Posi t i on;

    publ i c Li s t mI mages;

    publ i c i nt cr t I mage;

    publ i c i nt damage;

    publ i c i nt rel at i veRange;

    }

    Metoda draw asociat obiectelor monster folosete urmtorul mecanism :Caluleaz poziia curent a obiectului folosind circular valorile listei mPoints n

    funcie de timpul global, tot prin acest mecanism calculeaz poziia imagii curente din setulde imagini mImages care trebuie afiat dup care apeleaz metodele DrawImageUnscaledi DrawString ale obiectelor grafice.

    publ i c voi d dr aw( i nt t i meOf Di spl ay)

    {

    cr t Posi t i on = t i meOf Di spl ay % mPoi nt s. Count ;

  • 8/11/2019 Lucrare de Licenta-info

    19/46

    19

    cr t I mage = t i meOf Di spl ay % mI mages. Count ;

    crt Locat i on. X = crt Locat i on. X + mPoi nt s[ crt Posi t i on] . X;

    crt Locat i on. Y = crt Locat i on. Y + mPoi nt s[ crt Posi t i on] . Y;

    gameSet t i ngs. g. Dr awI mageUnscal ed( thi s. mI mages[ cr t I mage] ,

    t hi s. crt Locat i on) ;

    gameSet t i ngs. g. Dr awSt r i ng (

    t hi s. name,

    new Font ( "Ar i al " , 10, Font St yl e. Regul ar ) ,

    new Sol i dBr ush ( Col or . Bl ack) ,

    new Poi nt ( crt Locat i on. X - 20, crt Locat i on. Y + 40) ) ;

    }

    Constructorul clasei Monster instaniaz un obiect al acestei calse dintr-o list destringuri (acestea sunt citite din fiier i pe baza metodei Split a clasei String sunt mprite iconvertite (dac este cazul) n datele necesareastfel:

    data[0] = name : FirstDefenderd_ = data[0].Split (:)d_[0] = name respectiv d_[1] = First Defenderthis.name = d_[1];data[1] = N:30:5:S:60:5:N:30:5:W:10:10:E:20:10:W:10:10d_ = data[1].Split (:) d_[0] = N, d_[1] = 30; d_[2] = 5, , d_[15] = W,

    d[16] = 10 i d[17] = 10;pentru toate elementele lui d_, din 3 n 3 (cu i contor)dac d_[i] = N tx =+1, (se calculeaz n funcie de punctele cardinale)Se adaug punct cu punct n lista mPoints valoarea (d_[i + 2])*tx,(d_[i + 2])*tyi aa n continuare pentru fiecare membru al clasei monster

    publicmonster(List data)

    {

    mPoints = newList();

    string[] d_ = data[0].Split(':');

    this.name = d_[1];

    d_ = data[1].Split (':');

    for(inti = 0; i < d_.Length-1; i += 3)

    {

    inttx = 0;

    intty = 0;

    switch(d_[i])

    {

    case"N": ty = -1;break;

  • 8/11/2019 Lucrare de Licenta-info

    20/46

    20

    case"S": ty = +1;break;

    case"W": tx = -1;break;

    case"E": tx = +1;break;

    }

    for(intj = 0; j < int.Parse(d_[i + 1]); j++)

    {

    mPoints.Add(newPoint(int.Parse(d_[i + 2])*tx, (int.Parse(d_[i + 2]))*ty));

    }

    }

    d_ = data[2].Split(':');

    this.lvlAparition = int.Parse(d_[1]);

    char[] separators = newchar[] {',',':'};

    d_ = data[3].Split(separators);

    this.startLocation = newPoint(int.Parse(d_[1]), int.Parse(d_[2]));

    this.crtLocation=newPoint(this.startLocation.X,this.startLocation.Y);

    this.crtPosition = 0;

    d_ = data[5].Split(',');

    this.mImages = newList ();

    foreach(stringdataS ind_)

    mImages.Add(Image.FromFile(@"..\..\Resource\Monsters\"+ dataS + ".png"));

    this.crtImage = 0;

    d_ = data[6].Split(':');

    this.damage = int.Parse(d_[1]);

    d_ = data[7].Split(':');

    this.relativeRange = int.Parse(d_[1]);

    }

    3.4. Metoda loadLevel

    Aplicaia apleleaz aceast metod de fiecare dat cnd utilizatorul ajunge la obiectul detip poart i variabila gameSettings crtLevel prin incrementare nu depete variabilagameSettings.lastLevel. Aceast metod este structurat n urmtoarele module:

    ncarc fiierul corespunztor (@"..\..\Resource\Text\Lvl"+ level + ".txt") care conine

    informaiile referitoare la obiectivele jocului

  • 8/11/2019 Lucrare de Licenta-info

    21/46

    21

    ncarc fiierul corespunztor (@"..\..\resource\Text\minit"+level+".txt") care coninedatele referitoare la matricea de joc.

    Procesarea matricii de joc ncrcarea fiierului (@"..\..\resource\Image\backImage"+ level+".png") care conine

    imaginea de fundal a nivelului ncrcarea fiierului (@"..\..\resource\Text\Extra"+level+".txt") ce conine datele despre

    bonusul de timp (n versiunea demonstrativ) i afiarea acestui bonus n controlul

    progressBar

    publ i c voi d l oadLevel ( i nt l evel )

    {

    l i stBox1. I t ems. Cl ear( ) ;

    TextReader data_Load = new

    St r eamReader ( @". . \ . . \ Resour ce\ Text \ Lvl "+ l evel + " . t x t " ) ;

    s t r i ng crt Dat a;

    whi l e ( ( cr t Dat a = dat a_Load. ReadLi ne( ) ) ! = nul l )

    l i st Box1. I t ems. Add( crt Dat a) ;

    dat a_Load. Cl ose( ) ;

    TextReader l oad = new

    St r eamReader ( @". . \ . . \ resource\ Text \ mi ni t "+l evel +" . t x t " ) ;

    s t r i ng myTxt = l oad. ReadToEnd( ) ;

    l oad. Cl ose( ) ;

    i nt k = 0;

    f or ( i nt i = 0; i < 80; i ++)

    {

    f or ( i nt j = 0; j < 102; j ++)

    {

    i f ( j

  • 8/11/2019 Lucrare de Licenta-info

    22/46

    22

    St r eamReader ( @". . \ . . \ r esour ce\ Text \ Ext r a"+l evel +" . t x t " ) ;

    s t r i ng[ ] bonusDat a = get Bonus. ReadLi ne( ) . Spl i t ( ' : ' ) ;

    r unTi me. bonus = i nt . Par se( bonusDat a[ 1] ) ;

    r unTi me. bonus *= l ocal Set t i ngs. bonusTi meMul t i pl yer ;

    progr essBar1. Maxi mum = r unTi me. bonus;

    progr essBar1. Mi ni mum= 0;

    progr essBar1. Val ue = r unTi me. bonus;

    }

    3.5. Metoda Load a formei principale

    Conine urmtoarele module:

    Iniializarea grafic dup un obiect de tip bitmap; ncrcarea fiierelor *.png pentru controalele de tip buton asociate panoului de comand

    destinat utilizatorului;

    Fig. 3.3. resursele sg_u/ sg_l/ sg_r/ sg_d ncrcarea imaginii de backGround i pornirea controlului de tip timer ascociat cu

    suprapunerea imaginilor de backGround;

    Fig. 3.4. backGround image A Fig. 3.5. backGround Image D ncrcarea fiierului ( @". . \ . . \ r esour ce\ Monst er s\ dat a01. t xt" ) care conine toate

    datele despre montrii; ncrcarea fiierului de nceput (@"..\..\resource\Text\begining.txt") cu informaii

    privitoare la posibilele prime aciuni ale utilizatorului. La data publicrii acestei lucrriacest fiier are urmtoarele date:

    Welcome to Princess Rescue 2011

  • 8/11/2019 Lucrare de Licenta-info

    23/46

    23

    This is the demo version and has onlythree levels.

    Press START to begin your journeyPress OPTIONS to customize featuresPress Help to learn how to playPress Exit to leve this application

    Program version beta 0.2.4

    ncrcarea fiieruli ( @". . \ . . \ resource\ Text \ l ogo. t xt " )

    privatevoidForm1_Load(objectsender, EventArgse)

    {

    MessageBox.Show("Beta 0.2.4");

    b = newBitmap(pictureBox1.Width, pictureBox1.Height);

    gameSettings.g = Graphics.FromImage(b);button1.BackgroundImage = Image.FromFile (@"..\..\resource\sg_u.bmp");

    button2.BackgroundImage = Image.FromFile (@"..\..\resource\sg_l.bmp");

    button3.BackgroundImage = Image.FromFile (@"..\..\resource\sg_r.bmp");

    button4.BackgroundImage = Image.FromFile (@"..\..\resource\sg_d.bmp");

    gameSettings.backImage = new

    Bitmap(@"..\..\resource\Image\backImageA.png");

    rct = newRectangle(-1, -1, 600, 480);

    gameSettings.g.DrawImage(gameSettings.backImage, rct);

    timer2.Enabled = true;

    pictureBox1.Image = b;

    gameSettings.loadMonster(@"..\..\resource\Monsters\data01.txt");

    panel1.Visible = false;

    TextReaderdata_load = new

    StreamReader(@"..\..\resource\Text\begining.txt");

    stringcrtData;

    while((crtData = data_load.ReadLine()) != null)

    listBox1.Items.Add(crtData);

    data_load.Close();

    TextReader logo_load = newStreamReader(@"..\..\resource\Text\logo.txt");

    l ocal Set t i ngs. l ogoSt r i ng = l ogo_l oad. ReadLi ne( ) ;

    l ogo_l oad. Cl ose( ) ;

    }

  • 8/11/2019 Lucrare de Licenta-info

    24/46

    24

    3.6. Functia principala refresh() a aplicaiei apelat la fiecaretime_Tick

    Fig. 3.6. partea I a procedurii refresh

    n prima parte a acestei funcii se fac doar verificri relativ la coliziunile obiectuluigestionat de utilizator i poziia curent din matrice.

    publ i c voi d ref resh( )

    {

    i f ( mA[ r unTi me. pozx , r unTi me. pozy ] == 2)

    {

    mA[ r unTi me. pozx, r unTi me. pozy] = 0;

    r unTi me. l i f e += l ocal Set t i ngs. heart Li f eSi ze;r unTi me. poi nts += 10;

    }

    i f ( mA[ r unTi me. pozx, r unTi me. pozy] == 8) / / her at suppor t {}

    {

    r unTi me. l i f e += l ocal Set t i ngs. heart Li f eSi ze;

  • 8/11/2019 Lucrare de Licenta-info

    25/46

    25

    r unTi me. poi nts += 10;

    i nt t mpDat ax = 0;

    i nt t mpDat ay = 0;

    f or ( i nt i = 4; i >= 0; i - - )

    {

    f or ( i nt j = 4; j >= 0; j - - )

    {

    i f ( mA[ r unTi me. pozx - i , r unTi me. pozy - j ] == 2)

    {

    t mpDat ax = r unTi me. pozx - i ;

    t mpDat ay = r unTi me. pozy - j ;

    break;

    }

    }

    }

    f or ( i nt i = 0; i < 5; i ++)

    {

    f or ( i nt j = 0; j < 5; j ++)

    {

    mA[t mpDat ax + i , t mpDat ay + j ] = 0;

    }

    }

    }

    i f ( mA[ r unTi me. pozx, r unTi me. pozy] == 9) / / di amond suppor t {}

    {

    r unTi me. poi nts +=

    l ocal Set t i ngs. di amondBasePoi nts *

    l ocal Set t i ngs. di amondPoi nt sMul t i pl y;

    i nt t mpDat ax = 0;

    i nt t mpDat ay = 0;

    f or ( i nt i = 4; i >= 0; i - - )

    {

    f or ( i nt j = 4; j >= 0; j - - )

    {

    i f ( mA[ r unTi me. pozx - i , r unTi me. pozy - j ] == 7)

    {

    t mpDat ax = r unTi me. pozx - i ;

  • 8/11/2019 Lucrare de Licenta-info

    26/46

    26

    t mpDat ay = r unTi me. pozy - j ;

    break;

    }

    }

    }

    f or ( i nt i = 0; i < 5; i ++)

    {

    f or ( i nt j = 0; j < 5; j ++)

    {

    mA[ t mpDat ax + i , t mpDat ay + j ] = 0;

    }

    }

    }

    i f ( mA[ r unTi me. pozx, r unTi me. pozy] == 7)

    {

    mA[ r unTi me. pozx, r unTi me. pozy] = 0;

    r unTi me. poi nts += l ocal Set t i ngs. di amondBasePoi nts *

    l ocal Set t i ngs. di amondPoi nt sMul t i pl y;

    }

    / / cont i nuar e

    Fig. 3.6. Partea a II-a a procedurii refresh()

    i f ( ( mA[ r unTi me. pozx, r unTi me. pozy] == 3) | | ( mA[ r unTi me. pozx,r unTi me. pozy] == 4) )

    {

    gameSet t i ngs. cr t Level ++;

    r unTi me. pozx = 1;

    r unTi me. pozy = 40;

    r unTi me. poi nts += r unTi me. bonus;

    l abel 1. Text = r unTi me. poi nt s. ToSt r i ng( ) ;

  • 8/11/2019 Lucrare de Licenta-info

    27/46

    27

    i f ( gameSet t i ngs. cr t Level == gameSet t i ngs. l astLevel )

    gameWon( ) ;

    el se

    l oadLevel ( gameSet t i ngs. cr t Level ) ;

    }

    i f ( ( mA[ r unTi me. pozx, r unTi me. pozy] == 6) )

    {

    r unTi me. l i f e - = (25 - l ocal Set t i ngs. f i r eResi stance) ;

    i f ( r unTi me. l i f e < 0)

    {

    r unTi me. l i f e = 0;

    gameLoose( ) ;

    }

    }

    i f ( r unTi me. bonus ! = 0)

    {

    r unTi me. bonus- - ;

    progr essBar1. Val ue = r unTi me. bonus;

    }

    l abel 1. Text = r unTi me. poi nt s. ToSt r i ng( ) ;

    l abel 2. Text = r unTi me. l i f e. ToSt r i ng( ) ;

    gameSet t i ngs. g. Dr awI mage(gameSet t i ngs. backI mage, r ct ) ;

    / / cont i nuar e

    Modulul de actualizare grafic cu care se ncheie modulul anterior are ca scopredesenarea zonei de joc astfel:

    Pentru fiecare element din matricea de joc dac valoarea acestuia este:

    1 - Se consider zid i aciunea grafc corespunztoare este de a desena o

    crmid de culoare gri; 2 - Se consider nceputul zonei de desenare a obiectului de tip heart drept

    urmare aciunea grafic corespunztoare este de a ncrca fiierul resur:..resource\heart1.png ;

    3 - Element suport al zonei de calcul pentru obiectul de tip door, nu are aciune

    grafic asociat; 4 - Inceputul zonei de desenare a obiectului de tip door aciunea grafic

    corespunztoare este de a ncrca fiierul resur: ..resource\door_2.png" prinmetoda asociat obiectelor grafice DrawImageUnscaled

    5 - Obiectul de tip min. Probabilitatea de explozie a acesteia este 1/250. n cazuln care explodeaz pe o raz de 10 uniti din matricea de joc. Explozia are 100de elemnte constitutive (se geereaz aleator de 100 de ori o poziie ninteriorul zonei de explozie i valorile corespunztoare iau valoarea 6 (foc)).

  • 8/11/2019 Lucrare de Licenta-info

    28/46

    28

    Se ine cont ca o explozie aproape de obiectul door s nu distrug n totalitateacest obiect;

    6 - Zon de teren cu foc. Se deseneaz cu portocaliu zona respectiv; 7 - Inceputul zonei de desenare a obiectului de tip diamond aciunea grafic

    corespunztoare este de a ncrca fiierul resur:. . \ . . \ r esour ce\ di amond. png " prin metoda asociat obiectelor graficeDrawImageUnscaled;

    8 - Element suport al zonei de calcul pentru obiectul de tip heart, nu are aciunegrafic asociat;

    9 - Element suport al zonei de calcul pentru obiectul de tip diamond, nu areaciune grafic asociat;

    for(inti = 0; i < 80; i++)

    {

    for(intj = 0; j < 100; j++)

    {

    switch(mA[j,i]){

    case1:

    RectangletoDraw = newRectangle(j * 6, i * 6, 6, 6);

    gameSettings.g.FillRectangle(new

    SolidBrush(Color.LightGray), toDraw);

    break;

    case2:

    gameSettings.g.DrawImageUnscaled(

    Image.FromFile(@"..\..\resource\heart1.png"), new

    Point(j * 6, i * 6));

    break;

    case4:

    toDraw = newRectangle(j * 6, i * 6, 6, 6);

    gameSettings.g.DrawImageUnscaled(

    Image.FromFile(@"..\..\resource\door_2.png"), new

    Point(j * 6-12, i * 6-9));

    break;

    case5:

    intexplode = gameSettings.rnd.Next() % 250;

    if(explode == 0)

    {

  • 8/11/2019 Lucrare de Licenta-info

    29/46

    29

    mA[j, i] = 6;

    for(intAEC = 0; AEC < 100; AEC++)

    {

    intexplosionRX =

    gameSettings.rnd.Next() % 21 - 10;

    intexplosionRY =

    gameSettings.rnd.Next() % 21 - 10;

    try

    {

    if(!(((mA[j + explosionRX, i +

    explosionRY]) == 4) || ((mA[j +

    explosionRX, i + explosionRY]) == 3)))

    mA[j + explosionRX, i + explosionRY] = 6;

    }

    catch{}

    }

    }

    toDraw = newRectangle(j * 6, i * 6, 6, 6);

    gameSettings.g.FillRectangle(new

    SolidBrush(Color.Black), toDraw);

    break;

    case6: //fire

    toDraw = newRectangle(j * 6, i * 6, 6, 6);

    gameSettings.g.FillRectangle(new

    SolidBrush(Color.Orange), toDraw);

    break;

    case7: // diamonds

    gameSettings.g.DrawImageUnscaled(

    Image.FromFile(@"..\..\resource\diamond.png"), new

    Point(j * 6, i * 6));

    break;}

    }

    }

    / / cont i nuar e

  • 8/11/2019 Lucrare de Licenta-info

    30/46

    30

    Modulul de actualzare grafic continu cu desenarea obiectului gestionat de utilizator:

    gameSet t i ngs. g. Fi l l El l i pse( new Sol i dBr ush( Col or. Red) ,

    r unTi me. pozx * 6, r unTi me. pozy * 6, 6, 6) ;

    gameSet t i ngs. g. Dr awEl l i pse( Pens. Red ,

    r unTi me. pozx * 6 - 2, r unTi me. pozy * 6 - 2, 10, 10) ;

    / / cont i nuar e

    Respectiv (n ncheierea procedurii refresh()) se verific dac exist obiecte ale claseimonster n acest nivel i pentru fiecare obiect gsit se verifc coliziunea acestuia cu obiectulutilizator:

    f or each ( monst er dataM i n gameSet t i ngs. monst er s)

    {

    i f (dataM. l vl Apar i t i on == gameSet t i ngs. crt Level )

    {

    dataM. draw( r unTi me. gl obal Ti me) ;f l oat xa = r unTi me. pozx * 6;

    f l oat ya = r unTi me. pozy * 6;

    f l oat xc = dataM. cr t Locat i on. X + dat aM. r el at i veRange/ 2;

    f l oat yc = dataM. cr t Locat i on. Y + dat aM. r el at i veRange/ 2;

    f l oat d = ( xa - xc) * ( xa - xc) + ( ya - yc) * ( ya - yc) ;

    i f( d < ( ( dat aM. r el at i veRange/ 2) * ( dat aM. r el at i veRange/ 2) ) )

    {

    r unTi me. l i f e - = ( i nt ) ( ( f l oat ) dat aM. damage *

    l ocal Set t i ngs. monst erDamageMul t i pl y) ;

    i f ( r unTi me. l i f e < 0)

    {

    r unTi me. l i f e = 0;

    gameLoose( ) ;

    }

    }

    }

    }

    pi ct ureBox1. I mage = b;

    }

  • 8/11/2019 Lucrare de Licenta-info

    31/46

    31

    3.7. Clasa Extra

    Aceast clas este asociat formularului windows Extra asociat cu gestionareafiierului cu acelai nume @"..\..\Resource\Text\Extra.txt". Metoda de ncrcare a acestuifiierului este construit pe baza unui obiect TextReader conform codului urmtor :

    Publ i c par t i al cl ass Extra : Form

    {

    publ i c Extra()

    {

    I ni t i al i zeComponent ( ) ;

    }

    pri vat e voi d Ext r a_Load( obj ect sender , Event Ar gs e)

    {

    l i stBox1. I t ems. Cl ear( ) ;

    TextReader data_Load =

    new St r eamReader ( @". . \ . . \ Resour ce\ Text \ Ext r a. t xt " ) ;

    st r i ng crt Dat a;

    whi l e ( ( cr t Dat a = dat a_Load. ReadLi ne( ) ) ! = nul l )

    {

    l i st Box1. I t ems. Add( crt Dat a) ;

    }dat a_Load. Cl ose( ) ;

    }

    pri vat e voi d but t on1_Cl i ck( obj ect sender , Event Ar gs e)

    {

    thi s. Cl ose( ) ;

    }

    }

  • 8/11/2019 Lucrare de Licenta-info

    32/46

    32

    Fig. 3.7. Form Extra

    3.8. Clasa option

    Datorit modului de dezvoltarea a aplicaiei la nivel de programare orientat pe obiecteaceast clas (cu designul n figura urmtoare) nu trebuie dect s gestioneze valorile claseistatice localSettings respectiv runTime prin anumite controale

    Fig. 3.8 Form Option

  • 8/11/2019 Lucrare de Licenta-info

    33/46

    33

    publ i c voi d r ef r esh_dat a( )

    {

    r unTi me. l i f e = t r ackBar 1. Val ue;

    l ocal Set t i ngs. monst er DamageMul t i pl y =( f l oat ) ( numeri cUpDown1. Val ue) ;

    l ocal Set t i ngs. f i r eResi st ance =( i nt ) ( numer i cUpDown2. Val ue) ;

    l ocal Set t i ngs. hear t Li f eSi ze = ( i nt )( numer i cUpDown3. Val ue) ;

    l ocal Set t i ngs. di amondBasePoi nts =( i nt ) ( numer i cUpDown4. Val ue) ;

    l ocal Set t i ngs. di amondPoi nt sMul t i pl y =( i nt ) ( numer i cUpDown5. Val ue) ;

    l ocal Set t i ngs. bonusTi meMul t i pl yer =( i nt ) ( numer i cUpDown6. Val ue) ;

    }

  • 8/11/2019 Lucrare de Licenta-info

    34/46

    34

    4. Aplicaia PrincessRescue (UO-FS-DMI-2011)

    4.1. Ecranul principal al aplicaiei are urmtoarea configuraie :

    Fig. 4.1. Ecranul principal

  • 8/11/2019 Lucrare de Licenta-info

    35/46

    35

    1. Meniul principal al jocului ce dispune de submeniurile StarGame (pornirea jocului),Option (setrile accesibile utilizatorilor), Extra (conine date sumare despre aplicaie iautori) i Exit (pentru ieirea din aplicaie)

    2. Bara de design cu nscrisul mobil Licena UO-FS-DMI, GDI+ Tehnology 2011, MerceLarisa

    3. Zona efectiv de joc4. Informaii despre joc, nivelul curent, obiective i date despre obiectele ntlnite (pentru

    fiecare nivel n parte se schimb mesajul n funcie de cerinele nivelului) i scenariuldat.

    4.2. Setri

    Fig. 4.2. Setri

    1.) La acest nivel se pot face urmtoarele setri: Conceptul de via (variabila Life) cu valori ntre 100 i 500 (curnt este 300) Cu ct

    utilizatorul are mai multe puncte n aceast variabil cu att poate rezista la mai multeatacuri ale obiectelor sau foc, elemente care diminueaz acest punctaj. Cnd acestvaloare ajunge la 0 este una din condiiile pentru care se termin jocul.

  • 8/11/2019 Lucrare de Licenta-info

    36/46

    36

    Variabila Monster Agressinon indic cu ct va diminua atacul unui obiect monstruvaloarea life a utilizatorului. Aa cum am artat n paragrafele anterioare un obiectmonstru are un punctaj de baz. Valoarea total a atacului este acest punctaj nmulit cuvaloarea variabilei Monster Agression. Aceast variabil are o plaj de valori cuprinsntre valoarea 0.50 pentru nivelul cel mai uor i 2.50 pentru nivelul cel mai dificil.

    Variabila Fire Resistance are ca scop gestionarea coliziunii dintre obiectul condus de

    utilizator i zonele acoperite de foc (sau explozia minelor). Cu ct aceast valoare este

    mai mare cu att mai puine puncte se vor diminua din variabila Life a juctoruluiatuncicnd trece peste o zon acoperitde foc. Variabila Fire Resistance are o valoare 0 pentrunivelul cel mai dificil i 20 pentru nivelul cel mai uor.

    Hp (heal Points) .valoarea n puncte cu care crete variabila life atunci cnd obiectul

    gestionat utilizator trece peste un obiect de tipul heart. Variabila Hp are valori ntre50 (maximul acordat pentru nivelul cel mai facil) i doar 10 puncte pentru cel maidificil nivel

    Diamond Base Points, Valoarea n puncte acordat utilizatorului cnd acesta trece pesteun obiect de tip diamond. Valorile sunt cuprinse ntre 50 i 250

    Multiply Valoarea cu care se multiplic punctajul acordat trecerii peste obiectele diamant.Intervalul de valori pe care le poate lua aceast variabil este cuprins ntre 1 pentrunivelul cel mai dificil i 5 puncte pentru nivelul cel mai uor.

    Bonus Time. Fiecare nivel beneficiaz de un bonus de timp de baz ce se adaugpunctajului total la terminarea nivelului. Valoarea variabilei Bonus Time multiplicacest punctaj.

    2.) Selectarea rapid a nivelului dorit cu urmtoarele valori:

    Very hard

    Hard

    Medium

    Easy

    Very Easy

    Life 100 200 300 400 500

    Monsteragression 2.5 2.0 1.5 1.0 0.5

    FireResistance

    0 5 10 15 20

    Hp 10 20 30 40 50

    Diamon 50 100 150 200 250

  • 8/11/2019 Lucrare de Licenta-info

    37/46

    37

    Base Paoints

    Multiply 1 2 3 4 5

    BonusTime

    1 2 3 4 5

    3.)

    Butonul de revenire n forma principal fr a salva ultimile modificri la nivel de setri4.) Butonul de acceptare a modificrilor i revenirea n forma principal.

    4.3. Extras

    Fig. 4.3. Extras

    La data publicrii acestei lucrri fiierul @..\..\Resource\Text\Extras.txtncrcat naceastfereastr are urmtorul coninut:

  • 8/11/2019 Lucrare de Licenta-info

    38/46

    38

    Universitatea din Oradea,

    Facultatea de Stiinte,

    Departamentul de Matematica si Informatica.

    Promotia 2011

    Acest joc este aplicatia practica asociata cu lucrarea de licenta a studentei Merce Larisa.

    Aplicatia se bazeaza in special pe conceptele GDI+ prezentate in laboratorul de grafica pecalculator.

    Toate resursele folosite de aceasta aplicatie au fost construite de catre autori in CorelDraw x5si au caracter demonstrativ, fara implicatii financiare, liber de folosit in scop educativ.

    Toti algoritmii din aceasta aplicatie sunt construiti de catre aurtori, modul de interpretare adatelor este original, codificarea deplasarii si codificarea obiectelor sunt concepte proprii.

    Project Manager : Laslo Eugen

    Senior Programmer : Merce Larisa

    Graphics : Corel Draw x5 Vectorial Geometry Laboratories - 2011 Laslo Eugen

    Level Designer : Merce Larisa

    First Tester :Laslo Elisa (4 ani)

    Multumim d-lui Conf. univ Caus V. Aurel

    pentru sprijinul acordat in dezvoltarea

    acestui proiect.

  • 8/11/2019 Lucrare de Licenta-info

    39/46

    39

    4.4. Nivelul demonstrativ 0

    Fig. 4.4. Nivelul 0Acesta este primul nivel al jocului i are ca scop familiarizarea utilizatorilor cu

    obiectivele jocului:Se pot identifica urmtoarele informaii disponibile utilizatorilor:

    1. Punctajul acordat ca bonus pentru o trecere rapid peste nivelul curent. Cu ct trece maimult timpul de joc, punctajul de bonus se diminueaz. n momentul cnd utilizatorulajunge la poart (zona 7) n punctajul total (zona 3) se adaug valoarea n puncte a acestuibonus.

    2.

    Valoarea Life a utilizatorului. Cnd aceast valoare ajunge la 0 jocul se consider pierdut. 3. Zona de afiare a punctajului yotal curent al utilizatorului. Orice aciune din joc ntr-o

    form sau alta are repercursiuni n schimbarea valorii acestei variabile. Nu exist valorinegative.

    4. Primul obiect monstru cu urmtoarele informaii:

    name : FirstDefenderN:30:5:S:60:5:N:30:5:W:10:10:E:20:10:W:10:10level : 0location : 250, 190image sets:

    monster01_t00,monster01_t01,monster01_t02,monster01_t03,monster01_t04,monster01_t05,monster01_t06,monster01_t07,monster01_t08damage : 4relativeRange : 96

    endm

    5. Obiectul gestionat de utilizator.

  • 8/11/2019 Lucrare de Licenta-info

    40/46

    40

    6. Obiectele de tip diamond colectabile pentru creterea punctajului7. Obiectul poart de trecere la nivelul urmtor8. Marginea zonei de joc (se poate urmrii n fiierul urmtor construcia la nivel de

    matrice a acestui nivel). Semnificaia valorilor se poate gsi n paragraful 2.29.

    Controalele mouse disponibile utilizatorului pentru controlul jocului.

    4.5. Fiierele resurs pentru crearea unui nivel:

    Fig. 4.5. Fiierele text resurse

    1.

    Minit+nivel_dorit + .txt : fiierul resurs cu elementele matricii. Pentru nivelul 0arat ca i n desfurarea urmtoare:

    1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111

    1000000000000000000000000000000000001000000000000000000000000001000000000000000000000000000000000001

    100000000000000000000000000000000000100000000000000000000000000100000000000000000000000000000000

    0001

    1000000000000000000000000000000000001000000000000000000000000001000000000000000000000000000000000001

    100000000000000000000000000000000000100000000000000000000000000100000000000000000000000000000000

    0001

    1000000000000000000000000000000000001000000000002888000000000001000000000000000000000000000000000001

    100000000000000000000000000000000000100000000000888800000000000100000000000000000000000000000000

    0001

    1000000000000000000000000000000000001000000000008888000000000001000000000000000000000000000000000001

    100000000000000000000000000000000000100000000000088000000000000100000000000000000000000000000000

    0001

    1000000000000000000000000000000000001000000000000000000000000001000000000000000000000000000000000001

    100000000000000000000000000000000000100000000000000000000000000100000000000000000000000000000000

  • 8/11/2019 Lucrare de Licenta-info

    41/46

    41

    0001

    1000000000000000000000000000000000001000000000000000000000000001000000000000000000000000000000000001

    1000000000000000000000000000000000001111100000000000000000000001000000000000000000000000000000000001

    1000000000000000000000000000000000000000100000002888000000000001000000000000000000000000000000000001

    100000000000000000000000000000001111111110000000888800000001111111110000000000000000000000000000

    0001

    1000000000000000000000000000000000000000100000008888000000010000000000000000000000000000000000000001

    1000000000000000000000000000000000000000100000000880000000010000000000000000000000000000000000000001

    1000000000000000000000000000000000000000100000000000000000010000000000000000000000000000000000000001

    100000000000000000000000000000000000000010000000000000000001000000000000000000000000000000000000

    0001

    1000000000000000000000000000000000000000100000000000000000010000000000000000000000000000000000000001

    1000000000000000000000000000000000000000100000000000000000010000000000000000000000000000000000000001

    1000000000000000000000000000000000000000100000000000000000010000000000000000000000000000000000000001

    1000000000000000000000000000000000000000100000000000000000010000000000000000000000000000000000000001

    1000000000000000000000000000000000000000100000000000000000010000000000000000000000000000000000000001

    1000000000000000000000000000000000000000100000000000000000010000000000000000000000000000000000000001

    1000000000000000000000000000000000000000100000000000000000010000000000000000000000000000000000000001

    1000000000000000000000000000000000000000100000000000000000010000000000000000000000000000000000000001

    1000000000000000000000000000000000000000100000000000000000010000000000000000000000000000000000000001

    1000000000000000000000000000000000000000100000000000000000010000000000000000000000000000000000000001

    111111111111111111111111111111111111111110000000000000000001111111111111111111111111111111111111

    1111

    1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001

    100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

    0001

    1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001

    100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

    0001

    1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001

    100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

  • 8/11/2019 Lucrare de Licenta-info

    42/46

    42

    0001

    1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000433300001

    1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000030001

    1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000030001

    100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000300003

    0001

    1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000333300001

    1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001

    1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001

    100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

    0001

    1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001

    1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001

    1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001

    1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001

    1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001

    1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001

    1111111111111111111111111111111111111111100000000000000000011111111111111111111111111111111111111111

    1000000000000000000000000000000000000000100000000000000000010000000000000000000000000000000000000001

    1000000000000000000000000000000000000000100000000000000000010000000000000000000000000000000000000001

    1000000000000000000000000000000000000000100000000000000000010000000000000000000000000000000000000001

    100000000000000000000000000000000000000010000000000000000001000000000000000000000000000000000000

    0001

    1000000000000000000000000000000000000000100000000000000000010000000000000000000000000000000000000001

    100000000000000000000000000000000000000010000000000000000001000000000000000000000000000000000000

    0001

    1000000000000000000000000000000000000000100000000000000000010000000000000000000000000000000000000001

    100000000000000000000000000000000000000010000000000000000001000000000000000000000000000000000000

    0001

    1000000000000000000000000000000000000000100000000000000000010000000000000000000000000000000000000001

    100000000000000000000000000000000000000010000000000000000001000000000000000000000000000000000000

  • 8/11/2019 Lucrare de Licenta-info

    43/46

    43

    0001

    1000000000000000000000000000000000000000100000000000000000010000000000000000000000000000000000000001

    1000000000000000000000000000000000000000100000000000000000010000000000000000000000000000000000000001

    1000000000000000000000000000000000000000100000000000000000010000000000000000000000000000000000000001

    100000000000000000000000000000000000000010000000799990000001000000000000000000000000000000000000

    0001

    1000000000000000000000000000000011111111100000009999900000011111111100000000000000000000000000000001

    1000000000000000000000000000000000000000100000000999000000010000000000000000000000000000000000000001

    1000000000000000000000000000000000001111100000000090000000011111000000000000000000000000000000000001

    100000000000000000000000000000000000100000000000000000000000000100000000000000000000000000000000

    0001

    1000000000000000000000000000000000001000000000000000000000000001000000000000000000000000000000000001

    1000000000000000000000000000000000001000000000000000000000000001000000000000000000000000000000000001

    1000000000000000000000000000000000001000000000000000000000000001000000000000000000000000000000000001

    1000000000000000000000000000000000001000000000007999900000000001000000000000000000000000000000000001

    1000000000000000000000000000000000001000000000009999900000000001000000000000000000000000000000000001

    1000000000000000000000000000000000001000000000000999000000000001000000000000000000000000000000000001

    1000000000000000000000000000000000001000000000000090000000000001000000000000000000000000000000000001

    1000000000000000000000000000000000001000000000000000000000000001000000000000000000000000000000000001

    1000000000000000000000000000000000001000000000000000000000000001000000000000000000000000000000000001

    1000000000000000000000000000000000001000000000000000000000000001000000000000000000000000000000000001

    111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111

    1111

    2.

    Extra+nivel_dorit + .txt : fiierul resurs ce conine punctajul bonus.

    3.

    Lvl+nivel_dorit + .txt: de informaii cu privire lanivelul curent: Pentru nivelul 0:

    Level 0: Begginning your Journe

    Press the arrow buttons to move around

    Avoid walls (dark gray blocks)

  • 8/11/2019 Lucrare de Licenta-info

    44/46

    44

    Get hearts to score life and points

    Exit to the astern gat

    4.6. Nivelul demonstrativ 1

    Fig. 4.6. Nivelul demonstrativ 1

    Elementele noi introduse de acest nivel sunt:1.) Obiectul monstru personalizat (conceptul de BOSS aprut frecvent n astfel de jocuri).

    Poate trece peste zonele nchise, se deplaseaz aleator, foarte puternic. 2.)

    Obiectul defender03 cu urmtoarele caliti:

    name : defender01N:25:4:S:50:4:N:25:4level : 1location : 150, 125

    image sets:monster04_t00,monster04_t01,monster04_t02,monster04_t03,monster04_t04

    damage : 2relativeRange : 96endm

    3.) Obiectul defender 04:

  • 8/11/2019 Lucrare de Licenta-info

    45/46

    45

    name : defender02N:100:1:S:200:1:N:100:1level : 1location : 400, 125image sets:monster03_t00,monster03_t01,monster03_t02,monster03_t03,monster03_t

    04,monster03_t05damage : 2relativeRange : 96endm

    4.) Zonele din matric afectate de foc5.) Mine cu explozie aleatoare

    Matricea corespunzatoare nivelului demonstrativ 1 se gaseste in fisierul resurse, la felca si pentru celelalte doua nivele.

    4.7. Nivelul demonstrativ 2

    Fig. 4.7. Nivelul demonstrativ 1

    Elementele noi introduse de acest nivel sunt:1.) Obiectul monstru personalizat,4xPacMan;

  • 8/11/2019 Lucrare de Licenta-info

    46/46