E¨otv¨os Lor´and Tudom´anyegyetem Informatikai Kar
Silverlight Game Framework Nagyprogram dokument´aci´o
T´emavezet˝o:
Beadta:
Dr. L˝orincz Andr´as
Seb˝ok Judit SEJIAAT.ELTE Programtervez˝o matematikus szak Kezd´es ´eve: 2002
Budapest, 2012. janu´ar
Tartalomjegyz´ ek 1. Bevezet˝ o 1.1. A programr´ol r¨oviden . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2. A program telep´ıt´ese . . . . . . . . . . . . . . . . . . . . . . . . . . . 2. Felhaszn´ al´ oi dokument´ aci´ o 2.1. A program m˝ uk¨od´es´er˝ol . . 2.2. J´at´ekosoknak . . . . . . . . 2.2.1. J´at´ekok megjelen´ese 2.3. Adminisztr´atoroknak . . . . 2.3.1. Regisztr´aci´o . . . . . 2.3.2. K´ep felt¨olt´ese . . . . 2.3.3. Hangf´ajl felt¨olt´ese . . 2.3.4. J´at´ekok . . . . . . . 2.3.5. Szerkeszt´es . . . . . 2.3.6. Valid´al´as . . . . . . . 2.3.7. J´at´eksorrend . . . . . 2.3.8. J´at´ekok hangjai . . . 2.3.9. Kil´ep´es . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
3. Fejleszt´ esi dokument´ aci´ o 3.1. Feladatle´ır´as . . . . . . . . . . . . . . . 3.2. A megold´as sor´an felhaszn´alt technik´ak 3.3. A rendszer szerkezete . . . . . . . . . . 3.3.1. SQL adatb´azis . . . . . . . . . Games adatt´abla . . . . . . . . EggGame adatt´abla . . . . . . . OrderGame adatt´abla . . . . . PlacerGame adatt´abla . . . . . GroupGame adatt´abla . . . . . Media adatt´abla . . . . . . . . MediaMp3 adatt´abla . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . .
3 3 4
. . . . . . . . . . . . .
5 5 5 6 8 10 11 11 12 12 16 16 17 17
. . . . . . . . . . .
19 19 20 21 21 21 21 23 23 25 28 29
´ TARTALOMJEGYZEK
Users adatt´abla . . . . . . . . LogsStats adatt´abla . . . . . . 3.3.2. Silverlight alkalmaz´as . . . . . Az sl projekt . . . . . . . . . A login projekt . . . . . . . . A mainPage projekt . . . . . A mainModel projekt . . . . . A userManagement projekt . A gameFrameProject projekt A eggModelProject projekt . . A orderModelProject projekt . A placerModelProject projekt A groupModelProject projekt 3.3.3. ASP.NET oldal . . . . . . . . 3.4. A rendszer telep´ıt´ese . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
29 29 30 30 31 33 38 39 42 47 47 47 47 47 47
¨ 4. Osszegz´ es 51 4.1. Tesztel´es . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 4.2. Ismert bugok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
2
1. fejezet Bevezet˝ o 1.1. A programr´ ol r¨ oviden A c´el egy olyan alkalmaz´as l´etrehoz´asa aminek seg´ıts´eg´evel iskol´as gyerekek feladatmegold´o k´epess´egeit lehet elemezni. A rendszer egyr´eszt k´epes a k¨ ul¨onb¨oz˝o j´at´ekokat megjelen´ıteni, az adott v´alaszokat ´ert´ekelni, ´es a j´at´ek k¨ozben gy˝ ujt¨ott adatokat egy adatb´azisban elt´arolni. M´asr´eszt az oktat´oknak megadja a lehet˝os´eget az egyes t´ıpusokhoz tartoz´o u ´j j´at´ekok l´etrehoz´as´ara, az ehhez sz¨ uks´eges m´ediaelemek felt¨olt´es´ere, illetve u ´j j´at´ekosok regisztr´aci´oj´ara. A rendszerben a k¨ovetkez˝o j´at´ekt´ıpusok tal´alhat´oak meg: kakukktoj´ as j´ at´ ek: A j´at´ek c´elja t¨obb megjelen˝o k´ep k¨oz¨ ul kiv´alasztani a feladat helyes megold´as´at. L´asd: 2.3 ´abra. sorrend j´ at´ ek: A j´at´ek c´elja hogy a j´at´ekos a megjelen˝o k´epeket a helyes sorrenbe rendezze. L´asd: 2.4 ´abra. elhelyez˝ os j´ at´ ek: A j´at´ek hasonl´o a kakukktoj´as j´at´ekhoz, a k¨ ul¨onbs´eg az hogy itt a feladat le´ır´as´ahoz egy k´ep is tartozik, az ezen a k´epen l´athat´o alakzatokhoz tartoz´o k´epet kell kiv´alasztania a j´at´ekosnak. L´asd: 2.5 ´abra. csoportos´ıt´ os j´ at´ ek: A j´at´ek c´elja a megjelen˝o k´epek csoportos´ıt´asa t¨obb kateg´ori´aba a k´epen l´athat´o t´argyak valamely tulajdons´aga alapj´an. A konkr´et j´at´ekokn´al a kateg´ori´ak eld¨ont´ese lehet a j´at´ekos feladata, de lehet˝os´eg van el˝ore defini´alt kateg´ori´ak megad´as´ara is. L´asd: 2.6 ´abra. A program haszn´alat´ahoz bel´ep´esi azonos´ıt´ora van sz¨ uks´eg. Az adminisztr´atori jogokkal rendelkez˝o felhaszn´al´ok regisztr´alhatnak u ´j felhaszn´al´okat. Az alkalmaz´as ind´ıt´as´ahoz mind¨ossze egy b¨ong´esz˝o fog kelleni. Az alkalmaz´as els˝o veriz´oj´anak kipr´ob´al´asa sor´an felmer¨ ultek m˝ uk¨od´esi probl´em´ak illetve funkcion´alis hi´anyoss´agok (pl. szerkeszt˝ok neh´ez kezelhet˝os´ege, vizu´alis
´ 1.2. A PROGRAM TELEP´ITESE
elemek megjelen´ese nem igazodik a k¨ ul¨onb¨oz˝o k´eperny˝ofelbont´asokhoz). A jelen dokumentum ´es az elk´esz¨ ult alkalmaz´as kiindul´asi pontja a kor´abbi alkalmaz´as volt. Az eredeti strukt´ ur´ab´ol a projektek tagol´asa ´es az adatb´azis t´abl´ainak egyes r´eszei megmaradtak, de az oszt´alyszerkezet, a megjelen´es h´atter´eben megh´ uz´od´o k´od ´es az adatb´azis el´er´es´ere haszn´alt interf´eszek le´ır´asa jelent˝osen megv´altozott. A felhaszn´al´oi fel¨ ulet ezzel szemben csak indokolt esetben v´altozott, ezzel is seg´ıtve a felhaszn´al´ok a´t´all´as´at az u ´j verzi´ora.
1.2. A program telep´ıt´ ese A program egy kliens-szerver alkalmaz´as. A szerver oldali telep´ıt´esre vonatkoz´o inform´aci´okat a Fejleszt˝oi dokument´aci´o 3.4 bekezd´ese tartalmazza, mivel a helyes m˝ uk¨od´es be´all´ıt´asa t¨obbfajta er˝oforr´as o¨sszehangol´as´at ig´enyli, amely a k´od egyes r´eszeit is ´erinti. A program kliens oldali haszn´alat´ahoz mind¨ossze internet kapcsolatra ´es egy b¨ong´esz˝ore van sz¨ uks´eg¨ unk amelyhez telep´ıtve van a Silverlight plugin.
4
2. fejezet Felhaszn´ al´ oi dokument´ aci´ o 2.1. A program m˝ uk¨ od´ es´ er˝ ol Mint az az el˝oz˝o fejezetben eml´ıt´esre ker¨ ult, a felhaszn´al´okat k´et t´ıpusba soroljuk: j´at´ekos ´es adminisztr´ator. A j´at´ekosok kiz´ar´olag a feladatokat l´atj´ak, azokat is szekvenci´alisan egym´as ut´an, visszal´epni nem tudnak, el˝ore l´epni csak helyes v´alasz van lehet˝os´eg¨ uk. Ezzel szemben az adminisztr´atorok bel´ep´eskor a f˝omen¨ ut l´atj´ak, ezt felhaszn´alva lehet˝os´eg¨ uk van a szerkeszt˝oket ´es a j´at´ekokat el´erni. Az alkalmaz´as fel´ep´ıt´es´enek ´es m˝ uk¨od´es´enek le´ır´as´at k´et k¨ ul¨on alfejezetben t´argyaljuk.
2.2. A program haszn´ alat´ ar´ ol j´ at´ ekosoknak Az alkalmaz´as elind´ıt´as´ahoz sz¨ uks´eg¨ unk lesz a rendszer szerver oldalon telep´ıtett r´esz´enek az el´er´esi c´ım´ere. Ezt egy b¨ong´esz˝obe be´ırva a bejelentkez˝o k´eperny˝o jelenik meg (l´asd: 2.1 a´bra). Tov´abbl´ep´eshez meg kell adnunk a felhaszn´al´onevet ´es a jelsz´ot. Ezeket az adminisztr´ator jogokkal rendelkez˝o felhaszn´al´ok regisztr´alhatj´ak. Helytelen felhaszn´al´on´ev vagy jelsz´o eset´en egy hiba¨ uzenet jelenik meg, majd az oldal u ´jra bet¨olt. Sikeres bel´ep´es ut´an a j´at´ekot elind´ıt´o nyom´ogomb jelenik meg (l´asd: 2.2 ´abra), e mellett egy u ¨dv¨ozl˝o u ¨zenetet tartalmaz´o hangf´ajl is lej´atsz´asra ker¨ ul. A j´at´ek elind´ıt´asa ut´an sorban jelennek meg a feladatok, a j´at´ekos addig nem tud tov´abbl´epni am´ıg helyes v´alaszt nem adott meg. Minden alkalommal limit´alt sz´am´ u feladatot kap, ez a program jelenlegi verzi´oj´aban h´ usz darab j´at´ek. A j´at´ek v´eg´en lej´atsz´odik egy gratul´aci´ot tartalmaz´o hangf´ajl ´es u ¨res lap jelzi hogy ki lehet l´epni a b¨ong´esz˝ob˝ol.
´ EKOSOKNAK ´ 2.2. JAT
2.1. ´abra. Bejelentkez˝o k´eperny˝o
2.2. ´abra. J´at´ekot ind´ıt´o gomb
2.3. ´abra. P´elda kakukktoj´as j´at´ekra
2.2.1. A k¨ ul¨ onb¨ oz˝ o j´ at´ ekok megjelen´ ese A megjelen˝o feladatok minden t´ıpus eset´en tartalmaznak egy fejl´ecet, amely tartalmazza a feladat sorsz´am´at, a feladat sz¨oveg´et, illetve k´et nyom´ogombot. A j´at´ekosok sz´am´ara el´erhet˝o j´at´ekok sorba vannak rendezve az adatb´azisban, a sorsz´am az ebben a list´aban elfoglalt index¨ uket jelen´ıti meg. A k´et nyom´ogomb verb´alis seg´ıts´eget ny´ ujt a feladatr´ol, az els˝o gomb (hangsz´or´o) a feladat sz¨oveg´et olvassa fel, m´ıg a m´asodik (bagoly) a feladat t´ıpus´ara vonatkoz´o seg´ıts´eget ny´ ujt. A k¨ ul¨onb¨oz˝o t´ıpus´ u j´at´ekok m˝ uk¨od´ese: kakukktoj´ as j´ at´ ek: A j´at´ek c´elja t¨obb megjelen˝o k´ep k¨oz¨ ul kiv´alasztani a feladat helyes megold´as´at. A j´at´ek r¨ogt¨on v´eget ´er amint a j´at´ekos r´akattint egy k´epre. P´elda kakukktoj´as j´at´ekra: 2.3 a´bra. sorrend j´ at´ ek: A j´at´ek c´elja hogy a j´at´ekos a megjelen˝o k´epeket a helyes sorrenbe rendezze. A k´epeket mozgatni nyom´ogombokkal lehet. El˝osz¨or ki kell jel¨olni a mozgatni k´ıv´ant k´epet azzal hogy r´akattintunk, majd a k´epek alatt elhelyezett nyilak seg´ıts´eg´evel a megfelel˝o ir´anyba mozgathatjuk a kiv´alasztott elemet. A kijel¨ol´est meg lehet sz¨ untetni a kijel¨olt k´epre val´o ism´etelt kattint´assal. A feladat megold´asa ut´an az ´ert´ekel´est a z¨old pip´at ´abr´azol´o gombbal lehet 6
´ EKOSOKNAK ´ 2.2. JAT
2.4. ´abra. P´elda sorrend j´at´ekra
2.5. ´abra. P´elda elhelyez˝os j´at´ekra megkezdeni. L´asd: 2.4 a´bra. elhelyez˝ os j´ at´ ek: A j´at´ek hasonl´o a kakukktoj´as j´at´ekhoz, a k¨ ul¨onbs´eg az hogy itt a feladat le´ır´as´ahoz egy k´ep is tartozik, az ezen a k´epen l´athat´o alakzatokhoz tartoz´o k´epet kell kiv´alasztania a j´at´ekosnak. A j´at´ek r¨ogt¨on v´eget ´er amint a j´at´ekos r´akattint egy k´epre. L´asd: 2.5 a´bra. csoportos´ıt´ os j´ at´ ek: A j´at´ek c´elja a megjelen˝o k´epek csoportos´ıt´asa t¨obb kateg´ori´aba a k´epen l´athat´o t´argyak valamely tulajdons´aga alapj´an. A feladatok k´epei a fejl´ec alatt jelennek meg egy vagy k´et sorban att´ol f¨ ugg˝oen h´any darab van bel˝ole. A k´epek alatt l´athat´oak a k¨ ul¨onb¨oz˝o csoportok helyei. Minden csoporthoz tartozik k´et gomb aminek seg´ıts´eg´evel a kijel¨olt 7
´ 2.3. ADMINISZTRATOROKNAK
2.6. ´abra. P´elda halmazos j´at´ekra k´epek betehet˝ok vagy kivehet˝ok a csoportb´ol. A feladat megold´asa ut´an az ´ert´ekel´est a z¨old pip´at a´br´azol´o gombbal lehet megkezdeni. Amennyiben a j´at´ekos hagyott k´epeket a kiindul´asi helyen, azokat a megold´as ´ert´ekel´es´en´el egy csoportba tartoz´onak tekinti a program. A feladat le´ır´asa mellett egy k´ep is tartozhat a j´at´ekhoz (l´asd: 2.7 ´abra). Az egyes csoportokhoz meg lehet adni kateg´oria-k´epeket is amelyek megszor´ıt´ast jelentenek arra n´ezve mely t´argyaknak hol a helye (l´asd: 2.8 ´abra). L´asd: 2.6 a´bra. A j´at´ekok ki´ert´ekel´es´et elv´egezve a program mind vizu´alisan mind verb´alisan visszajelez az eredm´enyr˝ol. Helyes v´alasz eset´en (l´asd: 2.9 a´bra) a j´at´ekos a megjelen˝o gomb lenyom´as´aval l´ephet a k¨ovetkez˝o feladatra. Hib´as v´alasz eset´en (l´asd: 2.10 a´bra) ugyanez a feladat jelenik meg u ´jra.
2.3. A program haszn´ alat´ ar´ ol adminisztr´ atoroknak Sikeres bejelentkez´est (l´asd: 2.1 a´bra) k¨ovet˝oen az adminisztr´atoroknak a f˝omen¨ u jelenik meg (l´asd: 2.11 a´bra), melyen kereszt¨ ul el´erik a karbantart´o ´es szerkeszt˝o fel¨ uleteit az alkalmaz´asnak. A tov´abbiakban ezek a fel¨ uletek ´es haszn´alatuk ker¨ ul t´argyal´asra.
8
´ 2.3. ADMINISZTRATOROKNAK
2.7. ´abra. P´elda halmazos j´at´ekra seg´ed-k´eppel
2.8. ´abra. P´elda halmazos j´at´ekra kateg´oria-k´epekkel
2.9. ´abra. Helyes v´alasz eset´en l´athat´o k´ep 2.10. ´abra. Hib´as v´alasz eset´en l´athat´o k´ep 9
´ 2.3. ADMINISZTRATOROKNAK
2.11. ´abra. A f˝omen¨u
´ j´ 2.3.1. Regisztr´ aci´ o - Uj at´ ekos felv´ etele A Regisztr´aci´o gomb lenyom´as´anak hat´as´ara megjelenik az az u ˝rlap amelyet kit¨oltve u ´j felhaszn´al´o adatait menthetj¨ uk el az adatb´azisban. (l´asd: 2.12 ´abra) A mez˝ok tartalma kit¨olt´es k¨ozben ellen˝orz´esre ker¨ ul, hiba eset´en oldalt a K¨ovetelm´enyek c´ımsz´o alatt megjelenik a probl´ema oka ´es a mez˝o sz´ıne pirosra v´alt am´ıg a hiba jav´ıt´asra nem ker¨ ul. A k¨ovetkez˝o k¨ovetelm´enyeknek kell megfelelni: • A n´evnek ´es a felhaszn´al´on´evnek legal´abb 5 karakter hossz´ u kell hogy legyen. • K¨otelez˝o megadni a nevet ´es a felhaszn´al´onevet. • Jelsz´ot k¨otelez˝o megadni, legal´abb 6 karakterb˝ol kell hogy ´alljon ´es a biztons´ag kedv´e´ert k´etszer kell beg´epelni. • V´alasztani kell egyet a felhaszn´al´o lehets´eges t´ıpusai k¨oz¨ ul. Jelenleg a program h´arom t´ıpust enged meg: adminisztr´ator, k´ıs´erletvezet˝o ´es j´at´ekos. Jelenleg az adminisztr´ator ´es a k´ıs´erletvezet˝o azonos hozz´af´er´esi jogokkal rendelkezik az alkalmaz´as funkci´oinak tekintet´eben, a k¨ ul¨onv´alaszt´ast az indokolta, hogy a k´es˝obbiekben a keretrendszer b˝ov¨ ulthet olyan funkci´okkal melyekhez csup´an az adminisztr´atorok kapnak hozz´af´er´est. Helyes kit¨olt´es ut´an a regisztr´al gombra kattintva menthetj¨ uk a j´at´ekos adatait az adatb´azisban. Amennyiben az adatb´azis-szerver nem el´erhet˝o, a program jelzi a ment´es sikertelens´eg´et. 10
´ 2.3. ADMINISZTRATOROKNAK
´ felhaszn´ 2.12. ´abra. Uj al´ o hozz´ aad´ as´ ara l´etrehozott u ˝rlap
2.3.2. K´ ep felt¨ olt´ ese - K´ epek felt¨ olt´ ese az adatb´ azisba A K´ep felt¨olt´ese gomb lenyom´as´anak hat´as´ara megjelenik az az u ˝rlap amelynek seg´ıts´eg´evel k´epeket t¨olthet¨ unk fel a szerverre (l´asd: 2.13 a´bra). A j´at´ekok szerkeszt´ese csup´an a m´ar felt¨olt¨ott k´epek haszn´alat´aval lehets´eges. A felt¨olt˝o k´eperny˝on a Tall´oz´as. . . gombra kattintva kiv´alaszthatjuk a felt¨olteni k´ıv´ant k´epeket. A k´epek sorban megjelennek egym´as alatt egy list´aban. Minden listaelem tartalmazza a k´epet, annak nev´et, illetve k´et beviteli mez˝ot. A fels˝o beviteli mez˝oben megadhatunk a k´ephez tartoz´o kulcsszavakat, ezek alapj´an lehet a szerkeszt˝oben keresni a k´epek k¨oz¨ott. Az als´o beviteli mez˝o megjegyz´esek hozz´af˝ uz´es´ere szolg´al. A listaelemek f¨ol´e a´llva oldalt megjelenik egy el˝on´ezet a k´epr˝ol. A Elem t¨orl´ese gombbal a kijel¨olt listaelemet t¨or¨olhetj¨ uk, m´ıg a Lista u ¨r´ıt´ese gombbal a teljes lista t¨or¨olhet˝o. A Felt¨olt´es gomb hat´as´ara a k´epek felt¨olt´ese megkezd˝odik, majd a befejez´es ut´an a program u ¨zenetben jelzi ha a felt¨olt´es siker¨ ult, illetve hiba eset´en a ki´ırja ha egy k´ep felt¨olt´ese sikertelen volt. A biztons´agi okokb´ol ´es a szerver oldali r´esz megszor´ıt´asai miatt a maxim´alis f´ajlm´eret 4MB, enn´el nagyobb f´ajlokat nem enged felt¨olteni az alkalmaz´as. A felt¨oltend˝o k´epeknek a Silverlight a´ltal ´ertelmezhet˝o t´ıpus´ uaknak kell lenni¨ uek, ez´ert csak JPEG ´es PNG k´epek felt¨olt´es´ere van lehet˝os´eg.
2.3.3. Hangf´ ajl
felt¨ olt´ ese
-
Hangf´ ajlok
felt¨ olt´ ese
az
adatb´ azisba A Hangf´ajl felt¨olt´ese gomb lenyom´as´anak hat´as´ara megjelenik az az u ˝rlap amelynek seg´ıts´eg´evel k´epeket t¨olthet¨ unk fel a szerverre. Az u ˝rlap fel´ep´ıt´ese majdnem teljesen megegyezik a k´epek felt¨olt´es´ere szolg´al´o u ˝rlappal (l´asd: 2.13 ´abra). A bet¨olt¨ott 11
´ 2.3. ADMINISZTRATOROKNAK
2.13. ´abra. K´epek felt¨olt´es´ere l´etrehozott u˝rlap zenef´ajlok nevei megjelennek egy list´aban, minden f´ajlhoz megadhatunk egy le´ır´ast arra vonatkoz´oan mi hallhat´o a f´ajl lej´atsz´asakor. A maxim´alis f´ajlm´eret a hangf´ajlok eset´en is 4MB.
2.3.4. J´ at´ ekok
-
Az
adatb´ azisban
szerepl˝ o
j´ at´ ekok
kipr´ ob´ al´ asa A J´at´ekok gomb lenyom´as´anak hat´as´ara megjelenik egy k´eppel ell´atott nyom´ogombokb´ol a´ll´o men¨ u, amelynek seg´ıts´eg´evel kiv´alaszthatjuk milyen t´ıpus´ u j´at´ekot szeretn´enk kipr´ob´alni (l´asd: 2.14´abra). A t´ıpus kiv´alaszt´asa ut´an list´at kapunk az adatb´azisban szerepl˝o o¨sszes feladatr´ol amely ebbe a t´ıpusba tartozik (l´asd: 2.15´abra). A J´at´ek ind´ıt´asa gombra kattintva bet¨olt a j´at´ek.
´ j´ 2.3.5. Szerkeszt´ es - Uj at´ ekok l´ etrehoz´ asa A Szerkeszt´es gomb lenyom´as´anak hat´as´ara megjelenik a j´at´ekt´ıpus v´alaszt´o men¨ u, amelynek seg´ıts´eg´evel kiv´alaszthatjuk milyen t´ıpus´ u j´at´ekot szeretn´enk szerkeszteni (l´asd: 2.14´abra). A j´at´ekok szerkeszt´ese t¨obb l´ep´esen kereszt¨ ul t¨ort´enik, a l´ep´esek k¨oz¨ott Ok ´es Vissza gombokkal tudunk v´altani. Minden j´at´ekt´ıpus eset´en ki kell v´alasztani bizonyos sz´am´ u k´epet, erre a 2.16 a´br´an l´athat´o men¨ u szolg´al, amely ha megjelenik a k´eperny˝on, akkor a szerkeszt˝o a fels˝o r´eszen ki´ırja milyen korl´atok vonatkoznak a k´epek sz´am´ara. Ez j´at´ekonk´ent elt´er˝o, a k´es˝obbiekben lesz r´ola sz´o melyik t´ıpus´ u j´at´eknak mik a megszor´ıt´asai. A men¨ u fels˝o r´esz´en tal´alhat´o Sz˝ ur´es tagekre mez˝o, ezt haszn´alhatjuk k´epek keres´es´ere a c´ımk´eik alapj´an. A szerkeszt˝ok egy m´asik el˝ofordul´o l´ep´es´eben a kiv´alaszott k´epek megjelen´esi 12
´ 2.3. ADMINISZTRATOROKNAK
2.14. ´abra. J´at´ek t´ıpus´anak kiv´alaszt´as´ara szolg´al´o men¨u
2.15. ´abra. P´elda a j´at´eklista megjelen´es´ere
13
´ 2.3. ADMINISZTRATOROKNAK
sorrendj´enek m´odos´ıt´as´ara van lehet˝os´eg (l´asd: 2.17 a´bra). Itt a k´epeket kattint´assal kiv´alaszthatjuk ´es az elhelyezett jobbra, balra, fel ´es le nyilakkal a´trendezhetj¨ uk o˝ket. Miut´an a j´at´ekoknak megfelel˝o sz´am´ u k´epet kiv´alasztottuk ´es a megjelen´esi sorrendet be´all´ıtottuk, meg kell adnunk a helyes megold´ast. Ehhez a feladat hasonl´oan jelenik meg mint j´at´ek k¨ozben, a helyes megold´as kiv´alaszt´asa pedig a j´at´ek lej´atsz´as´aval adhat´o meg. ´Igy kakukktoj´as ´es elhelyez˝os j´at´ek eset´en r´akattintunk arra a k´epre amit elfogadunk j´o megold´asnak (kakukktoj´asn´al t¨obb ilyen is lehet). Sorrend j´at´ek eset´en a helyes sorrendbe a´ll´ıtjuk a k´epeket, a halmazos j´at´ek eset´en pedig bepakoljuk a k´epeket a megfelel˝o halmazokba. A szerkeszt´es utols´o l´ep´es´eben egy leg¨ord¨ ul˝o men¨ ub˝ol ki kell v´alasztanunk a j´at´ek neh´ezs´egi szintj´et ´es a Feladat sz¨ovege r´eszhez be kell ´ırni a feladatot ami a j´at´ekosn´al a feladat f¨ol¨ott fog megjelenni. A Ment´es gomb hat´as´ara a j´at´ek beker¨ ul az adatb´azisba, hiba eset´en a program visszajelz´est k¨ uld. A rendszerben jelenleg szerepl˝o feladatt´ıpusokra a k¨ovetkez˝o l´ep´esekb˝ol ´all az u ´j j´at´ekok k´esz´ıt´ese: kakukktoj´ as j´ at´ ek: Az els˝o l´ep´es a k´epek kiv´alaszt´asa, ezekb˝ol kell legal´abb 2 de legfeljebb 9. Egy k´epet t¨obbsz¨or is bev´alaszthatunk, ebben az esetben t¨obb p´eld´any jelenik meg bel˝ole, melyek azonosan viselkednek (vagy mind helyes v´alasz vagy egyik sem). K¨ovetkez˝o l´ep´es a k´epek megjelen´es´enek be´all´ıt´asa. Lehet˝os´eg van arra hogy a k´epek egy sorban jelenjenek meg, vagy pedig egy legfeljebb 3 soros ´es legfeljebb 3 oszlopos t´abl´azatban. A harmadik l´ep´es a helyes megold´asok kiv´alaszt´asa. Legal´abb egy j´o megold´ast meg kell adni, ´es legal´abb egy rossz megold´asnak is maradnia kell. Utols´o l´ep´es a neh´ezs´egi szint ´es a feladat le´ır´as´anak megad´asa. sorrend j´ at´ ek: Az els˝o l´ep´es a k´epek kiv´alaszt´asa, ezekb˝ol kell legal´abb 3 de legfeljebb 10. Egy k´epet t¨obbsz¨or is bev´alaszthatunk, ebben az esetben t¨obb p´eld´any jelenik meg bel˝ole. K¨ovetkez˝o l´ep´es a k´epek megjelen´esi sorrendj´enek be´all´ıt´asa. A harmadik l´ep´es a helyes megold´asi sorrend megad´asa. Utols´o l´ep´es a neh´ezs´egi szint ´es a feladat le´ır´as´anak megad´asa. elhelyez˝ os j´ at´ ek: Az els˝o l´ep´es a k´epek kiv´alaszt´asa, ezekb˝ol kell legal´abb 2 de legfeljebb 8. Egy k´epet csak egyszer v´alaszthatunk, nem lehetnek k¨ozt¨ uk azonosak. K¨ovetkez˝o l´ep´es a feladathoz tartoz´o seg´ed-k´ep kiv´alaszt´asa, ezut´an j¨on a k´epek megjelen´es´enek be´all´ıt´asa. A negyedik l´ep´es a helyes megold´as kiv´alaszt´asa, enn´el a j´at´ekt´ıpusn´al ebb˝ol csak egy lehet. Utols´o l´ep´es a neh´ezs´egi szint ´es a feladat le´ır´as´anak megad´asa. csoportos´ıt´ os j´ at´ ek: Az els˝o l´ep´es a k´epek kiv´alaszt´asa, ezekb˝ol kell legal´abb 3 de legfeljebb 20. Egy k´epet csak egyszer v´alaszthatunk, nem lehetnek k¨ozt¨ uk 14
´ 2.3. ADMINISZTRATOROKNAK
2.16. ´abra. A j´at´ekszerkeszt˝o r´esz k´ep-kiv´alaszt´o men¨uje azonosak. K¨ovetkez˝o l´ep´es a k´epek megjelen´esi sorrendj´enek be´all´ıt´asa. A harmadik l´ep´es a helyes megold´as megad´asa, ez olyan m´odon t¨ort´enik hogy a kirajzolt k´epeket halmazokba rendezz¨ uk, ahogy azt feladatmegold´as k¨ozben a j´at´ekosok is teszik. Legal´abb 2 legfeljebb 4 k¨ ul¨onb¨oz˝o halmaz lehet, a k´epek kiindzl´asi poz´ıci´oja is k¨ ul¨on halmaznak sz´am´ıt. Minden halmazba legfeljebb 5 elem ker¨ ulhet. Miut´an a megold´ast megadtuk a j´at´ek v´alaszt v´ar arra a k´erd´esre hogy akarunk-e kateg´oria k´epet megadni a halmazokhoz (l´asd: fest´ekesv¨odr¨ok a 2.8 a´br´an). Igenl˝o v´alasz eset´en megjelenik a k´epkiv´alaszt´o fel¨ ulet, itt pontosan annyi k´epet kell kiv´alasztanunk ah´any csoportot l´etre hoztunk az elemekb˝ol, minden k´ep k¨ ul¨onb¨oz˝o kell hogy legyen. Ezek ut´an megjelennek a halmazok, felett¨ uk a kiv´alasztott k´epek, melyeket a jobbra ´es balra nyilakkal cser´elgethet¨ unk am´ıg a megfelel˝o halmaz f¨ol´e nem ker¨ ulnek. A helyes sorrend kialak´ıt´asa ut´an a j´at´ek arra a k´erd´esre v´ar v´alaszt szeretn´enke megadni egy seg´ed-k´epet a feladathoz (l´asd: 2.7), igenl˝o v´alasz eset´en ism´et a k´epek kiv´alaszt´as´ara l´etrehozott fel¨ ulet jelenik meg. A k¨ovetkez˝o l´ep´esben a j´at´ek kirajzol´odik abban a form´aban ahogyan a j´at´ekos fogja l´atni. Ha nem vagyunk vele el´egedettek a Vissza gombbal vissza tudunk l´epni hogy m´odos´ıt´asokat hajtsunk v´egre. Amennyiben megfelel˝onek tal´altuk az elrendez´est, az utols´o l´ep´esben meg kell adnunk a neh´ezs´egi szintet ´es a feladat le´ır´as´at.
15
´ 2.3. ADMINISZTRATOROKNAK
2.17. a´bra. A j´at´ekszerkeszt˝o r´esze, a k´epek megjelen´esi sorrendj´enek m´odos´ıt´as´ara szolg´al
2.3.6. Valid´ al´ as - A l´ etrehozott j´ at´ ekok j´ ov´ ahagy´ asa A Valid´al´as gomb lenyom´as´anak hat´as´ara megjelenik egy lista azokr´ol a j´at´ekokr´ol amelyeket l´etrehoztunk a j´at´ekszerkeszt˝ovel, de m´eg nincsenek enged´elyezve. Ez a funkci´o az´ert ker¨ ult a programba hogy a l´etrehozott j´at´ekokat haszn´alatba ker¨ ul´es el˝ott m´as adminisztr´atorok is ellen˝orizhess´ek. A list´aban szerepl˝o feladatokat ki lehet pr´ob´alni, majd a J´at´ek valid´al´as gombra kattintva enged´elyezni lehet.
2.3.7. J´ at´ eksorrend - A feladatok megjelen´ esi sorrendj´ enek megv´ altoztat´ asa A Valid´al´as gomb lenyom´as´anak hat´as´ara megjelenik az az oldal ahol a j´at´ekosok sz´am´ara a feladatokat o¨sszev´alogathatjuk ´es a megfelel˝o sorrendet be´all´ıthatjuk (l´asd 2.18 ´abra). Az els˝o oszlopban a feladatok l´athat´oak, a m´asodik oszlopban a t¨obbi j´at´ek szerepel, a megfelel˝o listaelem kiv´alaszt´as´aval ´es a balra illetve jobbra nyilakat a´br´azol´o gombokkal tudjuk a j´at´ekokat a list´ak k¨oz¨ott mozgatni. Az els˝o oszlop elemeit kijel¨olve a fel illetve le nyilakkal tudjuk a j´at´ekok sorrendj´et megv´altoztatni. Az itt be´all´ıtott sorrendben fognak a feladatok megjelenni a j´at´ekosok sz´am´ara. Mindk´et lista j´at´ekainak kipr´ob´al´as´ara lehet˝os´eg van a list´ak alj´an tal´alhat´o J´at´ek ind´ıt´asa gombok seg´ıts´eg´evel.
16
´ 2.3. ADMINISZTRATOROKNAK
2.18. ´abra. A j´at´ekosok feladatainak ¨ossze´all´ıt´as´ara ´es sorbarendez´es´ere szolg´al´o men¨u
2.3.8. J´ at´ ekok hangjai - A j´ at´ ekok hangjainak m´ odos´ıt´ asa A Szerkeszt´es gomb lenyom´as´anak hat´as´ara megjelenik a j´at´ekt´ıpus v´alaszt´o men¨ u, amelynek seg´ıts´eg´evel kiv´alaszthatjuk milyen t´ıpus´ u j´at´ekot szeretn´enk szerkeszteni (l´asd: 2.14´abra). A t´ıpus kiv´alaszt´asa ut´an list´at kapunk az adatb´azisban szerepl˝o o¨sszes feladatr´ol amely ebbe a t´ıpusba tartozik. A lista tetsz˝oleges elem´et kiv´alasztva ´es a J´at´ek hangjainak m´odos´ıt´asa gombra kattintva bej¨on a j´at´ekhoz rendelt hangf´ajlok m´odos´ıt´as´ara haszn´alhat´o men¨ u (l´asd: 2.19 a´bra). A k´eperny˝on szerepl˝o list´ab´ol v´alaszthatunk hangf´ajlt, a k´eperny˝o fels˝o r´esz´en tal´alhat˝o Sz˝ ur´es seg´ıts´eg´evel kereshet¨ unk a hangf´ajlokhoz rendelt le´ır´asokban. A kiv´alasztott f´ajlt kijel¨ol´es ut´an a Hang a feladathoz ´es a Hang a seg´ıts´eghez gombokkal rendelhetj¨ uk hozz´a a j´at´ekhoz. A lista bal oldal´an szerepelnek a kiv´alasztott f´ajlok azonos´ıt´oi ´es z´ar´ojelben a neveik, az alattuk l´ev˝o lej´atsz´as-gomb seg´ıts´eg´evel meg is hallgathat´oak. A list´aban kijel¨olt hangf´ajl is meghallgathat´o a lista f¨ol¨ott tal´alhat´o lej´atsz´as-gombbal. Amennyiben el´egedettek vagyunk a kiv´alasztott hangokkal a Ment´es gombra kattintva az adatb´azisban elt´arolhatjuk a j´at´ek u ´j be´all´ıt´asait.
2.3.9. Kil´ ep´ es - Kil´ ep´ es a programb´ ol A kil´ep´es gomb hat´as´ara megjelenik egy ablak amelyben meger˝os´ıthetj¨ uk kil´ep´esi sz´and´ekunkat. A kil´ep´est k¨ovet˝oen az oldal u ´jra bet¨olt˝odik ´es megjelenik a bejelentkez˝o k´eperny˝o (l´asd: 2.1 ´abra). 17
´ 2.3. ADMINISZTRATOROKNAK
2.19. ´abra. A j´at´ekosok hangjainak m´odos´ıt´as´ara szolg´al´o men¨u
18
3. fejezet Fejleszt´ esi dokument´ aci´ o 3.1. Feladatle´ır´ as A feladat egy keretrendszer l´etrehoz´asa volt amely k¨ ul¨onb¨oz˝o t´ıpus´ u j´at´ekos feladatok megjelen´ıt´es´ere k´epes. A j´at´ekokat a megfelel˝o adatb´azisb´ol be tudja t¨olteni, meg tudja jelen´ıteni, a felhaszn´al´o v´alaszait ki tudja ´ert´ekelni, visszajelz´est tud k¨ uldeni az eredm´enyr˝ol, illetve azt az adatb´azisban el tudja menteni. A rendszernek tartalmaznia kell egy-egy szerkeszt˝ot minden egyes j´at´ekt´ıpushoz, az ehhez sz¨ uks´eges m´ediaelemek (k´epke, hangf´ajlok) felt¨olt´es´ere alkalmas u ˝rlapokkal egy¨ utt. Ezek mellett legyen lehet˝os´eg a j´at´ekokat sorba rendezni ´es ebben a sorrendben v´egigj´atszani, a sorrend legyen m´odos´ıthat´o. Egy adott j´at´ekb´ol a j´at´ekos addig nem l´ephet tov´abb am´ıg helyes v´alaszt nem adott. A keretrendszer mellett a program a k¨ovetkez˝o j´at´ek-t´ıpusokat is tartalmazza: kakukktoj´ as j´ at´ ek: A j´at´ek c´elja t¨obb megjelen˝o k´ep k¨oz¨ ul kiv´alasztani a feladat helyes megold´as´at, t¨obb megold´as is lehet j´o, j´at´ekonk´ent csup´an egy megold´as megjel¨ol´ese sz¨ uks´eges. sorrend j´ at´ ek: A j´at´ek c´elja hogy a j´at´ekos a megjelen˝o k´epeket a helyes sorrenbe rendezze. elhelyez˝ os j´ at´ ek: A j´at´ek funkci´oj´at tekintve megegyezik a kakukktoj´as j´at´ekkal, de itt csup´an egy helyes megold´as lehets´eges. csoportos´ıt´ os j´ at´ ek: A j´at´ek c´elja a megjelen˝o k´epek csoportos´ıt´asa a k´epen l´athat´o t´argyak valamely tulajdons´aga alapj´an, a k´eperny˝on megjelen˝o halmaz-helyek egym´assal felcser´elhet˝ok azaz a megold´as szempontj´ab´ol nem ´erdekes hanyadik halmazban vannak egy adott csoport elemei ha j´o vannak csoportos´ıtva. Ez al´ol kiv´etelt jelent az az eset amikor a halmazok meg vannak jel¨olve, ekkor ugyanis el˝ore adott melyik csoportnak melyik halmazhelyre kell ker¨ ulnie. A rendszer r´esz´et k´epezi egy SQL adatb´azis is amiben
´ SORAN ´ FELHASZNALT ´ ´ 3.2. A MEGOLDAS TECHNIKAK
a j´at´ekok ´es a felhaszn´al´ok adatai ker¨ ulnek t´arol´asra, tov´abb´a a j´at´ekosok feladatmegold´asainak statisztik´ai. Az alkalmaz´as felhaszn´al´oit h´arom t´ıpusba soroljuk: j´at´ekos, k´ıs´erletvezet˝o ´es adminisztr´ator. Jelenleg az ut´obbi kett˝o ugyanazokkal a jogokkal rendelkezik, de ez a program k´es˝obbi verzi´oiban v´altozhat. A j´at´ekosoknak minden bel´ep´es ut´an adott sz´am´ u feladatot kell megoldaniuk. A feladatok sorrendj´enek meghat´aroz´asa ´es a j´at´ekosok regisztr´aci´oja a programon kereszt¨ ul t¨ort´enik, ez az adminisztr´atorok ´es k´ıs´erletvezet˝ok tehetik meg. Az elk´esz¨ ult j´at´ekok nem ker¨ ulhetnek be a feladatok k¨oz´e am´ıg azokat nem valid´alta egy adminisztr´ator, erre is legyen lehet˝os´eg a rendszer keretein bel¨ ul.
3.2. A megold´ as sor´ an felhaszn´ alt technik´ ak Az alkalmaz´as egy Silverlight program egy ASP.NET oldalba a´gyazva, amelyek a VisualStudio 2010 fejleszt˝oeszk¨ozzel k´esz¨ ultek. A rendszer fel´ep´ıt´ese a k¨ovetkez˝o technik´ak felhaszn´al´as´aval t¨ort´ent: • Az alkalmaz´as t´ ulnyom´o r´esz´et a Silverlight C# nyelven implement´alt projektek teszik ki, ezen bel¨ ul a UserControl oszt´alyb´ol sz´armaztatott fel¨ uletek domin´alnak. A v´alaszt´ast a Silverlight azon saj´atoss´aga indokolta, hogy a projektekben a funkci´o ´es a megjelen´es egym´ast´ol sz´et van v´alasztva, ez´altal a kett˝o k¨oz¨ ul b´armelyik cser´elhet˝o a n´elk¨ ul hogy a m´asikat megv´altoztatn´ank. A k´es˝obbiek sor´an az l´etrehozott UserControl -ok r´eszletes le´ır´asa sor´an megadjuk azokat a vizu´alis elemeket amiket a k´od felt´etelez hogy jelen vannak. A vizualiz´aci´o megv´altoztat´asa eset´en csup´an annyira kell odafigyelni hogy ezek az elemek jelen legyenek. • A Silverlight alkalmaz´ast a szerveren egy ASP.NET oldal hosztolja. Ez a projekt tartalmazza azokat a WCF Service-eket amelyek az SQL adatb´azissal val´o kapcsolat´ert felel˝osek, illetve a f´ajlok felt¨olt´es´et v´egz˝o modult. A projekthez mell´ekelve van egy clientaccesspolicy.xml f´ajl is, ami az´ert sz¨ uks´eges hogy az IIS szerveren elhelyezett WCF Service-eket az alkalmaz´as el tudja ´erni. Mind az alkalmaz´as, mind a WCF Service-ek egy IIS szerverre ker¨ ulnek fel. • Az alkalmaz´ashoz tartoz´o adatb´azisok k´et t´ıpusba tartoznak. Egyik r´esz¨ uk SQL adatt´abl´akb´ol a´ll, melyek a Microsoft SQL Server 2005 Express Edition eszk¨ozzel k´esz¨ ultek. Az adatb´azis m´asik r´esz´et a m´edia f´ajlok teszik ki, melyeket egy IIS szerveren t´arolunk, el´er´es¨ uk a C# UriBuilder oszt´aly´anak seg´ıts´eg´evel t¨ort´enik.
20
3.3. A RENDSZER SZERKEZETE
3.1. ´abra. A Games adatt´abla szerkezet´et bemutat´o t´abl´azat
3.3. A rendszer szerkezete A rendszer fel´ep´ıt´ese sor´an a k¨ovetkez˝oket kellett elk´esz´ıteni: • SQL adatb´azis • Silverlight alkalmaz´as • ASP.NET oldal amely a Silverlight alkalmaz´ast hosztolja
3.3.1. SQL adatb´ azis Az SQL adatb´azis a Microsoft SQL Server 2005 Express Edition eszk¨ozzel k´esz¨ ult el. A k¨ovetkez˝o t´abl´ak szerepelnek az adatb´azisunkban: Games - SQL adatt´ abla Ebben az adatt´abl´aban t´aroljuk azoknak a j´at´ekoknak az adatait amelyeket a j´at´ekosok megkapnak feladatmegold´as k¨ozben. A t´abla strukt´ ur´aj´at a 3.1 ´abr´an l´athatjuk. Az ID az egyedi kulcs, a GameType a j´at´ek t´ıpus´at t´arolja (kakukktoj´as: 0, sorrend: 1, elhelyez˝os: 2, halmazos: 3), a GameID a j´at´ek azonos´ıt´oja a t´ıpus´ahoz tartoz´o adatt´abl´aban, a GameNumber pedig a j´at´ek indexe a feladatok megold´asi sorrendj´eben. EggGame - SQL adatt´ abla Ebben az adatt´abl´aban t´aroljuk a kakukktoj´as j´at´ekok adatait. A t´abla strukt´ ur´aj´at a 3.2 a´br´an l´athatjuk. Az ID az egyedi kulcs, a Difficulty a neh´ezs´egi szint amit a szerkeszt˝oben megadtunk, a Question mez˝onek a program egy kor´abbi verzi´oj´aban volt szerepe, az oszlop nem ker¨ ult t¨orl´esre, de az ´ert´ekeit nem haszn´aljuk. A Creator a j´at´ekok l´etrehoz´o felhaszn´al´o Users t´abla (l´asd: 3.3.1) beli egyedi azonos´ıt´oj´at 21
3.3. A RENDSZER SZERKEZETE
3.2. ´abra. Az EggGame adatt´abla szerkezet´et bemutat´o t´abl´azat
22
3.3. A RENDSZER SZERKEZETE
tartalmazza, a Description mez˝o pedig a feladat le´ır´as´at amelyet a j´at´ekosok l´atnak a feladat megold´asa sor´an. A Media1-9 elemek tartalmazz´ak a j´at´ekhoz felhaszn´alt k´epek Media t´abla (l´asd: 3.3.1) beli azonos´ıt´oit, m´eghozz´a a j´at´ek kezd´esekor megjelen´ıtend˝o sorrendben. A t´abl´azatban az is l´atszik hogy legal´abb k´et k´ep megad´asa k¨otelez˝o, az els˝o k´et elem nem lehet u ¨res. Az Answer1-8 a helyes v´alaszhoz tartoz´o k´epek azonos´ıt´oit tartalmazza. A Number mez˝onek szint´en nincs m´ar jelent˝os´ege a program jelenlegi verzi´oj´aban. Az IsOneRow mez˝o ´ert´eke alapj´an t¨ort´enik a feladat kirajzol´asa egy vagy t¨obb sorban. Igaz ´ert´ek eset´en a k´epek mind egy sorban helyezkednek el. A Valid mez˝o ´ert´eke igaz, ha a j´at´ek j´ov´ahagy´asa megt¨ort´ent, egy´ebk´ent hamis. A TextMps ´es HelpMp3 mez˝ok a j´at´ekhoz t´ars´ıtott hangf´ajlok MediaMp3 t´abla (l´asd: 3.3.1) beli azonos´ıt´oit tartalmazz´ak. OrderGame - SQL adatt´ abla Ebben az adatt´abl´aban t´aroljuk a sorrend j´at´ekok adatait. A t´abla strukt´ ur´aj´at a 3.3 a´br´an l´athatjuk. Az ID az egyedi kulcs, a Difficulty a neh´ezs´egi szint amit a szerkeszt˝oben megadtunk, a Question mez˝onek a program egy kor´abbi verzi´oj´aban volt szerepe, az oszlop nem ker¨ ult t¨orl´esre, de az ´ert´ekeit nem haszn´aljuk. A Creator a j´at´ekok l´etrehoz´o felhaszn´al´o Users t´abla (l´asd: 3.3.1) beli egyedi azonos´ıt´oj´at tartalmazza, a Description mez˝o pedig a feladat le´ır´as´at amelyet a j´at´ekosok l´atnak a feladat megold´asa sor´an. A Media1-10 elemek tartalmazz´ak a j´at´ekhoz felhaszn´alt k´epek Media t´abla (l´asd: 3.3.1) beli azonos´ıt´oit, m´eghozz´a a j´at´ek kezd´esekor megjelen´ıtend˝o sorrendben. Az Answer1-10 a helyes v´alaszhoz tartoz´o k´epek azonos´ıt´oit tartalmazza. A Random ´es Number mez˝oknek szint´en nincs m´ar jelent˝os´ege a program jelenlegi verzi´oj´aban. A Valid mez˝o ´ert´eke igaz, ha a j´at´ek j´ov´ahagy´asa megt¨ort´ent, egy´ebk´ent hamis. A TextMps ´es HelpMp3 mez˝ok a j´at´ekhoz t´ars´ıtott hangf´ajlok MediaMp3 t´abla (l´asd: 3.3.1) beli azonos´ıt´oit tartalmazz´ak. PlacerGame - SQL adatt´ abla Ebben az adatt´abl´aban t´aroljuk az elhelyez˝os j´at´ekok adatait. A t´abla strukt´ ur´aj´at a 3.4 a´br´an l´athatjuk. Az ID az egyedi kulcs, a Difficulty a neh´ezs´egi szint amit a szerkeszt˝oben megadtunk, a Question mez˝onek a program egy kor´abbi verzi´oj´aban volt szerepe, az oszlop nem ker¨ ult t¨orl´esre, de az ´ert´ekeit nem haszn´aljuk. A Creator a j´at´ekok l´etrehoz´o felhaszn´al´o Users t´abla (l´asd: 3.3.1) beli egyedi azonos´ıt´oj´at tartalmazza, a Description mez˝o pedig a feladat le´ır´as´at amelyet a j´at´ekosok l´atnak a feladat megold´asa sor´an. A Media1-8 elemek tartalmazz´ak a j´at´ekhoz felhaszn´alt k´epek Media t´abla (l´asd: 3.3.1) beli azonos´ıt´oit, m´eghozz´a a j´at´ek kezd´esekor megjelen´ıtend˝o sorrendben. Az Item mez˝oben szerepel a seg´ed k´ep azonos´ıt´oja. Az Answer a helyes v´alaszhoz tartoz´o k´ep azonos´ıt´oj´at tartalmazza. A Random
23
3.3. A RENDSZER SZERKEZETE
3.3. ´abra. Az OrderGame adatt´abla szerkezet´et bemutat´o t´abl´azat
24
3.3. A RENDSZER SZERKEZETE
3.4. ´abra. Az PlacerGame adatt´abla szerkezet´et bemutat´o t´abl´azat ´es Number mez˝oknek szint´en nincs m´ar jelent˝os´ege a program jelenlegi verzi´oj´aban. A Valid mez˝o ´ert´eke igaz, ha a j´at´ek j´ov´ahagy´asa megt¨ort´ent, egy´ebk´ent hamis. A TextMps ´es HelpMp3 mez˝ok a j´at´ekhoz t´ars´ıtott hangf´ajlok MediaMp3 t´abla (l´asd: 3.3.1) beli azonos´ıt´oit tartalmazz´ak. GroupGame - SQL adatt´ abla Ebben az adatt´abl´aban t´aroljuk a halmazos j´at´ekok adatait. A t´abla strukt´ ur´aj´at a 3.5 ´es 3.6 a´br´akon l´athatjuk. Az ID az egyedi kulcs, a Difficulty a neh´ezs´egi szint amit a szerkeszt˝oben megadtunk, a Question mez˝onek a program egy kor´abbi verzi´oj´aban volt szerepe, az oszlop nem ker¨ ult t¨orl´esre, de az ´ert´ekeit nem haszn´aljuk. A Creator a j´at´ekok l´etrehoz´o felhaszn´al´o Users t´abla (l´asd: 3.3.1) beli egyedi azonos´ıt´oj´at tartalmazza, a Description mez˝o pedig a feladat le´ır´as´at amelyet a j´at´ekosok l´atnak a feladat megold´asa sor´an. A Media1-20 elemek tartalmazz´ak a j´at´ekhoz felhaszn´alt k´epek Media t´abla (l´asd: 3.3.1) beli azonos´ıt´oit, m´eghozz´a a j´at´ek kezd´esekor megjelen´ıtend˝o sorrendben. Az Group kezdet˝ u mez˝okben szerepelnek a megold´as egyes halmazaihoz tartoz´o k´epek azonos´ıt´oi. Az Category1-4 a kateg´oria-k´epek azonos´ıt´oi. Az Item mez˝oben szerepel a seg´ed k´ep azonos´ıt´oja. A Random ´es Number mez˝oknek szint´en nincs m´ar jelent˝os´ege a program jelenlegi verzi´oj´aban. A Valid 25
3.3. A RENDSZER SZERKEZETE
3.5. ´abra. Az GroupGame adatt´abla szerkezet´et bemutat´o t´abl´azat 1. r´esze
26
3.3. A RENDSZER SZERKEZETE
3.6. ´abra. Az GroupGame adatt´abla szerkezet´et bemutat´o t´abl´azat 2. r´esze
27
3.3. A RENDSZER SZERKEZETE
3.7. ´abra. Az Media adatt´abla szerkezet´et bemutat´o t´abl´azat
3.8. ´abra. Az MediaMp3 adatt´abla szerkezet´et bemutat´o t´abl´azat mez˝o ´ert´eke igaz, ha a j´at´ek j´ov´ahagy´asa megt¨ort´ent, egy´ebk´ent hamis. A TextMps ´es HelpMp3 mez˝ok a j´at´ekhoz t´ars´ıtott hangf´ajlok MediaMp3 (l´asd: 3.3.1) t´abla beli azonos´ıt´oit tartalmazz´ak. Media - SQL adatt´ abla Ebben az adatt´abl´aban t´aroljuk a j´at´ekokhoz felt¨olt¨ott k´epek neveit ´es adatait. A t´abla strukt´ ur´aj´at a 3.7 a´br´an l´athatjuk. Az ID az egyedi kulcs, a Type a m´edia elem t´ıpusa, ennek a program kor´abbi verzi´oj´aban volt jelent˝os´ege. A Dir a k¨onyvt´ar neve amelyben a f´ajl tal´alhat´o a m´edia szerveren (pl: imgs), a FileName pedig a f´ajl neve. A Tag tartalmazza a k´ephez rendelt c´ımk´eket, amelyek alapj´an keresni tudunk k¨ozt¨ uk a szerkeszt˝oben. A Comments mez˝o tartalmazza a k´ephez ´ırt megjegyz´eseket. Az Uploader mez˝oben a felt¨olt˝o felhaszn´al´o azonos´ıt´oja tal´alhat´o. A Text mez˝onek nincs m´ar jelent˝os´ege a program jelenlegi verzi´oj´aban.
28
3.3. A RENDSZER SZERKEZETE
3.9. ´abra. Az Users adatt´abla szerkezet´et bemutat´o t´abl´azat MediaMp3 - SQL adatt´ abla Ebben az adatt´abl´aban t´aroljuk a j´at´ekokhoz felt¨olt¨ott hangf´ajlok neveit ´es adatait. A t´abla strukt´ ur´aj´at a 3.8 a´br´an l´athatjuk. Az ID az egyedi kulcs. A Dir a k¨onyvt´ar neve amelyben a f´ajl tal´alhat´o a m´edia szerveren (pl: mp3s), a FileName pedig a f´ajl neve. Az Uploader mez˝oben a felt¨olt˝o felhaszn´al´o azonos´ıt´oja tal´alhat´o. A Text mez˝o tartalmazza a k´ephez ´ırt megjegyz´eseket. Users - SQL adatt´ abla Ebben az adatt´abl´aban t´aroljuk a j´at´ekosok ´es adatait. A t´abla strukt´ ur´aj´at a 3.9 a´br´an l´athatjuk. Az ID az egyedi kulcs. A Name mez˝obe ker¨ ul a j´at´ekos neve, a Nick jel¨oli az azonos´ıt´oj´at amit bel´ep´eskor haszn´alhat, a Password mez˝o pedig a jelsz´ot t´arolja. A Type a felhaszn´al´o t´ıpus´at jel¨oli (adminisztr´ator: 0, k´ıs´erletvezet˝o: 1, j´at´ekos: 2). A Age a j´at´ekos ´eletkora, a Disabilities mez˝oben pedig elmenthet˝o a j´at´ekosok b´armely olyan tulajdons´aga ami a feladatok megold´as´aban akad´alyozza o˝ket. A LastGame mez˝oben mentj¨ uk el az utolj´ara sikeresen megoldott feladat Games (l´asd: 3.1) t´abla beli index´et. LogsStats - SQL adatt´ abla Ebben az adatt´abl´aban t´aroljuk a j´atszott j´at´ekok statisztik´ait ´es eredm´enyeit. A t´abla strukt´ ur´aj´at a 3.10 ´abr´an l´athatjuk. Az ID az egyedi kulcsot, a GameType a j´at´ek t´ıpus´at t´arolja (kakukktoj´as: 0, sorrend: 1, elhelyez˝os: 2, halmazos: 3), a GameID a j´at´ek a UserID pedig a j´at´ekos azonos´ıt´oja. A Date az adatok ment´es´enek d´atuma, a Result t´arolja hogy sikeresen oldotta meg a feladatot a j´at´ekos vagy sem. A selectedAns a v´alasztott megold´as, a TotalElapsedTime a j´at´ek k¨ozben eltelt id˝o, a MouseMovement pedig a j´at´ek sor´an t¨ort´ent eg´ermozg´as t´arol´as´ara szolg´al.
29
3.3. A RENDSZER SZERKEZETE
3.10. ´abra. Az LogsStats adatt´abla szerkezet´et bemutat´o t´abl´azat
3.3.2. Silverlight alkalmaz´ as Az alkalmaz´as h´arom r´eszre tagol´odik: • Framework • J´at´ekok • M´edia elemek ´es felhaszn´al´ok hozz´aad´asa Mindh´arom r´esz t¨obb Silverlight projektb˝ol a´ll. A Silverlight projektek saj´atoss´aga hogy k¨ ul¨onv´alasztja a megjelen´est a funkcionalit´ast´ol, ´ıgy a k¨ ul¨onb¨oz˝o projektek ´es azokon bel¨ ul a UserControl -ok l´etrehoz´as´an´al nem csup´an a k¨ ul¨onb¨oz˝o funkci´ok elv´alaszt´asa j´atszott szerepet, hanem a vizu´alis elemek tagol´asa is. A k´es˝obbiekben a UserControl -ok r´eszletes le´ır´as´an´al felsorol´asra ker¨ ulnek azok a vizu´alis elemek t´ıpusaikkal egy¨ utt, amelyek megl´et´et a k´od felt´etelezi. Az alkalmaz´as projektjeit ´es a k¨oz¨ott¨ uk l´ev˝o f¨ ugg˝os´egeket a 3.11 a´bra mutatja. Az egyes projektek fel´ep´ıt´ese: sl - Silverlight projekt Ez a projekt a Silverlight alkalmaz´as indul´o projektje. Feladata az alkalmaz´as vizu´alis v´alt´asainak kezel´ese, az aktu´alis k´eperny˝o megjelen´ıt´ese, illetve sz¨ uks´eg eset´en a v´arakoz´asi k´eperny˝o megjelen´ıt´ese vagy elrejt´ese. A projekt a k¨ovetkez˝o UserControl -okat tartmazza: • App.xaml Funkci´ oja: Az alkalmaz´as inicializ´al´asa ´es elind´ıt´asa. • MainPage.xaml 30
3.3. A RENDSZER SZERKEZETE
3.11. ´abra. Az alkalmaz´as projektjei Funkci´ oja: Ez a UserControl tartalmazza az aktu´alis UserControl -t amely a k´eperny˝on meg kell hogy jelenjen. E mellett kezeli ´es sz¨ uks´eg eset´en megjelen´ıti a v´arakoz´askor l´athat´o anim´aci´ot. N´ evvel ell´ atott vizu´ alis elemei: – <Storyboard> waitingAnimStoryboard - a v´arakoz´asi anim´aci´o –
waitingAnimGrid - a v´arakoz´asi anim´aci´ot tartalmazza – waitingText - a v´arakoz´asi anim´aci´o k¨ozben l´athat´o felirat – mainContainer - az aktu´alis UserControl -t tartalmazza login - Silverlight projekt A bejelentkez´esi u ˝rlap megjelen´ıt´es´e´ert ´es a felhaszn´al´ok be´ırt adatainak valid´al´as´a´ert felel˝os projekt. A k¨ovetkez˝o UserControl -okat tartmazza: • loginUC.xaml Funkci´ oja: A bejelentkez´eshez sz¨ uks´ege u ˝rlap megjelen´ıt´ese, a be´ırt adatok valid´al´asa. N´ evvel ell´ atott vizu´ alis elemei: – elteLogo - k´ep, amely az u ˝rlapon jelenik meg – userNameTextBox - a felhaszn´al´o nev´enek bevitel´ere szolg´al
31
3.3. A RENDSZER SZERKEZETE
3.12. ´abra. A Framework projektjeinek oszt´alydiagramja 32
3.3. A RENDSZER SZERKEZETE
– <PasswordBox > pwdTextBox - a felhaszn´al´o jelszav´anak bevitel´ere szolg´al, az Enter billenty˝ u lenyom´as´anak hat´as´ara a be´ırt adatok valid´al´asi folyamata megkezd˝odik – <Button > loginButton - a valid´al´as ind´ıt´as´ara szolg´al Fontosabb adattagjai: – IuserModelServiceClient client - a felhaszn´al´ok tartalmaz´o adatb´azishoz biztos´ıt hozz´af´er´est
adatait
F¨ uggv´ enyei: – public loginUC() - konstruktor, amely bet¨olti a kirajzoland´o k´epet ´es inicializ´alja a client v´altoz´ot. A k´epet a m´edia-szerveren keresi, amelynek el´er´esi u ´tvolnala a mainModel oszt´alyban tal´alhat´o. – private void loginButton Click(object sender, RoutedEventArgs e) - a loginButton esem´enykezel˝o f¨ uggv´enye, elind´ıtja az u ˝rlapra ´ırt adatok valid´al´as´at miut´an letiltotta az u ˝rlap elemeinek tov´abbi m´odos´ıt´as´at – private void pwdTextBox KeyUp(object sender, KeyEventArgs e) - a pwdTextBox esem´enykezel˝o f¨ uggv´enye, az Enter billenty˝ u lenyom´as´anak hat´as´ara elind´ıtja az u ˝rlapra ´ırt adatok valid´al´as´at miut´an letiltotta az u ˝rlap elemeinek tov´abbi m´odos´ıt´as´at – private void checkLoginData() - az adatok valid´al´as´at v´egz˝o f¨ uggv´eny, amely aszinkron h´ıv´ast kezdem´enyez az adatb´azis fel´e. El˝osz¨or az IuserModelServiceClient checkPassword met´odus´anak v´alasz´ara v´ar, amennyiben a be´ırt adatok nem megfelel˝oek, jelzi a hib´at ´es az u ˝rlapot u ´jra bet¨olti. Helyes bejelentkez´esi adatok eset´en u ´jabb h´ıv´ast (getUser) ind´ıt az adatb´azis fel´e, melyben a bejelentkezett felhaszn´al´o adatait k´eri le, ezek a mainModel oszt´alyban ker¨ ulnek t´arol´asra. Amennyiben a bejelentkezett felhaszn´al´o rendelkezik a megfelel˝o adminisztr´atori jogokkal, a f˝omen¨ u t¨olt˝odik be. Adminisztr´atori jogokkal nem rendelkez˝o j´at´ekos eset´en az adatainak megfelel˝o, a sorrendben k¨ovetkez˝o j´at´ek t¨olt˝odik be. Ez ut´obbi esetben a teljes j´at´eklist´at lek´eri a program az adatb´azisb´ol (getGamesList) ´es elmenti a mainModel oszt´alyban, ennek felhaszn´al´as´aval v´alt j´at´ekot a program a j´at´ekos sz´am´ara. mainPage - Silverlight projekt A mainPage projekt tartalmazza a k¨ ul¨onb¨oz˝o f´ele felhaszn´al´ok sz´am´ara megjelen´ıtend˝o UserControl -okat. A j´at´ekosok sz´am´ara csup´an az aktu´alis j´at´ek 33
3.3. A RENDSZER SZERKEZETE
l´athat´o vagy pedig a megoldott feladat eredm´enye. Adminisztr´atorok sz´am´ara a f˝omen¨ u is l´athat´o, melyen kereszt¨ ul el´erik a k¨ ul¨onb¨oz˝o adatb´azis-m´odos´ıt´o k´eperny˝oket. Ebben a projektben kapott helyet tov´abb´a az a UserControl amelyen kereszt¨ ul a j´at´ekosok sz´am´ara megjelen˝o feladatok sorrendje m´odos´ıthat´o. A projekt a k¨ovetkez˝o UserControl -okat tartmazza: • playerPlainPage.xaml Funkci´ oja: Adminisztr´atori jogokkal nem rendelkez˝o j´at´ekos eset´en ez a UserControl ker¨ ul megjelen´ıt´esre a mainPage-en. Am´ıg a j´at´ekos ki nem l´ep, az aktu´alis feladat ´es az eredm´eny ki´ert´ekel´es´enek megjelen´ıt´es´e´ert is felel˝os. N´ evvel ell´ atott vizu´ alis elemei: – <MediaElement > welcomeSound - a j´at´ek indul´asakor hallhat´o k¨osz¨ont˝o sz¨oveget lej´atsz´o elem – <Button > playButton - nyom´ogomb mellyel a j´at´ekos elind´ıthatja a j´at´ekot – gameContainer - az aktu´alis j´at´ekot tartalmaz´o, annak hely´et kijel¨ol˝o elem Fontosabb adattagjai: – WebClient soundClient - a j´at´ek indul´asakor hallhat´o k¨osz¨ont˝o sz¨oveget tartalmaz´o hangf´ajl let¨olt´es´ehez sz¨ uks´eges kliens – IuserModelServiceClient client - a felhaszn´al´ok tartalmaz´o adatb´azishoz biztos´ıt hozz´af´er´est
adatait
F¨ uggv´ enyei: – public playerPlainPage() - inicializ´alja a client v´altoz´ot, a j´at´ekos k¨osz¨ont´es´ere szolg´al´o hangf´ajlt lej´atssza, ´es megjelen´ıti a j´at´ek ind´ıt´as´ara szolg´al´o nyom´ogombot – private void startGame() - u ´j j´at´ekot ind´ıt, a j´at´ek adatait a mainModel oszt´alyb´ol t¨olti be – private void playButton Click(object sender, RoutedEventArgs e) - a playButton esem´enykezel˝oje, lenyom´asa ut´an a j´at´ek elindul – private void playSound(string name) argumentumk´ent kapott hangf´ajlt melyet a t¨olt le
lej´atssza az m´edia-szerverr˝ol
– private void restart() - a j´at´ekos helyes v´alasza eset´en h´ıv´odik meg, elmenti az adatb´azisba az utolj´ara j´atszott j´at´ek index´et majd 34
3.3. A RENDSZER SZERKEZETE
elind´ıtja a k¨ovetkez˝o j´at´ekot amennyiben a j´at´ekos nem l´epte t´ ul a napi maxim´alis feladatok sz´am´at. Ez ut´obbi esetben lej´atsz´asra ker¨ ul a j´at´ek v´eg´en hallhat´o hangf´ajl, a j´at´ek v´eget ´er. – private void tryAgain() - az aktu´alis j´at´ekot u ´jra bet¨olti, a j´at´ekos hib´as v´alasza eset´en h´ıv´odik meg • menuPage.xaml Funkci´ oja: Az adminisztr´atorok ´altal haszn´alhat´o funkci´ok el´er´es´et lehet˝ov´e tev˝o men¨ urendszert tartalmazza, illetve a megnyitott men¨ ut megjelen´ıti. N´ evvel ell´ atott vizu´ alis elemei: – welcomeTextBlock - u ¨dv¨ozl˝o u ¨zenetet tartalmaz a bel´epett adminisztr´atornak – <Button > registrationButton - u ´j j´at´ekos regisztr´al´as´ara haszn´alt men¨ u megynit´asa – <Button > uploadImgButton men¨ u megynit´asa
-
k´epek
felt¨olt´es´ere
haszn´alt
– <Button > uploadSoungButton - hangf´ajlok felt¨olt´es´ere haszn´alt men¨ u megynit´asa – <Button > gamesButton - az adatb´azisban szerepl˝o j´at´ekok kipr´ob´al´as´ara haszn´alt men¨ u megynit´asa – <Button > editGamesButton - u ´j j´at´ek l´etrehoz´as´ara haszn´alt men¨ u megynit´asa – <Button > validateGamesButton valid´al´as´ara haszn´alt men¨ u megynit´asa
l´etrehozott
j´at´ekok
– <Button > editGamesListButton - a j´at´ekosok ´altal haszn´alt j´at´ekok sorrendj´enek megv´altoztat´as´ara haszn´alt men¨ u megynit´asa – <Button > editSoundsButton - a j´at´ekokhoz rendelt hangf´ajlok m´odos´ıt´as´ara haszn´alt men¨ u megynit´asa – <Button > exitButton - kil´ep´es a programb´ol – subPageContainer - a megnyitott men¨ ut tartalmaz´o ´es megjelen´ıt˝o elem F¨ uggv´ enyei: – public menuPage() - elemek inicializ´al´asa, u ¨dv¨ozl˝o u ¨zenet ki´ır´asa – A fent felsorolt nyom´ogombok minegyik´ehez tartozik egy esem´enykezel˝o, amely a gomb lenyom´as´anak hat´as´ara bet¨olti a megfelel˝o UserControl -t. 35
3.3. A RENDSZER SZERKEZETE
– private void newRegistration() - a regisztr´al´as gomb esem´enykezel˝oj´enek t¨orzse ker¨ ult ebbe a f¨ uggv´enybe azzal a c´ellal hogy sikeres regisztr´aci´o eset´en o¨nmag´at megh´ıvva u ´j regisztr´aci´ot lehessen kezdem´enyezni • gameTypeSelector.xaml Funkci´ oja: A f˝omen¨ uben a j´at´ekok kipr´ob´al´asa vagy szerkeszt´ese eset´en ki kell v´alasztani a j´at´ekt´ıpust amelyet j´atszani vagy szerkeszteni k´ıv´an a felhaszn´al´o. Erre a c´elra j¨ott l´etre ez a UserControl. N´ evvel ell´ atott vizu´ alis elemei: – <Button > eggGameButton - a kakukktoj´as j´at´ekhoz tartoz´o nyom´ogomb – <Button > orderGameButton nyom´ogomb
-
a
sorrend
j´at´ekhoz
tartoz´o
– <Button > placerGameButton - az elhelyez˝os j´at´ekhoz tartoz´o nyom´ogomb – <Button > groupGameButton - a csoportos´ıt´os j´at´ekhoz tartoz´o nyom´ogomb F¨ uggv´ enyei: – public gameTypeSelector() - inicializ´alja a gombokat, bet¨olti a hozz´ajuk tartoz´o k´epeket. Att´ol f¨ ugg˝oen milyen funkci´ot akar el´erni a felhaszn´al´o, ki´ırja a megfelel˝o feliratot. – A fent felsorolt nyom´ogombok mindegyik´ehez tartozik egy esem´enykezel˝o, amely a gomb lenyom´as´anak hat´as´ara bet¨olti a kiv´alasztott j´at´ekt´ıpushoz tartoz´o almen¨ ut vagy list´at. – private void Image ImageFailed(object sender, ExceptionRoutedEventArgs e) - Amennyiben a gombokhoz tartoz´o k´epeket nem siker¨ ul bet¨olteni, a gombok mindegyik´ere felirat ker¨ ul arra vonatkoz´oan melyik j´at´ekhoz tartozik a gomb. • gamesListEditorUC.xaml Funkci´ oja: A j´at´ekosok sz´am´ara megjelen˝o m´odos´ıt´as´ara szolg´al´o UserControl
feladatok
sorrendj´enek
N´ evvel ell´ atott vizu´ alis elemei: – gameContainer - lehet˝os´eg van a j´at´ekok kipr´ob´al´as´ara, melynek sor´an a k´eperny˝on megjelen˝o j´at´ek itt kap helyet
36
3.3. A RENDSZER SZERKEZETE
– <Button > moveUpButton - a kijel¨olt j´at´ek el˝or´ebb mozgat´asa a list´an – <Button > moveDownButton - a kijel¨olt j´at´ek h´atr´ebb mozgat´asa a list´an – actualGamesLBox - a feladatok list´aja amelyeket a j´at´ekosok megkapnak – otherGamesLBox - a feladatok k¨oz¨ott nem szerepl˝o, de az adatb´azisban elmentett j´at´ekok list´aja – <Button > moveLeftButton - a kijel¨olt j´at´ek ´athelyez´ese a feladatok k¨oz´e – <Button > moveRightButton - a kijel¨olt j´at´ek kiv´etele a feladatok k¨oz¨ ul – <Button > saveButton - a m´odos´ıtott lista ment´ese az adatb´azisba – <Button > loadButton - a feladatok list´aj´aban kiv´alasztott j´at´ek kipr´ob´al´asa – <Button > load2Button - a feladatok k¨ozt nem szerepl˝o j´at´ekok k¨oz¨ ul a kiv´alasztott j´at´ek kipr´ob´al´asa – <Button > backButton - j´at´ek kipr´ob´al´asa k¨ozben l´athat´o gomb, lenyom´as´ara a list´akhoz lehet visszal´epni Fontosabb adattagjai: – IuserModelServiceClient client - a felhaszn´al´ok tartalmaz´o adatb´azishoz biztos´ıt hozz´af´er´est
adatait
– ObservableCollection k¨oz¨ott szerepl˝o j´at´ekok list´aja
myActualList - a feladatok
– ObservableCollection k¨oz¨ott nem szerepl˝o j´at´ekok list´aja
myOtherList - a feladatok
F¨ uggv´ enyei: – private void moveLeftButton Click(object sender, RoutedEventArgs e) - a j´at´ekosok a´ltal j´atszhat´o list´aba helyezi a kijel¨olt elemet a tov´abbi j´at´ekok list´aj´ab´ol – private void moveRightButton Click(object sender, RoutedEventArgs e) - a j´at´ekosok a´ltal j´atszhat´o list´aban kijel¨olt elemet ´athelyezi a tov´abbi j´at´ekok list´aj´aba, ´ıgy az a j´at´ekosok feladatai k¨oz¨ott nem fog szerepelni – private void moveUpButton Click(object sender, RoutedEventArgs e) - a j´at´ekosok a´ltal j´atszhat´o list´aban a 37
3.3. A RENDSZER SZERKEZETE
kijel¨olt elemet egy poz´ıci´oval feljebb helyezi, ´ıgy a sorrendben el˝or´ebb ker¨ ul a feladatok megold´asa sor´an – private void moveDownButton Click(object sender, RoutedEventArgs e) - a j´at´ekosok a´ltal j´atszhat´o list´aban a kijel¨olt elemet egy poz´ıci´oval lejebb helyezi, ´ıgy a sorrendben h´atr´ebb ker¨ ul a feladatok megold´asa sor´an – private void saveButton Click(object sender, RoutedEventArgs e) - elmenti a j´atszhat´o j´at´ekok list´aj´at az adatb´azisba – private void loadButton Click(object sender, RoutedEventArgs e) - bet¨olti a j´atszhat´o j´at´ekok list´aj´aban kijel¨olt j´at´ekot kipr´ob´al´asra – private void load2Button Click(object sender, RoutedEventArgs e) - bet¨olti a tov´abbi j´at´ekok list´aj´aban kijel¨olt j´at´ekot kipr´ob´al´asra – private void backButton Click(object sender, RoutedEventArgs e) - visszat´er´es az el˝oz˝o men¨ ube – private void startGame(decimal gameId, string gameType) bet¨olti egy j´at´ekot, param´eterk´ent a j´ar´ek t´ıpus´at ´es egyedi azonos´ıt´oj´at kapja meg – private void newEggGame(decimal gameId) - bet¨olti egy kakukktoj´as j´at´ekot, param´eterk´ent a j´ar´ek egyedi azonos´ıt´oj´at kapja meg – private void newOrderGame(decimal gameId) - bet¨olti egy sorrend j´at´ekot, param´eterk´ent a j´ar´ek egyedi azonos´ıt´oj´at kapja meg – private void newPlacerGame(decimal gameId) - bet¨olti egy elhelyez˝os j´at´ekot, param´eterk´ent a j´ar´ek egyedi azonos´ıt´oj´at kapja meg – private void newGroupGame(decimal gameId) - bet¨olti egy halmazos j´at´ekot, param´eterk´ent a j´ar´ek egyedi azonos´ıt´oj´at kapja meg mainModel - Silverlight projekt Ez a projekt egyetlen oszt´alyt tartalmaz amelyben a program m˝ uk¨od´es´ehez sz¨ uks´eges glob´alis v´altoz´ok t´arol´odnak statikus adattagk´ent. Ebben a modellben ker¨ ul elment´esre az akt´ıv UserControl, ennek v´altoz´as´ar´ol az oszt´aly esem´enyt k¨ uld, ´ıgy a MainPage meg tudja jelen´ıteni. A modell t´arol minden inform´aci´ot 38
3.3. A RENDSZER SZERKEZETE
3.13. ´abra. A Management projektjeinek oszt´alydiagramja - 1. ´abra a j´at´ekosr´ol, a megoldand´o feladatok list´aj´ar´ol, sz¨ uks´eg eset´en esem´enyt k¨ uld a v´arakoz´asi anim´aci´ora vonatkoz´oan (ind´ıt´as, le´all´ıt´as, megjelen˝o felirat v´altoz´asa). E mellett a j´at´ek-ablak aktu´alis m´eret´enek v´altoz´asait is figyeli. Az oszt´aly adattagjait a 3.12 a´br´an l´athatjuk. userManagement - Silverlight projekt Ez a projekt a felel˝os a felhaszn´al´ok adatainak karbantart´as´a´ert. Jelenleg az egyetlen el´erhet˝o funkci´oja az u ´j felhaszn´al´ok regisztr´al´asa. A k¨ovetkez˝o UserControl -okat tartmazza: • registrationUC.xaml ´ j´at´ekos regisztr´al´asa, adatainak ment´ese az adatb´azisba. Funkci´ oja: Uj 39
3.3. A RENDSZER SZERKEZETE
3.14. ´abra. A Management projektjeinek oszt´alydiagramja - 2. ´abra
3.15. a´bra. A Management projekt mediaSelectorUC ´es mediaSoundSelectorUC UserControl-jainak vizu´ alis elemei
40
3.3. A RENDSZER SZERKEZETE
N´ evvel ell´ atott vizu´ alis elemei: – successPanel - a ment´es sikeress´eg´et illetve sikertelens´eg´et kijeli a program, az u ¨zenet itt jelenik majd meg – nameTextBox - az u ´j j´at´ekos nev´enek beviteli mez˝oje – nameStatusTBlock - a n´ev bevitel´evel kapcsolatos probl´em´ak ki´ır´as´anak helye – nickTextBox - az u ´j j´at´ekos felhaszn´al´onev´enek beviteli mez˝oje – nickStatusTBlock - a felhaszn´al´on´ev bevitel´evel kapcsolatos probl´em´ak ki´ır´as´anak helye – passwdTextBox - az u ´j j´at´ekos jelszav´anak beviteli mez˝oje – passwdStatusTBlock kapcsolatos probl´em´ak ki´ır´as´anak helye – pwdAgainTextBox - az megism´etl´es´ere k´esz¨ ult beviteli mez˝o
a u ´j
jelsz´o
bevitel´evel
j´at´ekos
jelszav´anak
– pwdAgainStatusTBlock - a jelsz´o bevitel´evel kapcsolatos probl´em´ak ki´ır´as´anak helye
ism´etelt
– typeComboBox - leny´ıl´o men¨ u a j´at´ekos t´ıpus´anak kiv´alaszt´as´ara – typeStatusTBlock - a j´at´ekos kiv´alaszt´as´aval kapcsolatos probl´em´ak ki´ır´as´anak helye
t´ıpus´anak
– ageBox - az u ´j j´at´ekos ´eletkor´anak bevitel´ere szolg´al – ageStatusTBlock - a j´at´ekos bevitel´evel kapcsolatos probl´em´ak ki´ır´as´anak helye
´eletkor´anak
– disabilitiesTextBox - beviteli mez˝o ahova megjegyz´eseket helyezhet¨ unk el a j´at´ekosra ´es a feladatmegold´ast korl´atoz´o saj´atoss´agaira vonatkoz´oan – <StackPanel > nameHintSPanel - megjegyz´esek a j´at´ekos nev´enek bevitel´evel kapcsolatos hibalehet˝os´egekr˝ol – <StackPanel > nickHintSPanel - megjegyz´esek a j´at´ekos felhaszn´al´onev´enek bevitel´evel kapcsolatos hibalehet˝os´egekr˝ol – <StackPanel > pwdHintSPanel - megjegyz´esek jelszav´anak bevitel´evel kapcsolatos hibalehet˝os´egekr˝ol
a
j´at´ekos
– <StackPanel > pwdAgainHintSPanel - megjegyz´esek a j´at´ekos jelszav´anak ism´etelt bevitel´evel kapcsolatos hibalehet˝os´egekr˝ol 41
3.3. A RENDSZER SZERKEZETE
– <StackPanel > typeHintSPanel - megjegyz´esek t´ıpus´anak bevitel´evel kapcsolatos hibalehet˝os´egekr˝ol
a
j´at´ekos
– <StackPanel > ageHintSPanel - megjegyz´esek ´eletkor´anak bevitel´evel kapcsolatos hibalehet˝os´egekr˝ol
a
j´at´ekos
– <Button > sendRegistrationButton - az adatok ment´ese az adatb´azisba F¨ uggv´ enyei: A 3.13 ´abr´an l´athat´oak az oszt´aly adattagjai ´es f¨ uggv´enyei. A beviteli mez˝ok minegyik´ehez tartozik egy ellen˝orz´esre szolg´al´o esem´enykezel˝o. Hib´asan megadott adatok eset´en a megfelel˝o helyeken megjelennek a hiba¨ uzenetek ´es ezek jav´ıt´as´ara szolg´al´o inform´aci´ok a felaszn´al´o fel´e (r´eszletek a fejleszt˝oi dokument´aci´o megfelel˝o r´esz´eben: 2.3.1). • mediaSelectorUC.xaml Funkci´ oja: A felt¨oltend˝o k´epek kiv´alaszt´as´at, c´ımk´ez´es´et ´es komment´al´as´at seg´ıt˝o u ˝rlap. N´ evvel ell´ atott vizu´ alis elemei: L´asd: 3.15 a´bra F¨ uggv´ enyei: L´asd: 3.13 a´bra • mediaSoundSelectorUC.xaml Funkci´ oja: A felt¨oltend˝o hangf´ajlok kiv´alaszt´as´at ´es c´ımk´ez´es´et seg´ıt˝o u ˝rlap. N´ evvel ell´ atott vizu´ alis elemei: L´asd: 3.15 a´bra F¨ uggv´ enyei: L´asd: 3.14 a´bra
gameFrameProject - Silverlight projekt Ez a projekt a konkr´et j´at´ekt´ıpusok k¨oz¨os fel¨ ulet´et tartalmazza. Hozz´a tartozik a j´at´ekok megjelen´es´enek kerete (fejl´ec, hangolej´atsz´o gombok), illetve a j´at´ekszerkeszt˝ok utols´o l´ep´es´eben felbukkan´o u ˝rlap amin a ment´est v´egezz¨ uk. A projekt oszt´alydiagramj´at l´asd a 3.16 a´br´an. A k¨ovetkez˝o UserControl -okat tartmazza: • gameFrameUC.xaml Funkci´ oja: A j´at´ekok megjelen´es´enek keret´et le´ır´o UserControl. • saveGameUC.xaml Funkci´ oja: A j´at´ekszerkeszt˝ok utols´o l´ep´es´eben felbukkan´o u ˝rlap.
42
3.3. A RENDSZER SZERKEZETE
3.16. ´abra. A gameFrameProject oszt´alydiagramja
43
3.3. A RENDSZER SZERKEZETE
3.17. ´abra. A eggModelProject oszt´alydiagramj´anak egy r´esze
44
3.3. A RENDSZER SZERKEZETE
3.18. ´abra. A eggModelProject oszt´alyainak kapcsolatai
3.19. ´abra. A orderModelProject oszt´alyainak kapcsolatai
45
3.3. A RENDSZER SZERKEZETE
3.20. ´abra. A placerModelProject oszt´alyainak kapcsolatai
3.21. ´abra. A groupModelProject oszt´alyainak kapcsolatai
46
´ 3.4. A RENDSZER TELEP´ITESE
eggModelProject - Silverlight projekt A kakukktoj´as j´at´ekhoz tartoz´o szerkeszt˝ok, vizu´alis elemek ´es a j´at´ek m˝ uk¨od´es´et le´ır´o f´ajlok tartoznak a projekthez. A j´at´ek megjelen´es´e´ert ´es funkcionalit´as´a´ert felel˝os oszt´alyok diagramj´at a 3.17 ´abr´an l´athatjuk. Az itt l´atott rel´aci´ok teljesen hasonl´oan alakulnak a t¨obbi t´ıpus eset´en is. A t´ıpushoz tartoz´o szerkeszt˝ok, keretek ´es modellek oszt´alyainak kapcsolat´at a 3.18 a´bra szeml´elteti. orderModelProject - Silverlight projekt A sorrend j´at´ekhoz tartoz´o szerkeszt˝ok, vizu´alis elemek ´es a j´at´ek m˝ uk¨od´es´et le´ır´o f´ajlok tartoznak a projekthez. A t´ıpushoz tartoz´o szerkeszt˝ok, keretek ´es modellek oszt´alyainak kapcsolat´at a 3.19 ´abra szeml´elteti. placerModelProject - Silverlight projekt Az elhelyez˝os j´at´ekhoz tartoz´o szerkeszt˝ok, vizu´alis elemek ´es a j´at´ek m˝ uk¨od´es´et le´ır´o f´ajlok tartoznak a projekthez. A t´ıpushoz tartoz´o szerkeszt˝ok, keretek ´es modellek oszt´alyainak kapcsolat´at a 3.20 ´abra szeml´elteti. groupModelProject - Silverlight projekt A halmazos j´at´ekhoz tartoz´o szerkeszt˝ok, vizu´alis elemek ´es a j´at´ek m˝ uk¨od´es´et le´ır´o f´ajlok tartoznak a projekthez. A t´ıpushoz tartoz´o szerkeszt˝ok, keretek ´es modellek oszt´alyainak kapcsolat´at a 3.21 ´abra szeml´elteti.
3.3.3. ASP.NET
oldal
amely
a
Silverlight
alkalmaz´ ast
hosztolja A silverlight alkalmaz´ast egy ASP.NET oldalba a´gyaztuk, a VisualStudio var´azsl´oj´anak seg´ıts´eg´evel. A projekt tartalmazza mindazon interf´eszeket ´es modulokat amelyek sz¨ uks´egesek az adatb´azis el´er´es´ehez. Az SQL adatb´azis el´er´es´ehez WCF Service-eket haszn´alunk. Minden j´at´ekt´ıpushoz, a felhaszn´al´ok adatainak el´er´es´ehez ´es a m´edia elemek adatainak elt´arol´as´ahoz is tartozik egy-egy.
3.4. A rendszer telep´ıt´ ese A program egy kliens-szerver alkalmaz´as. A szerver oldali telep´ıt´es t¨obb l´ep´esb˝ol ´all. Az adatb´azis k´et r´eszre bonthat´o: SQL adatb´azis ´es m´edia elemeket tartalmaz´o adatb´azis. Az SQL adatb´azis a Microsotf SQL Server 2005 Express Edition alkalmaz´assal k´esz¨ ult, a mell´ekelt CD tartalmaz egy scriptet (db/sldb.sql) aminek
47
´ 3.4. A RENDSZER TELEP´ITESE
3.22. ´abra. Az interf´eszek diagramja - 1.
48
´ 3.4. A RENDSZER TELEP´ITESE
3.23. ´abra. Az interf´eszek diagramja - 2.
49
´ 3.4. A RENDSZER TELEP´ITESE
seg´ıts´eg´evel l´etrehozhat´o egy megfelel˝o t´abl´akat tartalmaz´o u ¨res adatb´azis, e mellett tartalmaz egy backup f´ajlt is (db/sldb.bak) amit a fenti alkalmaz´as seg´ıts´eg´evel vissza´all´ıtva kipr´ob´alhat´o az alkalmaz´as a n´elk¨ ul hogy saj´at magunk felt¨olten´enk az adatb´azist. A m´edia elemek t´arol´as´ara IIS szervert haszn´alnuk. Windows rendszereken ezt a szolg´altat´as a Vez´erl˝opulton kereszt¨ ul kapcsolhatjuk be. Az ez a´ltal l´etrehozott C: inetpub wwwroot mapp´aban fogja keresni az alkalmaz´asunk az elemeket, ezen bel¨ ul is az imgs, thumbs ´es mp3s mapp´akban. Az IIS szerver el˝obb eml´ıtett k¨onyvt´ar´aba publik´aljuk az ASP.NET oldalunkat a VisualStudio 2010 seg´ıts´eg´evel. Ezek ut´an a szerver el´er´esi c´ım´et be´ırva a b¨ong´esz˝obe az alkalmaz´ast elind´ıthatjuk. A helyes m˝ uk¨od´eshez az IIS szervert konfigur´alni kell, u ¨gyelj¨ unk arra hogy legal´abb a .NET Framework 4 vagy u ´jabb verzi´o legyen be´all´ıtva az ApplicationPool n´al. Az SQL szerver ´es a m´ediaelemeket tartalmaz´o mapp´ak el´er´es´ehez a Windows u ´jabb verzi´oi eset´en a hozz´af´er´esi jogokat el˝ofordulhat hogy m´odos´ıtanunk kell annak ´erdek´eben hogy az alkalmaz´as ´ırni illetve olvasni tudja azokat. A projekt publik´aci´oja el˝ott gy˝oz˝odj¨ unk meg r´ola hogy a mainModel.mainModel.cs oszt´alyban a databaseServerURI ´es mediaServerURI string-ek a megfelel˝o c´ımeket tartalmazz´ak. Az alkalmaz´as forr´ask´odja a CD-n a source nev˝ u mapp´aban tal´alhat´o.
50
4. fejezet ¨ Osszegz´ es Az alkalmaz´as els˝osorban oktat´asi c´elra k´esz¨ ult, haszn´alat´aval a kisebb koroszt´alyok logikai k´epess´egei fejleszthet˝oek illetve tesztelhet˝oek. A haszn´alat´aval a gyerekek j´atsz´as k¨ozben tanulhatnak, az oktat´ok pedig pontos statisztik´akat kaphatnak a gyerekek teljes´ıtm´eny´er˝ol ´es fejl˝od´es´er˝ol. A rendszer b˝ov´ıthet˝o, ugyanis fel´ep´ıt´ese lehet˝ov´e teszi u ´jabb t´ıpus´ u j´at´ekok integr´al´as´at. E mellett a megl´ev˝o j´at´ekt´ıpusokat az oktat´ok kedv¨ ukre b˝ov´ıthetik, a feladatok megjelen´esi sorrendj´et megv´altoztathatj´ak. A Silverligh ´es az ASP.NET saj´atoss´agai miatt a rendszer egyes r´eszei k¨ ul¨onb¨oz˝o szervereken is elhelyezhet˝oek, nem sz¨ uks´eges egy helyen t´arolni a hangf´ajlokat, a k´epeket ´es az SQL szervert.
4.1. Tesztel´ es A program tesztel´ese a VisualStudio Development Server -´enek haszn´alat´aval t¨ort´ent localhost-on. Mivel az alkalmaz´as er˝oforr´asai k¨ ul¨onb¨oz˝o szervereken is elhelyezkedhetnek, a tesztel´es sor´an k¨ ul¨on figyelmet kapott azoknak az eseteknek a tesztel´ese, amikor valamely adatb´azis nem el´erhet˝o. A hasonl´o programokn´al a m´asik leggyakoribb hibaforr´as az u ˝rlapok helytelen kit¨olt´ese, ez´ert a bevitt adatok ellen˝orz´es´et v´egz˝o funkci´ora is nagyobb figyelem ir´anyult. A k¨ovetelm´enyek k¨oz¨ott szerepelt, hogy az alkalmaz´as k¨ ul¨onb¨oz˝o k´eperny˝ofelbont´asok eset´en is k´epes legyen a helyes megjelen´esre. A UserControl -ok viselked´es´et a b¨ong´esz˝o a´tm´eretez´es´evel egyszer˝ uen figyelemmel lehet k¨ovetni, az elk´esz¨ ult fel¨ uletek dinamikusan alkalmazkodnak az alkalmaz´as sz´am´ara fenntartott hely m´ereteihez.
4.2. Ismert bugok A program utols´o tesztel´ese sor´an egy addig nem l´atott hib´at siker¨ ult ´eszrevenni. A jav´ıt´as´ara a hat´arid˝o betart´asa mellett nincs id˝o, ´ıgy az egy k´es˝obbi v´altozatban
4.2. ISMERT BUGOK
ker¨ ul v´altoztat´asra. A probl´ema akkor keletkezik ha valamely j´at´ekt´ıpusb´ol a szerkeszt˝o seg´ıts´eg´evel u ´j feladatot hozunk l´etre, de a hangszerkeszt˝o r´eszben nem rendel¨ unk hozz´a hangf´ajlokat. Ilyenkor ha olyan men¨ ube l´ep¨ unk be amely a l´etrehozott j´at´ek t´ıpus´aba tartoz´o feladatok list´aj´at lek´eri, a program egy nem kezelt hiba¨ uzenettel le´all. A probl´em´at az okozza hogy a j´at´ek ´es a hangf´ajlok szerkeszt˝oje nincsen k¨ozvetlen¨ ul o¨sszek¨otve, ´ıgy a felhaszn´al´o nincs k¨otelezve r´a hogy a j´at´ek k¨ozben hallhat´o seg´ıts´egny´ ujt´asra szolg´al´o f´ajlokat hozz´arendelje a feladathoz. A bet¨olt´eskor viszont a program a megfelel˝o zenef´ajl adatait minden esetben lek´erdezi az SQL adatb´azisb´ol, amik ilyenkor nem l´eteznek. Az egyik megold´as az lehetne, hogy a program megengedi a feladatok bet¨olt´es´et hangok n´elk¨ ul is, mivel azomban a c´elk¨oz¨ons´eg az ´altal´anos iskol´ak als´o tagozatainak di´akjai, nem felt´etelezhetj¨ uk hogy a j´at´ekos minden esetben k´epes elolvasni ´es ´ıgy meg´erteni a feladat ki´ır´as´at.
52