Meeskond "Miinipilduja tuli": Difference between revisions

From ICO wiki
Jump to navigationJump to search
Jvahtre (talk | contribs)
Jvahtre (talk | contribs)
Line 93: Line 93:
ObjectList clone, Threadlock width Monitor. Veel lisati uued helid, pandi map liikuma tüdruku jalge all, lisati Monster.cs klass.
ObjectList clone, Threadlock width Monitor. Veel lisati uued helid, pandi map liikuma tüdruku jalge all, lisati Monster.cs klass.
===16.Oktoober===
===16.Oktoober===
Lisati menüüdesse DeathMenüü, Highscore Menüü, ning lisati neile nupud Alusta uut mängu, tulemused, välju ja jätka.  
Lisati menüüdesse DeathMenüü, Highscore Menüü, ning lisati neile nupud Alusta uut mängu, Tulemused, Välju ja Jätka.  
Probleemid: uut mängu ei olnud võimalik alustada.  
Probleemid: uut mängu ei olnud võimalik alustada.
 
===17.Oktoober===  
===17.Oktoober===  
Lisatud peamenüüse tulemused ja välju nupud, highscore-i menüüsse tagasi nupp. Uus Death Menüü.
Lisatud peamenüüse tulemused ja välju nupud, highscore-i menüüsse tagasi nupp. Uus Death Menüü.

Revision as of 13:01, 23 October 2010

Sissejuhatus


Kasutusjuhend

Tööjaotus

Taavi Ilves

- Collision detection

- Tegelase liikumise clippimine

- Tulistamise arvutamine

- Levelite, Skoori, Wave'ide jms arvutamine

- Elektri effekt

- ObjectList wrapper List'ile

- XML mapi parsimine

- Jms. jooksvad asjad

Tanel Liiv

- Sound

- Vastased, nende liikumise loogika

- Tegelase liikumine ja loogika

- XML tulemuste salvestamine, kuvamine

- Mapi dünaamiline joonistamine

- Muu joonistamine

- Jms. jooksvad asjad

Jaan Vahtre

- Menüü vaated, erinevate vaadete tagataustad, erinevate vaadete ühendamine koodiga.

- Nupude kujundamine ja ühendamine koodiga.

- Logod

- Dokumentatsioon

- Juhend

Esialgsed plaanid

Parandused

Log

2.September

Grupi moodustamine, Idee arutlus, Esialgsete ülesannete jagamine.

3.September

Graafiline displei ehk mängu tagatausta joonistamine. Mängija joonistamine,Jalgade liigutamine, ja Double buffer.K Esinesid esimesed probleemid: Graafika joonistamisel, mängu kiirus langes.

4.September

Mapi Piiride arvutamine ja kuvamine. Parandati liikumise ja graafika kuvamise arvutamine ära.Mängule lisati ka parem graafika, mis mõjus oluliselt mängu kiirusele. Esinenud probleemid: Collision Detection ei tööta, Lisatud Uus graafika, mõjus oluliselt mängu kiirusele. Pöörduti tagasi vana Graafika juurde.

5.September

MapObject List sorteeriti y koordinaadi poolt, enne tagastamist.

6.September

Loodi monsterite baas ning joonistati staatilised vaenlased. Lisati ka liikumine ning mängija tagaajamine.

13.September

Joonistati Mängu logo ja peamenüü.

14.September

Joonistati välja Uus Mäng nupp, ning lisati see peamenüüsse.

16.September

Peamenüü lisamine mängu, koos Uus Mäng nupuga. Mängul oli nüüd 2 erinevat vaadet:peamenüü, kust sai alustada uut mängu ja mängu vaade.

22.September

Mängule lisati heli. Probleemid: Ainult üks heli sai korraga mängida ning seetõttu läksid mõned helid mängus kaduma.

23.September

Uus interface ning koodi lisati ka pausmenüü võimalus.

10.Oktoober

Uus ja parandatud helisüsteem.

12.Oktoober

Mängijale lisati elud ja nüüdsest sai mängija ka surma.

13.Oktoober

Lisati ThreadLocking võimalus.

14.Oktoober

ObjectList clone, Threadlock width Monitor. Veel lisati uued helid, pandi map liikuma tüdruku jalge all, lisati Monster.cs klass.

16.Oktoober

Lisati menüüdesse DeathMenüü, Highscore Menüü, ning lisati neile nupud Alusta uut mängu, Tulemused, Välju ja Jätka. Probleemid: uut mängu ei olnud võimalik alustada.

17.Oktoober

Lisatud peamenüüse tulemused ja välju nupud, highscore-i menüüsse tagasi nupp. Uus Death Menüü.

18. Oktoober

Alusta uut mängu võimalus töötab.

19.Oktoober

Uus Highscore-i tagataust ja tagasi nupule lisatud Glow.

21.Oktoober

Kogu tekst kommenteeritud, Highscore töötab, Uus font Highscore-le.

22.Oktoober

Surma saades ei lähe enam DeathMenüüsse, vaid Highscore Menüüsse.Lisati veel kommentaare ja parandati Timer-i vigu. Timer ründas liiga paljudes erinevates menüüdes.

23.Oktoober

Parandati mängija liikumine.Loodi installikas ning lisati installikas, dokumentatsioon wikisse. Wiki loomine.

Huvitavat

1. Tegelase juhtimine

Kuna C# standardses libras ja üldse windowsi applicationite puhul on üks tore asi see, et klavatuuril nuppu all hoides, saadetakse alguses 1 signaal, siis tekib umbes poole sekundiline delay ja siis hakatakse juba järjest signaale saatma. See tekitab tegelase liikumisse delay sisse.

Lahendus oli siis selline. Kui mingit nuppu vajutati, registreeriti liikumise flag ja suund. Siis iga taimeri "ticki" ajal vaadati kas liikumise flag oli püsi, kui jah, liiguti, kui ei, siis ei juhtunud midagi. Siis kui nupp lahti lasti, võeti flag maha ja järgmise taimeri "ticki" ajal enam liikumist ei toimunud. Nii liigubki tegelane nüüd sujuvalt. :)

2. Map objektid threadsafe

Meie mängus jookseb korraga 2 threadi. Üks on main thread, kus toimub joonistamine ja siis luuakse pidevalt taimeri poolt "tick" threade, kus toimub tegelase ja kollide liikumine, kollide eemaldamine, skoori arvutamine, leveli arvutamine jne. Juhul kui eelpoolt nimetatud thread kasutab Map objektide listi ja näiteks eemaldab sealt mõne objekti ja samal ajal kasutab ka main thread seda, tekib exception, kuna listi muudeti tema kasutamise ajal.

Lahenduseks, tegin List objekti ümber "wrapperi", kuhu kirjutasin vajalikud meetodid (Clone, Remove, Add, Clear jne.) ja tegin kõik tegevused thread safe'iks. Kasutades Monitor.Enter ja Monitor.Exit meetoteid. See tagab selle, et threadid ei kasutakas samal ajal objekte vaid ootaks üksteise järele.