Meeskond "2
Mäng ise
OSWARS - kood kokkupakituna.
Idee ja Eriku story
Mängu põhipoint on uue operatsioonisüsteemi installimine. Ekraani paremast servast "tekib" vastaseid juurde (võõra operatsioonisüsteemi tegelaste näol), kes püüavad installimist takistada. Uue op-süsteemi tegelane hävitab neid ja kogub seeläbi intsallimisprotsenti. Põhitegelase liikumine toimub peamiselt tausta liikumisega (nagu nt Space Impact).
Mängus toimub tõsine võitlus ja selles võitluses on kaks osapoolt: võimas ja suur MS Windows, kelle opositsiooniks on väiksemad, kuid tõhusa koalitsiooni moodustanud Macintosh ning Linux. Märkimisväärne on see, et üks süsteemidest on arvutil juba peal ning mängu käigus toimub teise süsteemi installeerimine masinale. Demokraatia puudub täielikult ning kahte süsteemi paralleelselt paigaldada ei saa. See tähendab seda, et Windowsi installeerimiseks tuleb Unix lihtsalt hävitada.
Arvutisse sissetungivad üksused "maabuvad" vaenlase valduses oleval territooriumil. Lahing algab DVD-dessandiga, ründavad väed jõuavad arvutisse just DVD plaadilt. Edaspidi toimuvad lahingud siinides, mäludes, protsessori registrites jne.
Mängusisene liikumine toimub vasakult paremale ning vastased tulevad paremalt. (Visuaalselt korrektne lahendus, sest raamatuid lugedes on inimsilm harjunud liikuma vasakult paremale) Maailm liigub tagataustal, kasutaja saab liikuda ekraalin üles/alla, ette/taha.
Lahenduse kirjeldus
Programm on jaotatud klassidesse vastavalt erinevatele mänguelementidele - relvad, vastased, mängija, skoor jne.
Erinevad klassid on omavahel seotud game1.cs klassi kaudu. Relvade ja vastaste tekkimine ja hävinemine on lahendatud massiividega - kui tekib uus relv/vaenlane, lisatakse massiividesse nende elemendid ning kui hävib/läheb ekraanilt välja relv/vaenlane, kustutatakse massiivist see ära.
Erinevad mänguolekud on lahenduse leidnud int muutujaga, mille iga erinev väärtus tähendav erinevat mänguolekut. Erinevad olekud on menüüolek, storyolek, pausiolek, level1 olek, level2 olek ja skooriolek. Vastavalt olekumuutusele on taustaks ka muusika.
Kirjeldustega Klassijaotus:
- BossiRelv.cs - klass, mis kirjeldab lõpuleveli vastase relva - kuidas ja kui kiiresti see liigub jne. Sisaldab relva konstruktorit ja selle joonistamise meetodit.
- Game1.cs - peamine klass, kus on defineeritud klassimuutujad, kus kutsutakse välja meetodeid erinevatest klassidest ning seotakse neid.
- LopuKoll.cs - klass, milles tagatakse level2 vastase püsimine ekraanil, liikumine ning mis sisaldab endas vastase joonistamise meetodit ja konstruktorit.
- Mangija.cs - klass, mis kirjeldab mängijat, tema liikumist.
- Menu.cs - klass, mis sisaldab endas menüüd, pausi ja storyt esilekutsuvaid meetodeid.
- Plahvatus.cs - selles klassis on meetodid kõikide plahvatuste joonistamiseks.
- Porge.cs - klass, mille kaudud toimub kokkupõrkekontroll ning realiseeritakse põrkamise tagajärjed.
- Program.cs - main meetod
- Relv.cs - klass, mis kirjeldab mängija relva - kuidas, kui tihti ja kui kiiresti see lendab jne.
- Skoor.cs - klass, mille kaudu kuvatakse ekraanile hetkeskoor, elude seis ning installeerimise protsent. Kirjutab mängu lõppedes skoori skooride faili.
- Topskoor.cs - klass, mis töötleb skooride faili ning kuvab mängu lõppedes esile 5 parimat skoori ning nende mängimise kellaajad ja kuupäeva.
- Ttaust.cs - klass, mis kirjeldab tausta, selle liikumist.
- Vaenlane.cs - klass, ms kirjeldab level1 vaenlaseid, nende tekkimist ja kadumist.
- VaenlaseRelv.cs - klass, mis kirjeldab level1 vaenlase relvi.
Kasutusjuhend
Mängu kontrollnupud:
- Noolenupud - vastavalt noole suunale liikumine
- "P" - pausile minek (ka pausi ajal läheb see nö pausile)
- pausilt äratulemine - kõik peale "P"
- Enter - mänguga alustamine
- Escape - mängust lahkumine
- Space - tulistamine
CAPTAIN's LOG
Kokkuvõtvalt
Kõigil oli tiimis oma roll ja kokkuvõttes võib hinnata meeskonna koostööd ja organiseerumist väga heaks. Pidevalt toimus suhtlemine skype'i teel ja kõik tegid ära enda ülesanded. Enamus koodi kirjutamist toimus koos - st et samas ruumis viibides.
Koodi jagamiseks kasutasime google docs'i - kuna tegelesime erinevate klassidega ning ülesanded olid erinevad ning kuna enamasti kirjutasime koodi koos, oli selline koodi jagamine võimalik.
28. september
Toimusid:
- tiimi liikmete kokkuklopsimine
- rollijaotus
- nime valik (2#4U)
- idee genereerimine
4. oktoober
Toimus:
- ülesannete täpsem kirja panemine ja jaotamine
- õppejõuga teema kooskõlastamine
- Erik sheeris valmiskirjutatud storyt
7. oktoober
- puuduoleva tarkvara ja süsteemide installimine
8. oktoober
- xna töölesaamine kõigil
- programmi kondikava
9. oktoober
- endiselt probleemide lahendamine tarkvara osas
- tausta liikumise süsteem (Miina)
- peategelase liikumise süsteem (Miina)
- tulistamine algne variant (Miina)
11. oktoober
- ja veel tarkvaraga mässamist
- taustapiltide ja muu graafikaga tegelemine - esimene tasutapilt pooleli + sai selgeks räägitud täpsemalt, mis edasi peab tegema graafikas (Sten)
13. oktoober
- mängumootori tuuning ja klassidesse jagamine (Miina)
- mängija kontrollimise tuuning (Indrek)
- vaenlaste liikumise teooria (Erik)
14. oktoober
- taustapilt valmis (Sten)
- tulistamise täiendamine (Indrek)
15. oktoober
- kuuli ja vaenlase klasside täiendamine (Reigo)
- vastaste random genereerimine (Reigo)
- erinevad mänguolekud - menüü, mäng, paus, lõpp (Miina, Indrek)
- mängu testimine ja konstruktiivne kriitika (Erik)
16. oktoober
- vaenlase random genereerimine ja suund mängija poole (Reigo, Indrek)
- Reigo liikus edasi heli teemasse. (Reigo)
- Sten tegi graafikat edasi. (Sten)
- menüü valmis. olekute edasiarendus. (Miina, Indrek)
- helikonsultant (Erik)
17. oktoober
- Lineaari võrrandite lahendamine (Reigo)
- mängija piltide variandid (Sten)
- mänguakna suuruse fikseerimine (Indrek)
- klassidevaheliste listide sidumise teooriaga tutvumine (Indrek, Miina)
18. oktoober
- "kuuli" pilt valmis (Sten)
20. oktoober
- mängija ja vaenlase ja kuuli põrkumine valmis (Indrek)
- vastaste ja mängija elud (Indrek)
- top skoori ja sellega seonduva teooria (Miina)
21. oktoober
- mängija-vaenlane, vastane-kuul, mängija-kuul, kuul-kuul põrked ja reaktsioonid OK (Indrek)
22. oktoober
- plahvatuse klass (Indrek)
- jooksev elude ja skoori näitamine mängu ajal (Miina)
- mänguskooride salvestamine (Miina)
23. oktoober
- plahvatuste klassiga lõpetatud (Indrek)
- topskooride näitamine mängu lõppedes (Miina)
- mänguprotsend arvestamine ja näitamine (Miina)
- peaaegu kõik kohustuslik graafika OK (Sten)
- helide otsimine ja leidmine ka (Reigo)
24. oktoober
- X-Boxi toe realiseerimine (Erik)
- kogu graafika olemas (Sten)
- XACT heliliidese implementeerimine mängu (Reigo)
- Lõpulevel (Indrek, Miina)
Rollijaotus
- kõik koos - idee ja muud üldised asjad
- Erik - story + progr
- Reigo - heli + progr
- Miina - koordinaator + progr + wiki
- Indrek - progr
- Sten - graafika
Esialgsed tegemised
- taust ja liikumine
- klaviatuuri funktsionaalsus
- vastased ja peategelane
- eelmenüü ja väljumisvõimalus
- graafika
Hilisemad tegemised
- random generaator
- puldi funktsionaalsus
- tulistamine ja reaktsioonid
- levelid
- top skoorid
- heli
Seisuga 22. oktoober TODO
- heliefektid (Reigo)
- XNA tugi (Erik)
- vastaste pildid ja tema kuulide pildid (Sten)
- topskoorid (Miina)
Seisuga 24. oktoober TODO
- dokumentatsiooni parendus
- testimine
Mis on juba olemas?
Seisuga 17. oktoober
Mängul on olemas stardileht (eelmenüü), kus on olemas juhend mängimiseks (nupud jne). Liikuval taustal saab mängija paremast servast suvaliselt genereeritud kohast tekkivaid vaenlaste poole kuule saata. Vaenlased liiguvad konstantse kiirusega vasakule ja suunduvad mängija poole (vertikaalses plaanis: Y-telg). Võimalik on mängu pausi peale panna ning mängust väljuda.
Seisuga 22. oktoober
Lisaks eelnevale tulistavad vastased mängijat ja mängijal ning vastastel on fikseeritud elud. Nende otsasaamisel vastane hävineb või lõppeb mäng (kui mängija saab surma). Ekraanil on näha hetke punktiseis ning samuti allesjäänud elud. Kuul-kuul kokkupõrkel mõlemad kuulid hävivad, vastane-mängija kokkupõrkel kaotab mängija ühe elu, vastane hävib.
Seisuga 24. oktoober
Lisandunud on lõpulevel uue vastasega. Surma saades näitab topskoore, samuti mängu läbi tehes. Olemas X-Boxi tugi.