Meeskond "Miinipilduja tuli": Difference between revisions

From ICO wiki
Jump to navigationJump to search
Jvahtre (talk | contribs)
No edit summary
Tliiv (talk | contribs)
Line 24: Line 24:
- ObjectList wrapper List'ile
- ObjectList wrapper List'ile


- XML mapi prasemine
- XML mapi parsimine


- Jms. jooksvad asjad
- Jms. jooksvad asjad
Line 36: Line 36:
- Tegelase liikumine ja loogika
- Tegelase liikumine ja loogika


- Tulemuste salvestamine, kuvamine
- XML tulemuste salvestamine, kuvamine


- Joonistamine
- Mapi dünaamiline joonistamine
 
- Muu joonistamine


- Jms. jooksvad asjad
- Jms. jooksvad asjad

Revision as of 12:37, 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

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.