Meeskond:Vertigo: Difference between revisions
Line 200: | Line 200: | ||
*Näidisandmete sisestamiseks sama asi läbi teha InsertSampleData.sql-iga. | *Näidisandmete sisestamiseks sama asi läbi teha InsertSampleData.sql-iga. | ||
=Ajaveeb= |
Revision as of 21:39, 29 November 2014
Meeskond
Meeskonna liikmed:
- Meri-Kris Jaama
- Liisi Kitsapea
- Teele Liblik (projektijuht)
- Tanel Peet
Idee
Luua WPF tehnoloogiat kasutades mäng, mille sisuks on erinevate kunstiteoste (filmid, raamatut, muusika, maalid) äraarvamine lühikeste klippide, piltide, helide või muude vihjete abil.
Analüüs
1. Analüüs rakendusele.
a. Mida see endas sisaldab?
Rakendus sisaldab endas kasutajaliidest ja andmebaase kasutajate, kunstiteoste, autorite, kunstiliikide ja mängutulemustega.
b. Mis on selle eesmärk?
Reaalteadlastena, tunneme erilist vajadust kunstialaste teadmiste harimise järgi ja usume, et mängimine on väga efektiivne viis teadmiste omandamiseks. Seepärast loomegi õppevahendina mängu rakenduse. Rakenduse eesmärk on läbi mänguliste elementide olla abivahendiks kasutaja kunstialaste teadmiste omandamisel ja laiendamisel. Rakendus on mõeldud kõigile inimestele, kellel on huvi arendada/omandada teadmisi erinevate kunstiliikide teoste kohta ning kellel on ligipääs Windows 8 operatsioonisüsteemile.
Pikaajalisem visioon on pakkuda kasutajatele võimalust harida end paljude erinevat liiki kunstivormide teoste hulgas (filmikunst, muusika, maalikunst jne). Käesoleva aine raames, on eesmärk realiseerida rakendus esialgu ainult filmikunsti vallas (kirjeldatud ka must have ja nice to have osas).
c. Mida tavakasutaja sellega teha saaks?
Rakenduse abil saab kasutaja laiendada oma teadmisi erinevate kunstiliikide väljundite kohta. Täpsemalt, saab kasutaja seostada kindlat teost teose autori ja teose nimega (nice to have’ina lisasime ka loomisaasta, mis teostub, kui jagub piisavalt ajaressurssi). Mängus kuvatakse kasutajale kunstiteosest screen shot (või nt muusikateosest viisijupp), misjärel saab kasutaja sisestada teose nime ja autori nime. Kasutaja huvi stimuleerimiseks võimaldab rakendus koguda õigete vastuste eest punkte.
d. Milliste osade realiseerimine võib osutuda problemaatiliseks?
Tõenäoliselt saab olema paras pähkel vastuse sisestamise loogika realiseerimine selliselt, nagu praegu nõuetes ja protsessis oleme välja toonud. Tõenäoliselt lisandub testimise käigus sellele aspektile igasuguseid erandeid ja olukordi, mida hetkel ei oska ennustada.
e. Kui on tööjaotus paigas, siis tuua ka see välja.
Plaanime rakenduse loomisel appi võtta mõningad SCRUMi põhimõtted ja üheks neist on kindlasti see, et oleme cross-functional team. Täpsemalt selgineb iga meeskonnaliikme panus iteratsioonide käigus, mida kindlasti siin ka kajastame.
Kuna plaanime koodi kirjutada inglise keeles, siis järgnevalt on toodud ära mõisted, mida rakenduse analüüsis ja koodis kasutame (täiustub jooksvalt). Vabandame inglisekeelsete mõistete “eestistamise” pärast eestikeelses tekstis, kuid kuna tegu on pigem väga lihtsate mõistetega, siis loodame, et ei tekita palju segadust.
a. User – mängu mängija ehk rakenduse kasutaja;
b. QuestionSet – 1 mäng, koosneb kindlast arvust questionitest;
c. Game mode – võimaldab useril valida, millist QuestionSet’i soovib mängida. Varieeruda võivad küsimuste arv, teoste stiil, liigid jne;
d. ArtWork – teos, mis esitatakse questionis;
e. Question – küsimus, seos, artWork mängus;
f. Logs – logid;
g. Score – skoorl;
h. ArtWorkType – kunstiliik (film, maalikunst, muusika jne);
i. Artist – teose autori nimi;
j. Year – teose loomisaasta;
2. Tuua välja nimekiri funktsionaalsusest, mida plaanitakse kindlasti teostada(Must have)
a. useril peab olema võimalik luua kasutaja;
b. useril peab olema võimalus näha erinevate QuestionSet’ide score’e (konkreetse rakenduse piires);
c. andmebaas questionitele, kus ArtWorkType on film. Seega on kõik questionid esialgu filmikunsti valdkonnast.
d. vastamine käib nii, et user hakkab kirjutama questioni alla vastust vabale väljale ja rippmenüü pakub vastavalt sisestatud tähtedele kõikidest baasis olevatest fimidest variante, millest user valib selle filmi nime, mida tahab vastusena esitada;
e. edasi ja tagasi saab questionite vahel suurepäraselt liikuda;
f. viimase questioni juures pole mitte “NEXT”, vaid “END” (pole võimalik järgmist küsimust valida);
g. esimese questioni juures pole võimalust valida “PREVIOUS” (minna eelmise küsimuse juurde);
h. QuestionSet loetakse lõpetatuks, kui user on klõpsanud “END”;
i. user saab valida game mode’i, kas 5, 10 või 15 questionit;
j. peale vastamist (“END’i” klõpsamist) saab user kohe ainult viimase QuestionSet’i vastuseid vaadata. Kui QuestionSet kinni pannakse, kustuvad viimased vastused ära.
k. score moodustub vastavalt õigete vastuste hulgale (kui teose autor ja teose nimi on mõlemad õiged, saab user 3 punkti, kui neist ainult 1 on õige, saab 1 punkti);
l. score on esitatud nii, et on võrreldav erinevate game mode’ide vahel;
3. Nimekiri funktsionaalsustest, mis võiks olla, aga mida ei pruugita ajapuuduse tõttu realiseerida.(Nice to have)
a. rakendus ei ole ainult konkreetse masina spetsiifiline, vaid suhtleb üle interneti. Seega on võimalik skooritabelis näidata kõikide userite score’e. Useritel on lisaks kasutajanimele ka password;
b. (järg punktile a.) viktoriini game mode. Saab mängida seltskonnaga ühte QuestionSet’i;
c. questionid luuakse erinevate artWorkType’idega. Filmikunsti teostele lisanduksid ka muusika, maalikunsti jne teosed;
d. saad valida, mitmendat questionit tahad vastata (must have’ina sai liikuda ainult eelmise ja järgmise questioni vahel);
e. artWork andmebaas, mis kogub endasse kõik rakenduses olevad teosed on suur;
f. palju erinevaid game mode’e. Nt kindel mäng, kus questionid on samad;
g. questionis küsitakse ka teoste loomisaastat (year);
h. questionis küsitud loomisaasta (year) kohta antakse vastamisel võimalik ajavahemik;
i. loogika, mis kontrollib rakenduses kasutaja loomisel useri sisestatud vanust ja lähtuvalt sellest valib eakohaseid questioneid;
j. Tanel kirjutab questionite vastamisele ajapiirangu, kui tal igavad jõulud.
Useri loomisel on küsitud järgmist infot:
- nimi;
- vanus (nice to have nõue);
Useri protsess rakenduse kasutamisel:
1. user teeb endale kasutaja;
2. valib mängu pikkuse (game mode’i), kas 5, 10 või 15 questionit;
3. kuvatakse esimene question, mis tähendab, et kuvatakse screen shot ühe filmi stseenist. Lisaks on kuvatud ka 2 välja, kuhu user saab vastused sisestada: mis filmiga on tegu ja kes on filmi autor;
4. vastamine käib nii, et user hakkab kirjutama vastust vabale väljale ja rippmenüü pakub vastavalt sisestatud tähtedele (vahet pole, mitmenda vastuse sõna esimesed tähed) kõikidest baasis olevatest fimidest variante, millest user valib selle, mida tahab vastusena esitada. Näiteks, on screen shot filmist “Harry Potter and the Sorcerer's Stone” ning user tunneb screen shoti järgi filmi ära ja hakkab kirjutama vastuse väljale “sorcerer…”. Selle peale tekib vastusevälja juurde rippmenüü, kus on ka toodud ühena variantidest “Harry Potter and the Sorcerer's Stone”, mida user saab valida ja vastusena esitada. Sama loogika järgi valib user ka režissööri nime;
5. user saab liikuda erinevate questionite vahel mängitavas QuestionSet’is;
6. viimase questioni juures pole mitte “NEXT”, vaid “END”. “END’ile” vajutamine annab märku QuestionSet’i lõpetamisest, misjärel loetakse kokku mängu score (kui teose nimi ja autor olid mõlemad õiged, suureneb score 3 punkti, kui neist ainult 1 on õige, suureneb score 1 punkti võrra);
7. rakendus näitab score’i, mis mängitud QuestionSet’i tulemusel saadi;
8. lisaks kuvatakse valik “vaata detailselt tulemust”, mis viskab useri mängitud QuestionSet’i algusesse, kus nüüd saab user kõik juba vastatud questionid ühe kaupa läbi käia ja analüüsida, mis vastus läks õigesti, mis mitte ja mis sel juhul oleks olnud õige vastus;
9. kui vastused läbi vaadatud, saab user alustada uut QuestionSet’i.
Järgnevalt on ära toodud rakenduse esialgne ERD mudel.
Prototüüp
Rakenduse põhifunktsionaalsust on näha prototüübis, kus on võimalik teha läbi üks 5 küsimusega mäng. Tuleb ära arvata, mis filmist on kuvatav pilt pärit ning kes on selle režissöör. Kui vastata õigesti nii teose nimi, kui autor, siis saab selle eest 3 punkti. Kui ainult üks vastata õigesti, siis 2 punkti. Prototüübil on hetkel andmebaasis vähe kirjeid ning selle eesmärk on näidata rakenduse üldist ideed ning toimimist.
Töötav funktsionaalsus:
- Andmebaasist suudetakse valida n juhuslikku kindlat tüüpi teost (antud rakenduse korral valitakse 5 filmiteost);
- Rippmenüüst saab valida kõigis baasis olevate teoste nimede ning autorite seast;
- Rakendus suudab arvutada kasutaja saadud punktid ning maksimaalsed punktid antud küsimuste arvuga mängu eest;
- Rakendus suudab näidata kasutajale tema vastuseid ning korrektseid vastuseid
Puudused, mis vajavad parandamist siiamaani loodud rakenduse juures:
- Kasutajaliidese disain ja kasutatavus (parem disain tegemisel, praegu võimalikult kiiresti loodud kujundus)
- Rippmenüü asemel tuleb segu tekstväljast ja rippmenüüst, kus kasutaja saab hakata sisestama teksti ning talle pakutakse sobivaid vastuse variante
- Koodi loetavamaks tegemine ja arendusmustrite parem järgimine
- Iga mängu tulemused tuleks andmebaasi salvestada
- Peaks rohkem logisid lisama
Lisafunktsionaalsused, mis vajavad veel tegemist:
- Teoste lisamise/muutmise/kustutamise võimalus
- Avaleht
- Seadete leht
- Parimate tulemuste leht
- Võimalus mängida erineva küsimuste arvuga mänge
Rakenduse kood
Rakenduse kood on saadav siit.
Enne rakenduse käivitamist tuleks luua ka andmebaas, tabelid ning sisestada näidisandmed.
Andmebaasi loomine ja ühendamine:
- Visual studios View - Server explorer
- Data connectionsi peal parem klikk - Add connection
- Data Source Microsoft SQL Server (SqlClient)
- Server Name:(localdb)\v11.0
- Select or enter a database name: vertigo
- OK
Tabelite ja näidisandmete lisamine andmebaasi:
- Solution exploreris avada Database - SQLScripts - CreateTables.sql
- Kui teete esimest korda tabeleid, siis kommenteerige DROP TABLE laused välja, muidu saate error
- Valige koodi kohal olevast rippmenüüst õige andmebaas (ilmselt alguses on master, valige vertigo)
- Vajutada Execute nuppu (väike roheline play nupu moodi asi)
- Server name peaks olema (localdb)\v11.0. Vajutada Connect.
- Näidisandmete sisestamiseks sama asi läbi teha InsertSampleData.sql-iga.