Meeskond "Rendikunn": Difference between revisions

From ICO wiki
Jump to navigationJump to search
Sliivand (talk | contribs)
Sliivand (talk | contribs)
 
(46 intermediate revisions by the same user not shown)
Line 1: Line 1:
=Mäng=
=Mäng=
Tegemist siis Xonixiga.
X-onix.
[[File:xscreenshot1.jpg|thumb|1. leveli screenshot]]
* [http://enos.itcollege.ee/~sliivand/src/xonix_src.zip lähtekood] (16MB)
* [http://enos.itcollege.ee/~sliivand/src/xonix_installer.zip installikas] (35MB) XNA HiDef profile
* [http://enos.itcollege.ee/~sliivand/src/xonix_installer_reach.zip installikas] (35MB) XNA Reach profile
[[File:xscreenshot1.jpg|thumb|1. mängutaseme kuvatõmmis]][[File:xscreenshot2.jpg|thumb|esimenüü kuvatõmmis]]
==Lähtekood==
Mingi rühmatöökeskkonna kasutamiseni me reaalselt ei jõudnudki. Seetõttu on lähtekood saadaval IT Kolledži serveris zip-vormingus failina: [http://enos.itcollege.ee/~sliivand/src/xonix.zip lähtekood...] (16MB)
Mingitel arvutitel võib tekkida probleem selle käivitamisega tingituna mitteühilduvast videokaardist või draiveritest (HiDef profiil tahab vist DX10 ühilduvat GPU-d). Siis võib aidata, kui klassis ''Game1'' ''Draw'' meetodi all ''spriteBatch.Begin''i argument ''LinearWrap'' asendada argumendiga ''LinearClamp'' ning projekti ''Properties''i all määrata ''Game profile: Reach''. Selle tulemusena tekib küll väike probleem mänguväljaku tausta joonistamisega, kuid muidu peaks kõik muu töötama. Mõlema versiooni installerid on toodud...


=Meeskond=
=Kirjeldus=
* Ragnar Nurmla
Klassikaline Xonixi mäng. Kangelane (roheline junn) peab haarama alasid, kus põrkavad vaenulikud pallid, kellega ei tohi kokku põrgata. Ka ei tohi pallid kokku põrgata ala haaramisel tekkiva sabaga, ega ei tohi kangelane kokku põrgata ka ise enda sabaga. Kokku on 10 levelit. Mängijal on 6 elu. Kui õnnestub haarata ühe korraga üle 50% alast, võib elu juurde saada.
* Sven Mäeks
Taseme läbimiseks on vajalik haarata 75% alast, seejärel kuvatakse täies mahus taustapilt ning jätkamiseks tuleb vajutada Enter.
* Siim Liivand
Mängu ajal võib väljuda esimenüüsse, et vaadata näiteks abiinfot, seejärel saab mängu jätkata pooleliolevast kohast.
* Mikk Mähar
==Punktiarvestus==
Mida suurem ala ühe katsega haarata õnnestub, seda rohkem punkte selle eest saab. Surmasaamise eest võetakse punkte maha. Lisapunkte saab ala eest, mis jääb üle taseme läbimiseks vajaliku 75%. Lisapunkte saab ka iga taseme lõpetamise eest.
 
==Juhtklahvid==
Kangelase juhtimiseks saab kasutada nii klaviatuuri kui XBoxi kontrollerit.
===Klaviatuur===
* Rohelise junni e. kangelase juhtimiseks kasutada nooleklahve.
* Esc-klahviga saab igast alamtaseme aknast esilehe menüüsse.
* P-klahviga mängus paus (ka Pause-klahviga).
* B-klahviga bossi paus. Nagu tavaline paus, ainult ette tuleb asjalik tööpilt ja helid vaikivad.
* S-klahviga taustamuusika ja helid vaikseks või uuesti mängima. Esimese vajutusega vaikib taustamuusika, teise vajutusega heliefektid, kolmanda vajutusega kõik jälle kõlavad.
* X-klahv vahetab mänguaknas juhtklahvide infot: klaviatuur vs. XBoxi kontroller.
===XBoxi pult===
* Kangelast saab juhtida võrdselt kõikide hoobade ja patjadega.
* Back-nupuga saab igast alamtaseme aknast esimenüüsse.
* B-nupuga mängus paus.
* Y-nupuga taustamuusika ja helid vaikseks või uuesti mängima. Esimese vajutusega vaikib taustamuusika, teise vajutusega heliefektid, kolmanda vajutusega kõik jälle kõlavad.
* X-nupp vahetab mänguaknas juhtklahvide infot: klaviatuur vs. XBoxi kontroller.
* Start-nupp on klaviatuuri Enteri ekvivalent.
===Menüüs navigeerimine===
Esilehe menüüs navigeerimiseks on kasutatavad nii nooleklahvid kui XBoxi kontrolleri hoovad.
Menüüs valiku tegemiseks vajutada Enter või Start, või paremat nooleklahvi ehk hoovaga paremale.


=Lähtekood=
===Nime sisestamine edetabelisse===
Varsti hakkab kuskilt tulema;)
Kui mängija on saavutanud edetabeli väärilise punktisumma, siis avaneb koheselt peale mängu lõppu edetabel, kuhu on võimalik oma nimi sisestada. Nime saab sisestada klaviatuurilt, kasutades tähemärke ja tühikuid, lõpetamiseks Enter või Esc.
XBoxi puldil tuleb padja abil kerida tähti üles-alla, järgmise tähe sisestamiseks liikuda paremale, kustutamiseks vasakule. Sisestamise lõpetamiseks Start või Back.


=Kirjeldus=
=Programm=
Äravõetud ala arvutatakse veebist leitud [http://www.codeproject.com/KB/GDI/QuickFill.aspx floodfill] algoritmi kasutades. Igast vaenlase palli positsioonist alates tehakse floodfill ja alad, mis pärast seda jäävad täitmata, on järelikult meie äravõetud alad.
==Klassid==
Mõningatest klassidest, mida tarkvara kasutab.
Kuna algselt sai näppu harjutatud Eneta Veebistuudiumi materjalide põhjal (seal oli mingi tomatite ja saia mäng) ning praegune Xonixi mäng mingil määral kasvas välja sellest, siis on kasutusel klassid nagu ''staticgameObject'' ja sellest pärinevad ''movingGameObject'' ja ''bouncingGameObject'', ''heroObject'' jne, vastavalt paigalseisvate objektide hoidmiseks ja põrkavate pallide ja "kangelase" jaoks.
Lisaks tundus mingil hetkel olevat vajalik teha eraldi klass ala haaramisel jooistatava "saba" hoidmiseks ja arvutamiseks (klass ''Tail'').
Kõik ekraanid on eraldi klassid, klassi ''Screen'' alamklassid.
Esilehe menüü jaoks on eraldi klass ''MenuItems'', mis võimaldab menüüsse lisada elemente ja menüüs navigeerida ning ka joonistab menüüd.
Ala haaramisega seotud arvutiste tegemiseks on klass ''Grid'', milles ala ristkülikud konverteeritakse maatriksiks, tehakse arvutused ja konverteeritakse tulemused tagasi ristkülikuteks. Algselt ei soovinud me maatriksit üldse kasutada, kuigi see olnuks iseenesest loogiline. Kuid ilma maatriksita kättevõidetud alade väljaarvutamine osutus liiga kõrgema astme matemaatikaks, nii et maatriks tuli siiski lisada. Objektid liiguvad küll endiselt vabalt ja maatriksist sõltumatult.
On eraldi klass InputHelper, mida keegi kodanik kuskil foorumis lahkelt jagas, et oleks mugav sisendseadmetega suhelda (see on vist ainuke otse ülevõetud koodijupp, lisaks ka ''floodfilli'' algoritm tuli veebist leida).
Ka on eraldi klass ''Sounds'' heliefektide ja taustamuusikaga majandamiseks.


Klassikaline Xonixi mäng. Kangelane peab haarama alasid, kus põrkavad vaenulikud pallid. Mängu lõplik versioon kasvas välja Eneta Veebistuudiumi materjalis kirjeldatud saia ja tomatite mängust. Selle näite abil sai tekitatud põrkavad pallid ja üldse kõik ekraanil kuvatavad liikuvad ja liikumatud objektid. Sealt ka klassid staticGameObject, movingGameObject jne. Sealt omakorda päritud klassid bouncingGameObject ja heroObject jne. Eraldi klass Tail sai loodud kangelasele saba joonistamiseks, kui kangelane on ala haaramas. Kuna algselt ei soovinud me kasutada maatriksit, siis ilmses peagi probleem, et ei suutnud välja mõelda meetodit, kuidas ilma maatriksita äravõetud alasid arvutada. Siis sai loodud lisaks juurde veel klass grid, milles tehakse kõikvõimalikke ala haaramisega seotud arvutusi. Ühtlasi tuli ala jagada tinglikult ruutudeks, objektid liiguvad küll vabalt ja maatriksist sõltumatult, kuid alade arvutamine toimub maatriksi abil. Äravõetud ala arvutatakse veebist leitud floodfill algoritmi kasutades. Igast vaenlase palli positsionist alates tehakse floodfill ja alad, mis pärast seda jäävad täitmata, on järelikult meie äravõetud alad. Seejärel see maatriksi põhjal leitud info konverteeritakse ümber sobivaks platsile ristkülikute joonistamiseks mõeldud infoks. Natuke tülikas ja ümber nurga lähenemine, aga kuna alguses kohe maatriksit kasutusele ei võetud, oleks tulnud liiga palju ümber teha.
==Vead==
Mõned silmatorkavad parandamist vajavad vead:
*kohati võib täheldada mingeid anomaaliaid rohelise junni liikumises (peaks olema parandatud).
*harvadel juhtudel, kui vaenlase pall põrkub sabaga hetkel, kui kangelane on just lõpetamas ala haaramist, tekib kala (peaks olema parandatud).
*harvadel juhtudel ei saa kangelane aru, et peab ala haaramise lõpetama, kui jõuab vaid ühe ühiku laiusele juba kättevõidetud alale (kas on parandatud? ei tea).
*mängust väljumisel tekib vahel mingi ''exception'', mis on kuidagi seotud MediaPlayeriga ilmselt... Ei ole kindlat lahendust leidnud.
*pallid ei põrka tegelikult päris vastu seina, tuleb täiendada.


=B-Logi=
=B-Logi=
Line 74: Line 118:
| '''Olgu kõik valmis!''' || Kaitsmine on 05.11. || Keeruline ||Kõik koos ||04.11.  
| '''Olgu kõik valmis!''' || Kaitsmine on 05.11. || Keeruline ||Kõik koos ||04.11.  
|}
|}
=Meeskond=
* Ragnar Nurmla
* Sven Mäeks
* Siim Liivand
* Mikk Mähar

Latest revision as of 21:56, 1 December 2010

Mäng

X-onix.

1. mängutaseme kuvatõmmis
esimenüü kuvatõmmis

Lähtekood

Mingi rühmatöökeskkonna kasutamiseni me reaalselt ei jõudnudki. Seetõttu on lähtekood saadaval IT Kolledži serveris zip-vormingus failina: lähtekood... (16MB) Mingitel arvutitel võib tekkida probleem selle käivitamisega tingituna mitteühilduvast videokaardist või draiveritest (HiDef profiil tahab vist DX10 ühilduvat GPU-d). Siis võib aidata, kui klassis Game1 Draw meetodi all spriteBatch.Begini argument LinearWrap asendada argumendiga LinearClamp ning projekti Propertiesi all määrata Game profile: Reach. Selle tulemusena tekib küll väike probleem mänguväljaku tausta joonistamisega, kuid muidu peaks kõik muu töötama. Mõlema versiooni installerid on toodud...

Kirjeldus

Klassikaline Xonixi mäng. Kangelane (roheline junn) peab haarama alasid, kus põrkavad vaenulikud pallid, kellega ei tohi kokku põrgata. Ka ei tohi pallid kokku põrgata ala haaramisel tekkiva sabaga, ega ei tohi kangelane kokku põrgata ka ise enda sabaga. Kokku on 10 levelit. Mängijal on 6 elu. Kui õnnestub haarata ühe korraga üle 50% alast, võib elu juurde saada. Taseme läbimiseks on vajalik haarata 75% alast, seejärel kuvatakse täies mahus taustapilt ning jätkamiseks tuleb vajutada Enter. Mängu ajal võib väljuda esimenüüsse, et vaadata näiteks abiinfot, seejärel saab mängu jätkata pooleliolevast kohast.

Punktiarvestus

Mida suurem ala ühe katsega haarata õnnestub, seda rohkem punkte selle eest saab. Surmasaamise eest võetakse punkte maha. Lisapunkte saab ala eest, mis jääb üle taseme läbimiseks vajaliku 75%. Lisapunkte saab ka iga taseme lõpetamise eest.

Juhtklahvid

Kangelase juhtimiseks saab kasutada nii klaviatuuri kui XBoxi kontrollerit.

Klaviatuur

  • Rohelise junni e. kangelase juhtimiseks kasutada nooleklahve.
  • Esc-klahviga saab igast alamtaseme aknast esilehe menüüsse.
  • P-klahviga mängus paus (ka Pause-klahviga).
  • B-klahviga bossi paus. Nagu tavaline paus, ainult ette tuleb asjalik tööpilt ja helid vaikivad.
  • S-klahviga taustamuusika ja helid vaikseks või uuesti mängima. Esimese vajutusega vaikib taustamuusika, teise vajutusega heliefektid, kolmanda vajutusega kõik jälle kõlavad.
  • X-klahv vahetab mänguaknas juhtklahvide infot: klaviatuur vs. XBoxi kontroller.

XBoxi pult

  • Kangelast saab juhtida võrdselt kõikide hoobade ja patjadega.
  • Back-nupuga saab igast alamtaseme aknast esimenüüsse.
  • B-nupuga mängus paus.
  • Y-nupuga taustamuusika ja helid vaikseks või uuesti mängima. Esimese vajutusega vaikib taustamuusika, teise vajutusega heliefektid, kolmanda vajutusega kõik jälle kõlavad.
  • X-nupp vahetab mänguaknas juhtklahvide infot: klaviatuur vs. XBoxi kontroller.
  • Start-nupp on klaviatuuri Enteri ekvivalent.

Menüüs navigeerimine

Esilehe menüüs navigeerimiseks on kasutatavad nii nooleklahvid kui XBoxi kontrolleri hoovad. Menüüs valiku tegemiseks vajutada Enter või Start, või paremat nooleklahvi ehk hoovaga paremale.

Nime sisestamine edetabelisse

Kui mängija on saavutanud edetabeli väärilise punktisumma, siis avaneb koheselt peale mängu lõppu edetabel, kuhu on võimalik oma nimi sisestada. Nime saab sisestada klaviatuurilt, kasutades tähemärke ja tühikuid, lõpetamiseks Enter või Esc. XBoxi puldil tuleb padja abil kerida tähti üles-alla, järgmise tähe sisestamiseks liikuda paremale, kustutamiseks vasakule. Sisestamise lõpetamiseks Start või Back.

Programm

Äravõetud ala arvutatakse veebist leitud floodfill algoritmi kasutades. Igast vaenlase palli positsioonist alates tehakse floodfill ja alad, mis pärast seda jäävad täitmata, on järelikult meie äravõetud alad.

Klassid

Mõningatest klassidest, mida tarkvara kasutab. Kuna algselt sai näppu harjutatud Eneta Veebistuudiumi materjalide põhjal (seal oli mingi tomatite ja saia mäng) ning praegune Xonixi mäng mingil määral kasvas välja sellest, siis on kasutusel klassid nagu staticgameObject ja sellest pärinevad movingGameObject ja bouncingGameObject, heroObject jne, vastavalt paigalseisvate objektide hoidmiseks ja põrkavate pallide ja "kangelase" jaoks. Lisaks tundus mingil hetkel olevat vajalik teha eraldi klass ala haaramisel jooistatava "saba" hoidmiseks ja arvutamiseks (klass Tail). Kõik ekraanid on eraldi klassid, klassi Screen alamklassid. Esilehe menüü jaoks on eraldi klass MenuItems, mis võimaldab menüüsse lisada elemente ja menüüs navigeerida ning ka joonistab menüüd. Ala haaramisega seotud arvutiste tegemiseks on klass Grid, milles ala ristkülikud konverteeritakse maatriksiks, tehakse arvutused ja konverteeritakse tulemused tagasi ristkülikuteks. Algselt ei soovinud me maatriksit üldse kasutada, kuigi see olnuks iseenesest loogiline. Kuid ilma maatriksita kättevõidetud alade väljaarvutamine osutus liiga kõrgema astme matemaatikaks, nii et maatriks tuli siiski lisada. Objektid liiguvad küll endiselt vabalt ja maatriksist sõltumatult. On eraldi klass InputHelper, mida keegi kodanik kuskil foorumis lahkelt jagas, et oleks mugav sisendseadmetega suhelda (see on vist ainuke otse ülevõetud koodijupp, lisaks ka floodfilli algoritm tuli veebist leida). Ka on eraldi klass Sounds heliefektide ja taustamuusikaga majandamiseks.

Vead

Mõned silmatorkavad parandamist vajavad vead:

  • kohati võib täheldada mingeid anomaaliaid rohelise junni liikumises (peaks olema parandatud).
  • harvadel juhtudel, kui vaenlase pall põrkub sabaga hetkel, kui kangelane on just lõpetamas ala haaramist, tekib kala (peaks olema parandatud).
  • harvadel juhtudel ei saa kangelane aru, et peab ala haaramise lõpetama, kui jõuab vaid ühe ühiku laiusele juba kättevõidetud alale (kas on parandatud? ei tea).
  • mängust väljumisel tekib vahel mingi exception, mis on kuidagi seotud MediaPlayeriga ilmselt... Ei ole kindlat lahendust leidnud.
  • pallid ei põrka tegelikult päris vastu seina, tuleb täiendada.

B-Logi

  • 16.10.10
Tiimi moodustamine
  • 17.10.10
Mängu idee läbiarutamine ja tööjaotus
  • 21.10.10
Liitus Mikk
  • Tulevik
Alfa, Beeta versioonid
Kriitikat kannatav tulemus
  • 25.10.10
Toimus skype koosolek, kus lepiti kokku järgnevas:
  • tiimitöö väljundiks on Xonix
  • kõik lõpetavad XNA paigaldused ja hakkavad sügavuti tutvuma XNA-ga ja C#ga
  • igaüks otsib koodinäiteid teostatud xonixi mängudest XNA-s
  • 26.10.10
On valminud kaks erinevat algversiooni xonix'ist
  • 27.10.10
  • 30.10.10
  • 21.11.10
Võib vist öelda, et hetkeseisuga on valminud asjast töötav versioon. Klassikaline Xonixi mäng, millel 10 levelit. Alade haaramisel koorub taustalt välja pilt. Mida suurem ala korraga õnnestub haarata, seda rohkem punkte saab... Mängu edenedes lisandub palle ja kiirused kasvavad.


Meeskonnaliikmetele antavad ülesanded #Ajakavas

ToDo

Ülesanne Teostaja Tehtud?
B-Logi täitmine Sven pidev
Kui progemisel keegi jänni jääb, siis abi debugimisel Mikk pidev
XBox'i versiooni jaoks alguspilt

Ajakava

Komponendi/Töö nimetus Olulisus ja lühikirjeldus Oletatav keerukus Kes, mida teeb/teha tahab Tähtaeg orienteeruvalt
Olgu kõik valmis! Kaitsmine on 05.11. Keeruline Kõik koos 04.11.


Meeskond

  • Ragnar Nurmla
  • Sven Mäeks
  • Siim Liivand
  • Mikk Mähar