SZAKDOLGOZAT. Dajka Ferenc
|
|
- Ágnes Illésné
- 4 évvel ezelőtt
- Látták:
Átírás
1 SZAKDOLGOZAT Dajka Ferenc 2012
2 EÖTVÖS LORÁND TUDOMÁNYEGYETEM INFORMATIKAI KAR KOMPUTERALGEBRA TANSZÉK Egy logikai játék algoritmikus kérdései Témavezető: Szerző: Burcsi Péter Dajka Ferenc egyetemi adjunktus Programtervező ELTE IK Informatikus Bsc Budapest 2012
3 Tartalomjegyzék Bevezetés, a probléma leírása A cél röviden Mi a mesekocka3d A Rubik kocka A Floppy Cube A Mesekockáról A Meskocka3D Alapprobléma Az alkalmazott algoritmusok bemutatása Egy kocka állapotreprezentációja Indexelések Brute Force Fa algoritmus Számítógépes megvalósítás Fejlesztői dokumentáció A programtól elvért alapvető követelmények Szótár Fejlesztési környezet és felhasznált eszközök Felhasznált technológiák és elméletek A programszövegben használt konvenciók A program fázisai Használati esetek A program felépítése mesekocka3d csomag mesekocka3d.userinterface csomag mesekocka3d.graphics csomag mesekocka3d.threedimension csomag mesekocka3d.help csomag mesekocka3d.algorithms csomag mesekocka3d.adapters csomag Az egyes osztályok kapcsolata működés közben Továbbfejlesztési lehetőségek Tesztelés
4 Interfész tesztelése Hiányzó fájlok tesztelése Perifériák tesztelése Programműködés Felhasználói dokumentáció A program rövid leírása Rendszerkövetelmények Minimális hardver követelmények: Minimális szoftver követelmények Telepítés, futtatás A Java futtatókörnyezet (JRE) telepítése A program telepítése, eltávolítása A program indítása A program fogalmai A képernyő részei A. Célkép panel B. 3D Játéktér C. Kezelőfelület és státuszinformációk D. Menüsor Általános használat Játékfázisok Játékmódok Nézőpont beállítások Kockamozgatások, kijelölések Kezelőfelület használata A program funkciói Hibaüzenetek Kapcsolat a készítőkkel Idézett forrásmunkák
5 Bevezetés, a probléma leírása A cél röviden A program a mesekocka néven ismert gyermekjáték számítógépes megvalósítása, a Rubik kocka egy változatának elemeivel ötvözve. A játék célja a kapott kockák megfelelő forgatással való kirakása, ehhez a program a felhasználónak egy grafikus, háromdimenziós felületet biztosít. A fejlesztés másik célja olyan algoritmusok implementálása, amelyek a kapott állapottér alapján önállóan befejező állapotba tudják juttatni a kockákat. Mi a mesekocka3d A Rubik kocka A Rubik-kocka (másként Bűvös kocka, a szabadalmi leírásban térbeli logikai játék) mechanikus, egyéni logikai játék. A kocka oldalai különféle színűek és elforgathatók a lap középpontja körül. A forgatás során a szomszédos oldalak színe megváltozik. A rendszertelen forgatással az oldalak színösszeállítása összekeverhető. (Összesen féle (leírva; negyvenháromtrillió-kétszázötvenkettőbilliárdhárombillió-kettőszázhetvennégymilliárd-négyszáznyolcvankilencmilliónyolcsszázötvenhatezer) (kb. 4, ) eltérő állás hozható létre.) A játék célja, hogy egy előzetesen összekevert kockából forgatással visszaállítsuk az eredeti, rendezett színösszeállítást, vagyis minden oldalon azonos színű lapocskák legyenek. Rubik Ernő eleinte a es kockát szerette volna megalkotni. Az első problémába akkor ütközött, amikor nem tudta, hogy hogyan lehetne úgy összeállítani ezt a kockát, hogy mind a három tengelye körül elforgatható legyen. Rubik először gumigyűrűkkel próbálta egymáshoz rögzíteni a kis kockákat, de ez így nem sikerült, mivel egy idő után a gumiszalagok elszakadtak, majd próbálkozott mágnesekkel is, de úgy meg könnyen szétesett a kocka, ezért a problémát úgy oldotta meg, hogy a kockaelemeket olyan alakúra faragta ki, hogy azok az alakjuknál fogva tartsák össze magukat. Később különböző színekkel jelölte meg az oldalakat, hogy jobban lássa, hogyan mozognak egymáshoz képest. Rubik Ernő saját bevallása szerint csak a végleges konstrukciós - 3 -
6 és formai kidolgozás után ismerte fel, hogy a kocka nemcsak a térbeli mozgások szemléltetésére alkalmas (mivel ezért alkotta meg), hanem jó játék, és így értékesíthető is. A kocka színezésre Rubik Ernő külön gondot fordított; ezért a kocka szabványos színezése olyan, hogy két-két átellenes (párhuzamos) oldal színei a sárga komponensben különböznek; tehát így lesz a fehérből a vele átellenes sárga, a pirosból a narancssárga, a kékből a zöld. Sikerét leginkább annak köszönheti, hogy 3 dimenziós, és akárhogy is mozgatjuk, a játék egy darabban marad. ([1]) A Floppy Cube A Rubik kockának a kitalálása óta eltelt közel negyven év alatt számtalan változata elkészült. Vannak nem csak kocka alakú, hanem téglalap, tetraéder alakú fajtái is, sőt a kockának létezik 1x1x1-es változata is. Ezek egyik fajtája a Floppy Cube néven ismert kocka, amelyben 1x3x3-as elrendezésben találhatók az elemek. A játéknak lévén, hogy eggyel kevesebb dimenziója van, sokkal kevesebb állapotba is hozható. A Floppy Cube felső és alsó sora, illetve a két szélső oszlopa forgatásával hozható a kívánt állapotba. A Mesekockáról A Mesekocka nevű játékban téglalap alakú elrendezésben találhatók festett kockák, az oldalaikon általában gyermekeknek való mesékből vett képek részleteivel. Az egyes kockákon lévő képrészletek a kockák megfelelő forgatásával, majd egymás mellé helyezésével kiadják az eredeti képet, a játék célja ennek az állapotnak az elérése. A Meskocka3D A programban az említett Floppy Cube, illetve a Mesekocka ötvözetének megvalósítása. A Floppy Cube-hoz hasonlóan kilenc darab kockánk van, ezeken képek részletei helyezkednek, a helyes célállapot, az előre kiválasztott kép kirakása. A képrészletek a kockákon úgy helyezkednek el, hogy egy kép kirakása után, minden kockán legfeljebb néhány megfelelő forgatással akármelyik másik képet megkaphatjuk. A Floppy Cube-al megegyezően itt is kockahármasokat tudunk mozgatni, de vele ellentétben a középső oszlopot és sort is tudjuk forgatni, valamint nem a hármasok közepén lévő kocka belső tengelye körül, hanem a kockák saját - oszlopok esetén mélységi, sorok esetén szélességi - tengelye körül
7 A programban háromféle játékmódot különböztetünk meg: Egyéni Egyéni módban a felhasználó feladata megfejteni a rejtvényt. A kockákat a billentyűzet segítségével rakhatja ki. Brute Force A Brute Force, más néven Nyers Erő algoritmus a nevéből is adódóan a számítógép erejét használja ki gondolkodás helyett. A kapott problémát egy adott egyszerű lépés által úgy próbálja megoldani, hogy szisztematikusan az összes lehetséges állapotot kipróbálja, és megvizsgálja, hogy az helyes-e. Ebben a játékmódban a felhasználónak semmilyen beleszólása nincs a játékmenetbe. A számítógép a Brute Force algoritmus módszerével végig próbálgatja a kocka összes lehetséges állapotát addig, amíg el nem jut a megfelelőbe. Ez előtt a program beforgatja a kockákat a megfelelő piros vagy kék állapotokba (ld. lejjebb), így az algoritmus nem teljesen Brute Force. Fa algoritmus A Fa algoritmus játékmódban a program a kockák aktuális helyzetéből állapotot generál, majd ezeket egy gráfba téve és végig vizsgálva megkeresi a lehetséges megoldást. Memóriahiány miatt csak a felső 3x2-es részre alkalmazzuk ezt a megoldást, az alsó három kockát a Brute Force algoritmus segítségével forgatjuk a megfelelő állapotba. Alapprobléma A programmal kapcsolatos alapvető probléma a gép általi kirakásokban jelentkezik, ugyanis amit az emberi szem könnyen átlát, azt a számítógép lehet, hogy több órás számítással tudja megoldani, ez a gondolatmenet fordítva is igaz, mivel az emberi és gépi logika, gondolkodás nem egyezik. Ennek egy példája, ha egy olyan állapotot veszünk, ahol egy bizonyos kép ki van rakva, de nem a kívánt, ekkor egy felhasználó könnyedén ki tudja rakni a megfelelő állapotot az emlékezetére hagyatkozva (ugyanis a helyesen elforgatott képrészletek a kockán, a többi oldalon is helyesen helyezkednek - 5 -
8 el). Ilyen esetben a Brute Force algoritmus száznál is több forgatást is elvégezhet szerencsétlen állapotból kiindulva
9 Az alkalmazott algoritmusok bemutatása Egy kocka állapotreprezentációja Egy kocka 24 állapotot vehet fel, 6x4, azaz a 6 kockaoldal mindegyike 4 különböző állapotban lehet, a 90 fokos forgatásokat figyelembe véve. Az állapotok számozását 0- tól indítottam, a programnyelvi indexeléssel megegyezően, egy kockán megfelelően van elforgatva az adott képrészlet, ha az állapota a négy többszöröse (0,4,8,12,16,20). Az egyes állapotátmeneteket egy előre beégetett táblázatból tudhatjuk meg, ezt korábban manuálisan, egy kockamodell alapján számoltam ki, majd vittem be a programba. Az aktuális állapotot megkaphatjuk az előző állapotból és a kockán elvégzett forgatásból. A kockák állapotaihoz tartozik még egy szín is, amely a permutációk paritását adja meg, a programban a piros színhez a 0-ás, a kékhez az 1-es szám tartozik. Színekre a Brute Force algoritmusnál van szükség. A kockák alapjáraton a 0-ás állapotba vannak forgatva, a textúrák úgy vannak elhelyezve, hogy ebből az állapotból könnyedén el lehessen jutni a többi nyerő állapotba. A keverés során a kockákat nem egyesével forgatja a program, hanem legális lépések sorozatát végzi el, így biztosítva, hogy a játék mindig befejezhető legyen. Indexelések A játékban a kockák indexelése balról jobbra, fentről lefelé történik, tehát a következőképpen néz ki: o első sor balról jobbra: 0, 1, 2 o második sor balról jobbra: 3, 4, 5 o harmadik sor balról jobbra: 6, 7, 8 Az egyes kockahármasokhoz tartozó indexeket egy tömbbe téve tároltam, ez a következőképpen néz ki: 0, 3, 6 1, 4, 7 2, 5, 8 0, 1, 2 3, 4, 5 6, 7, 8 A Fa algoritmus játékmódhoz szükség van még egy tömbre, mely az egyes kockaindexeket, és a rajtuk végezhető forgatásokat reprezentáló számokat tartalmazza: - 7 -
10 0,3,0 0,3,1 1,4,0 1,4,1 2, 5,0 2, 5, 1 0,1,2,2 0,1,2,3 3,4,5,2 3,4,5,3 Ahol az irányok: Brute Force o 0: BAL o 1: JOBB o 2: FEL o 3: LE A Brute Force algoritmus során a cél az összes lehetséges állapot végigjárása kockánként addig, amíg megfelelőt nem találunk, majd továbblépünk a következőre, amíg az összes kocka a helyére nem kerül. Az alapötlet az volt, hogy forgassuk ki az aktuális kockára illeszkedő sort és oszlopot, majd végezzük el a forgatások inverzeit megcserélt sorrendben, azaz ha előbb a sort forgattuk, majd az oszlopot, akkor a sor inverz műveletét végezzük el előbb, majd az oszlopét. Ezen lépések sorozatával csak az aktuális kockán végzünk módosítást, ugyanis a többi kockára csak egy forgatás, és annak egy inverz lépése hat, ami visszaforgatja azt az eredeti állapotba. Ám az ilyen forgatások a kirakandó kockát is csak három különböző állapotba hozzák. Ennek egyik oka, hogy a kocka állapotai a rajta végzett forgatások permutációjának paritása alapján is két osztályba sorolhatók ([2]). A kockán végzett páros számú forgatás más paritású permutációhoz vezet, mint a páratlan számú forgatások. Ezek alapján könnyű volt a már meglévő állapottáblázathoz hozzárendelni a megfelelő paritásokat, amelyeket egyébként a ábra - A keret színbeforgatása
11 könnyebb érthetőségért a piros és kék színekkel azonosítottam. A nullás, kezdőállapotot kéknek vettem, és az innen elvégezett összes páros lépésben elérhető állapot szintén kék lett, a többi pedig piros. A fent említett forgatás-négyessel vagy csak piros, vagy csak kék állapotokat járhatunk be, ezért az algoritmus előbb megnézi a célállapot színét, majd az összes kockát ilyen színű állapotba forgatja. Egy elmélet szerint, ha egy a játékban lévő öt kocka által alkotott keret, (azaz egy külső sor és egy külső oszlop,) színe megegyezik, akkor az azon belül lévő négy kocka színe is ilyen. A közös szín kirakása így egyszerű, a keretben előbb kirakjuk a sor és az oszlop közös kockáját a kívánt színre, majd a másik négy kockát, ha kell, át tudjuk forgatni egy-egy megfelelő művelettel a kívánt állapotba, anélkül, hogy hatással lennének egymásra. A programban a keretként a felső sort, és a bal oszlopot választottam. A korábban említett négy forgatás az aktuális kockánkon egy eldöntés és a lapján egy 90 fokos forgatást eredményez az eredeti állapothoz képest, ezzel a kocka három oldalát járjuk be, mindig ugyanazzal a három állapottal. A teljes tizenkét, azonos színű állapot bejárásához ezért a forgatásokat a következő módon végezzük: BALRA, FEL, JOBBRA, LE, BALRA, FEL, JOBBRA, LE, JOBBRA, FEL, BALRA, LE, JOBBRA, FEL, BALRA, LE. Ezáltal az összes lehetséges állapotot bejárjuk, ezt addig végezzük, amíg a kívánt kocka megfelelő állapotba nem jut
12 2. ábra a helyes állapotba hozás algoritmusa Fa algoritmus A gépi kirakás másik módja a gráfelméleten alapszik. A kockák együttes állapotát feljegyezzük, majd ebből az összes lehetséges elforgatást is, ezt a műveletet aztán elvégezzük az újonnan kreált csúcsokra is, és ezt rekurzívan végezzük olyan mélységig, amelyben már biztosan benne van a kívánt végállapot. A gráf létrejötte után bejárjuk azt, és megkeressük a kirakandó állapothoz tartozó csúcsot, ezt aztán összekötjük egy úttal, amely a kezdőállapotból a végállapotba vezető állapotok sorozatát fogja tartalmazni. A csúcsok között súlyként szerepel az előző állapotból a következőbe vivő forgatás, ezeket a forgatásokat elvégezzük egymás után, így a megfelelő végállapotba jutunk
13 3. ábra -A csúcsok generálása Egy ilyen gráf tárolásához egy átlagos számítógép sem processzor, sem memóriahasználat szempontjából nem megfelelő. A Fa algoritmus során ezért nem csak a kezdőállapotból építjük fel a gráfot, hanem mivel a végállapot is ismert, innen is indítunk egyet, ezzel lényegesen leredukálva a csúcsok számát. Egy n mélységű gráf esetén, ha az egyes csúcsok gyerekeinek száma x, akkor x n csúcsszám helyett, így 2*x n/2 csúcsot kapunk. A két gráfot egy bizonyos mélységig építjük, majd a vesszük azok metszetét, azaz két olyan csúcsot választunk ki, amely ugyanazt az állapotot tartalmazza, így a gráfunk összefüggő lesz, és elvégezhetjük benne az útkeresést. A gyakorlatban a két gráfot 7 mélységig generáltam, azonban az esetek nagy részében még így sem kaptam megoldást, ezért az algoritmus csak a játék felső 3x2-es részére működik. Minden állapotból így kétszer két sor -, illetve kétszer három oszlopműveletet, azaz összesen tíz műveletet tudunk végrehajtani, a csúcsok száma így nagyjából: Számítógépes megvalósítás A kézenfekvő ötlet, hogy az állapotokat egy hat hosszú tömbben tároljuk, a későbbi keresés és a tárolás szempontjából is sokkal költségesebb. Csúcsonként ezért hat új
14 változó létrehozása helyett az egyes állapotokat egyetlen változóban tároljuk a következő módon: Az így kapott 24-es számrendszerbeli számokat aztán osztások segítségével könnyen visszaszámíthatjuk, a keres során pedig elég egy számot összehasonlítani hat helyett. ([3]) A metszet keresése viszont még így is számításigényes, így szükséges a megfelelő adatszerkezet megválasztása is. A döntés a Java által implementált hashmapre ([4]) jutott, amely kulcs érték párokat tartalmaz. A kulcsok itt a csúcsok állapotai, amelyek eleve rendezetten helyezkednek el, illetve egy kulcs csak egyszer szerepelhet benne, ez pont kapóra jön, mivel a gráfban rengeteg egyforma állapot található, de ezekből ugyanazok az új állapotok képezhetőek, így elég egyszer eltárulnunk azokat, ez jelentősen leredukálja a csúcsok 4. ábra - A csúcsok tárolókba tétele számát, és ezzel felgyorsítja a keresést. Az állapotok mellett tároljuk a kockákon elvégzett forgatásokat is értékként, ez alapján rakjuk ki később a megfelelő állapotot
15 5. ábra - A metszet keresés
16 Fejlesztői dokumentáció KissDraw alapján ([5]) A programtól elvért alapvető követelmények A program legyen könnyen kezelhető, jól átlátható, felhasználóbarát. Tudjon mentést és betöltést végezni, adjon vissza információkat a játékról, és az eddigi eredményekről, ezeket és a lehetséges beállításokat grafikus felületen Jelenítse meg. Az irányítás legyen egyszerű, könnyen megérthető. Az alkalmazás ablakos módban fusson. Szótár Fogalom Jelentés Egy adott probléma programmatikus megoldását jelentő, elemi lépések véges számú halmaza által alkotott műveletsor. Az algoritmusok különböző nyelveken - Algoritmus programozási vagy akár természetes, emberi nyelven is készülhetnek, de mindenképpen egyértelműnek kell lenniük minden kérdés tekintetében, és jól meghatározott bemeneti valamint kimeneti pont(okk)al kell rendelkezniük. Egy táblázat mely tartalmazza, hogy az Állapottáblázat egyes állapotokból, egy adott irányba elforgatva a kockát, milyen új állapotot kapunk. Betöltés A Fájl menü eleme, az elmentett állapotok betöltését végzi. A Brute Force az algoritmusok egy fajtája, Brute Force amely egy bizonyos egyszerű lépéssorozatot hajt végre a probléma megoldásáig. Brute Force mód Egy játékstílus, melyben a számítógép
17 végzi a kockák kirakását. A Kezelőfelületen elhelyezkedő legördülő Célkép legördülő menü menü, amelyen kiválasztatjuk a kirakandó képet. Az Információk menü része, Eddigi eredmények Egyéni mód Egységmátrix Fa Faalgoritmus mód Fájl menü információkat ad az eddigi befejezett játékokról. Egy játékstílus, melyben a játékos végzi a kockák kirakását. Olyan négyzetes mátrix, amely a főátlója egyesekből, a többi eleme nullából áll. Az összefüggő körmentes gráfokat fának nevezzük. Egy játékstílus, melyben a számítógép végzi a kockák kirakását. A Menüsor első menüje. Egy kockahármas mélységi, vagy Forgatás szélességi tengelyen való forgatása 90 fokkal pozitív, vagy negatív irányba. A gráf a matematikai gráfelmélet és a számítógép-tudomány egyik alapvető fogalma. A gráf dolgok (csomópontok, csúcsok) és rajtuk értelmezett összeköttetések (élek) halmaza. Egy Gráf gráfot megadhatunk csúcsainak és éleinek felsorolásával, vagy szemléletesebben egy diagram formájában, ahol a pontok felelnek meg a gráf csúcsainak, az őket összekötő ívek pedig az éleknek. A két megadási mód ekvivalens, azaz a gráf pusztán egy
18 struktúra, semmilyen megjelenítési információt nem tartalmaz, így különböző diagramok is tartozhatnak ugyanahhoz a gráfhoz. ([6]) Időmérő Információk menü Játék fázis A Kezelőfelület része, játék közben az eltelt időről ad információt. A Menüsor második menüje. A program Keverési fázis utáni állapota, amikor a tényleges játék folyik. Az Információk menü része, Játékleírás információkat ad a játék szabályairól, használatáról. A Kezelőfelületen elhelyezkedő legördülő Játékmód választó legördülő menü menü, melyen kiválaszthatjuk az indítás előtti játékmódot. Egy háromdimenziós megjelenítő, mely a Játéktér Készítők Keverési fázis Kezdő fázis képernyő nagy részét képezi, a játék folyamata itt látható. Az Információk menü része, információkat ad a játék készítőjéről. A program azon állapota, amikor a kockák keverése történik. A program indulása utáni állapot. A képernyő jobb szélén elhelyezkedő panel, amelyen az indítás előtti Kezelőfelület beállításokat lehet elvégezni, illetve a játékról tudhatunk meg információkat játék közben. Egy kockahármast pirosra színez a Kijelölés program, ezzel jelezve, hogy ezt tudjuk majd elforgatni
19 Kilépés A Fájl menü része, a programból való kilépést végzi. A kilépéskor megjelenő üzenet, amely a Kilépés beleegyező dialógus. felhasználó beleegyezését kéri a program leállítására. A képernyő bal felső sarkában elhelyezkedő panel, amely a játék közben Kirakandó kép panel Körmentes gráf azt a képet jeleníti meg, amelyet a felhasználónak, vagy a gépnek ki kell raknia. A gráf egyetlen v csúcsából sem vezet v- ben végződő út. A Kezelőfelület része, játék közben a Lépésnapló Lépésszámláló Mentés Menüsor Nem termináló hibaüzenet Nézett pont megtett lépésekről ad információt: mely kockákat, milyen irányba, hányadik lépésben forgattuk el. A Kezelőfelület része, játék közben a megtett lépések számáról ad információt. A Fájl menü eleme, Egyéni módban az aktuális állapot elmentésére szolgál. A képernyő felső sorában a címsor alatt elhelyezkedő panel, amelyen a felhasználó a mentést, betöltés, kilépést végezheti el, illetve információkat tudhat meg a játékról. Egy felugró, hibát jelző ablak, amely nem állítja le a programot. A középső kocka közepe. Az a pont a világkoordináta rendszerben, Nézőpont ahonnan a felhasználó az eseményeket látja, a kamera helye
20 Nézőpontváltás Nyert fázis A nézőpont elmozgatása a középső kocka középpontja körüli gömb pontjain. A Játék fázis után a kockák helyre forgatásakor létrejövő állapot. A gráf bármely csúcsából el tudunk jutni Összefüggő gráf Projekciós mátrix bármely másik csúcsába az éleken keresztül. A világ-koordinátarendszert a képernyőre leképező transzformációs mátrix. Additív színmodell, mely a vörös, a zöld, RGB színtér Start gomb Termináló hibaüzenet Út Világ-koordinátarendszer és a kék fénykülönböző erősségű keverésével adja meg az egyes színeket. A játék indítását kezdeményezhetjük vele. Egy felugró, hibát jelző ablak, amely leállítja a programot. Egy csúcsból egy másikba vezető él sorozatot útnak nevezünk. A geometriai alakzatok egyes pontjait tárolja. Fejlesztési környezet és felhasznált eszközök Fejlesztési környezet: Windows 7, 64 bit Java jdk 1.6.0_25, jre6 A használt hardver: Processzor: AMD Athlon II P340 Dual-Core Processor 2.20 GHz Memória (RAM): 3GB Videókártya: ATI Mobility Radeon HD
21 A használt fejlesztőeszköz: NetBeans IDE 7.0 A használt CASE eszköz: Microsoft Visio 2010 NetBeans IDE 6.9 UML plugin Structorizer 3.22 Egyéb eszközök: Adobe Photoshop CS5, a textúrák létrehozásához Autodesk 3ds max, a 3D objektum elkészítéséhez Felhasznált technológiák és elméletek Java A program teljes egészében Java nyelven lett írva, ennek egyik oka a nyelv függetlensége: a Java kódot bármely rendszeren, ahol a JVM telepítve van, futtatni tudjuk, függetlenül operációs rendszertől, vagy platformtól. Persze ez a program nem mobil eszközökre készült, de az OpenGL használata miatt így is csak megfelelő videokártyával rendelkező gépeken lehet futtatni. A Javaban írt programok könnyen is hordozhatók, esetünkben a játék nem igényel semmiféle telepítést, közvetlenül futtatható a főkönyvtárból, amelyet bárhol elhelyezhetünk a gépünkön. Fontos szempont még a nyelv megbízhatósága, illetve a hozzátartozó ingyenes fejlesztőeszközök, mint például a Netbeans IDE. A Java objektum orientált, ezáltal a kód nem az elvégzendő feladatok alapján, hanem a benne lévő objektumok alapján van csoportosítva, ezáltal rövidebb és átláthatóbb illetve tartósabb kódokat készíthetünk. OpenGL Az OpenGL (Open Graphics Library) egy részletesen kidolgozott szabvány, melyet a Silicon Graphics nevű amerikai cég fejlesztett ki 1992-ben. Olyan API-t takar, amely segítségével egy egyszerű, szabványos felületen keresztül valósítható meg a grafikus
22 kártya kezelése és a háromdimenziós grafika programozása. Az interfész több ezer különböző függvényhívásból áll, melynek segítségével a programozók szinte közvetlenül vezérelhetik a grafikus kártyát, segítségükkel 3 dimenziós alakzatokat rajzolhatnak ki, és a kirajzolás módját szabályozhatják. Széleskörűen használják a számítógéppel segített tervezésben/gépészetben/gyártásban, a virtuális valóság létrehozatalában, a tudományos élet különböző területein, és szimulátorok esetében is. Ezenkívül használják a különféle videojátékokban, Windows, Linux, BSD platformokon (ez a,,desktop avagy hagyományos OpenGL) illetve mobiltelefonokon, játékkonzolokon (OpenGL ES). ([7]) JOGL A JOGL (Java OpenGL) egy olyan javás csomag, amely OpenGL-es utasítások használatát teszi lehetővé, alkalmazható vele a legtöbb C-ben is használható hagyományos GL utasít, illetve a GLU utasítások is. A GLUT utasítások azonban nem használhatók windowsos környezetben, ugyanis a Javanak meg van a saját ablakkezelő rendszere (awt, swing). Az utasítások használatához Javaban előbb létre kell hoznunk egy GL objektumot, amely objektum metódusain keresztül végezhetünk OpenGL-es hívásokat. A GL objektumot egy GLCanvas kontextusában kell meghívnunk. JAMA OpenGlben a forgatásokat a glrotated(double angle, double x, double y, double z) függvénnyel adhatjuk meg, ennek első paramétere a forgatás szöge, a következő paraméter, pedig az egyes tengelyeken való forgatások mértékét határozza meg. A függvény használatakor az OpenGL létrehoz egy forgatási mátrixot, amellyel beszorozza az éppen aktuális mátrixot, esetünkben az egyes háromdimenziós objektumok modellmátrixát. A modellmátrixot elmentjük, hogy az objektum legközelebb már elforgatva jelenjen meg, azonban a forgatással az X, Y, Z tengelyek is elfordulnak, ezáltal egy újabb forgatás esetén már az új X, Y, Z tengelyek körül fog az objektumunk mozogni, ami nem a szükséges mozgatást eredményezi
23 Egy megoldás lehetne, hogy minden új forgatás esetén elvégezzük az eddigi forgatásokat, az új információkat is belevéve, sorban az X, Y, Z tengelyeken, így az objektum megfelelően lenne elforgatva, ám a forgatások sorrendje sem mindegy, ugyanis egy kockát kétszer balra, majd felfelé elforgatva nem ugyanazt az állapotot kapjuk, mintha egyszer balra, egyszer fel, majd egyszer balra forgatnánk el. A probléma kiküszöbölésére a forgatás előtt, a forgatási mátrixot megszorozzuk a modellmátrix inverzével, az így kapott új mátrixszal beszorozva már megfelelően tudjuk a kockáinkat elforgatni. Ezen számítások elvégzésére ezért mátrixokra van szükségünk, amit az alap Java jdk nem tartalmaz. A JAMA (Java Matrix) egy javás csomag, amely az alapvető lineáris algebrai műveletek megvalósítását szolgálja. A csomag segítségével létrehozhatunk mátrixokat és ezeken módosításokat végezhetünk: inverz számítás, mátrixszorzás, skalárral való szorzás, LU -, QR felbontás, stb. Képfeldolgozó A programhoz a képek feldarabolását az egyes textúrákhoz egy külön programmal végeztem, a program továbbfejlesztéséhez (saját képek megadása), ezt fel lehet használni. A program a bemenetként megadott képeket 9 részre vágja, és a darabokat 9 külön mappában helyezi el..obj kiterjesztés Az obj kiterjesztés a Wavefront Technologies által fejlesztett fájl formátum, amelyben háromdimenziós objektumok adatait tárolhatjuk. A fájl sorai v, vt, vn vagy f betűvel (betűkkel) kezdődhetnek, ezek rendre pont koordináták, felületi normális adatai, textúra koordináták, illetve az egyes primitívek pontjainak sorrendje. Az oldaldefiníciónak négyféle megadási módja van: Vertex: f v1 v2 v3... Vertex/normal
24 f v1/vt1 v2/vt2 v3/vt3... Vertex/normal f v1//n1 v2//n2 v3//n3... Vertex/texture/normal f v1/vt1/vn1 v2/vt2/vn2 v3/vt3/vn3... Az elméletre szükség volt a programban, ugyanis az objektumbeolvasást megírt metódusok híján nekem kellett elkészítenem. [(8)] Gömbi polárkoordináta rendszer A gömbfelület pontjait a felületi koordináta-rendszerekben adhatjuk meg. A koordináták mérőszáma a kör alakú koordinátavonalak ívének középponti szöge. Az elméleti vizsgálatokra használt rendszerekben ezeket a szögeket ívmértékben (radián) mérjük. Az R sugarú gömb centrumát derékszögű rendszer origójába helyezve adjuk meg a felületi pontok térbeli helyzetét. A [λ;β] koordináta-rendszer konstans vonalait a Descartes koordináta-rendszer Oz tengelyére illeszkedő illetve a rá merőleges síkok metszik ki a gömbfelületből. A pólus = (0; 0; R)= [?;0]. A λ felületi koordináta határozatlan. A koordináták értékkészlete: λ:= 0..2π; β:= 0..π. ([9]) Az egyes koordinátákat a következőképpen adhatjuk meg: x = R * sin(β) * cos(λ) y = R * sin(β) * sin(λ) z = R * cos(β). A programszövegben használt konvenciók A programban használt konvenciók a Java nyelvvel megegyezőek, azaz: o A változónevek beszédesek, utalnak a szerepükre. Minden változónév kisbetűvel kezdődik, majd új szó esetén az új szó első betűje nagy
25 o A metódusnevek beszédesek, utalnak a szerepükre. Minden metódusnév kisbetűvel kezdődik, majd új szó esetén az új szó első betűje nagy. o Az osztály adattagjait beállító metódusok set előtaggal kezdődnek, az azokat lekérők get előtaggal, valamint boolean típusú változók esetén has, vagy is előtaggal. o Az osztály konstruktorok nagybetűvel kezdődnek. o Az osztályok neve nagybetűvel kezdődik, és minden új szó esetén a szó első betűje nagy. A nevek utalnak a szerepükre. o A konstans változók minden betűje nagy, új szó esetén _ (alsóvonal)-al vannak elválasztva. o a programszövegben a változók, osztályok, metódusok nevei angolul vannak. A program fázisai 6. ábra Leírás: Kezdési fázis: A játék indításkor Kezdési fázisban van, ebben az állapotban a kockák helyköz nélkül helyezkednek el egymástól, nincsenek információk a játékmenetről, a kockákat nem lehet se kijelölni, sem mozgatni, a Mentés menüpont le van tiltva
26 Keverési fázis A játék indításakor a kockákat megkeveri a program, ebben a fázisban a Betöltés és a Mentés menüpontok is le vannak tiltva, a státuszinformációk alapállapotot mutatnak. A kockákat nem lehet sem mozgatni sem kijelölni, új játékot sem indíthatunk. Játék fázis Játék fázisban a felhasználó, vagy a számítógép feladata kirakni a kockákat, a forgatásokról, az eltelt időről és a lépésszámról már kapunk információkat, Játék fázisban már indíthatunk új játékot a Betöltés menüponttal, vagy a Start gombbal, Egyéni módban menthetünk is. Nyerési fázis Ha a kockák a játékindítás után megfelelő állapotba kerülnek, a program leállítja az időmérőt, a lépésszámlálót, letiltja a billentyűzetet és a kockákat egymástól helyköz nélkül helyezi el. Kijelöléseket és forgatásokat sem végezhetünk. Új játékot indíthatunk ebből a fázisból
27 Használati esetek 7. ábra Leírás Új játékot indít Új játék indítása esetén a program Keverési fázisba lép, majd játékfázisba, az előzetesen kiválasztott játékmódnak megfelelően
28 Kirakandó képet beállít Játék indítása előtt a felhasználó kiválasztja a kirakandó képet, a játék indításakor a Kirakandó kép panelen, a kiválasztott kép jelenik meg. Játékmódot beállít Játék indítása előtt a felhasználó kiválasztja a kívánt játékmódot, a játék indításakor ebben a módban fog a játékfázis futni. Információt lekérdez Az Információk menüben az egyes menüpontokat kiválasztva egy új ablakot jelenít meg a program, a megfelelő információval, az ablakon az OK, vagy az X gombra kattintva eltűntethetjük azt. Ha a megfelelő információt tartalmazó fájl nem létezik, a program hibaüzenetet dob egy új ablakban. Ment A Fájl menüből a Mentés menüpontot kiválasztva a program felkínál egy fájldialógust, itt a felhasználó beír egy új fájlnevet, vagy kiválaszt egy fájlt, amelybe a mentést szeretné elvégezni. A mappák között nem lehet navigálni, csak a program save könyvtárába tudunk új fájlt létrehozni. A Ment gombra kattintva megtörténik a mentés, a Mégse gombra kattintva nem történik semmi. Betölt A Fájl menüből a Betöltés menüpontot kiválasztva a program felkínál egy fájldialógust, itt a felhasználó beír egy új fájlnevet, vagy kiválaszt egy fájlt, amelyből a betöltést szeretné elvégezni. A mappák között nem lehet navigálni, csak a program save könyvtárából tudunk betöltést végezni. A Betölt gombra kattintva megtörténik a betöltés, a Mégse gombra kattintva nem történik semmi. Hibás fájl esetén a program feldob egy hibaüzenetet új ablakban
29 Kilép A Fájl menü kilépés menüpontját kiválasztva megjelenik egy ablak, melyben a felhasználó eldönti, hogy valóban ki akar-e lépni. Az Igen gombra kattintva a program működése leáll, a Nem gomb hatására nem történik semmi. 8. ábra Kockát forgat A felhasználó a billentyűzet segítségével a kockákat tudja forgatni, ennek hatására a kijelölt kockahármas a megfelelő irányba fordul. Ha a kockák helyes állapotba kerülnek, a játéknak vége
30 Kockát kijelöl A billentyűzet segítségével a felhasználó kiválaszt egy kockahármast, ekkor a megfelelő kockák a játéktéren pirosas színűvé változnak. Nézőpontot vált Az egér görgőjének segítségével a felhasználó változtathatja a nézőpont távolságát, ekkor a középső kocka közepére fókuszáló nézett pont közeledik vagy távolodik. Az egér mozgatásával, a jobb egérgomb lenyomása mellett a nézőpontot forgatni is lehet a nézett pont körül, a nézőpont ekkor átkerül a megfelelő pontba. A pontok egy a nézőpont és a nézett pont távolságú gömböt alkotnak a nézett pont középpontjával, a gömb tetején lévő pontba nem lehet eljutni. A program felépítése A program 7 fő csomagra bontható. mesekocka3d csomag 9. ábra - az osztályok közti statikus kapcsolatok A program főcsomagja, a többi hat csomag ennek az alcsomagja
31 10. ábra - mesekocka3d csomag osztályai Main.java Ősosztály: Object Az osztály egyetlen feladata, hogy létrehozzon egy új MainFrame objektumot, ezáltal elindítsa a programot
32 mesekocka3d.userinterface csomag A csomag tartalma minden olyan osztály, amely lehetőséget biztosít a felhasználónak módosítások végrehajtására a programon. Errormessage.java Ősosztály: JOptionPane 11. ábra - mesekocka3d.userinterface csomag osztályai
33 Az egyes hibaüzenetek megjelenítésére szolgál, általában hiányzó fájlokról ad információt, nem függ egyéb osztálytól, akárhol meghívható a kódban, az üzenet az ablakban lévő OK gombbal eltűntethető. Konstruktor: ErrorMessage(String messagestr, boolean exitornot) messagestr: a kiírni kívánt hibaüzenetet adhatjuk meg. exitornot: igaz érték esetén leállítja a program futását. ExitMessage.java Ősosztály: JOptionPane A menü Kilépés funkciójának, illetve a főablak X gombjának megnyomásakor felugró ablak, ahol a felhasználó eldöntheti, hogy valóban ki szeretne-e lépni. Az ablak tartalma egy Igen és egy Nem gomb, alapból a Nem van kiválasztva. Credits.java Ősosztály: JOptionPane Egy új ablakot hoz létre az ősosztály showmessagedialog() metódusának felhasználásával, a készítőkről ad információt. Az ablak tartalma egy OK gomb, erre kattintva eltűntethetjük azt. FileChooser.java Ősosztály: JFileChooser Az Egyéni módban elkezdett játékok betöltéséhez, illetve mentéséhez biztosít grafikus felhasználói felületet. Fontosabb adattagok: serializator: ObjectSerializator A mentett állapotok fájlba írását és onnan való beolvasását végzi el. Fontosabb metódusok:
34 load(): SerializableObject A mentett fájlban található adatokat adja vissza, a serializator segítségével. save(serializableobject serobj): void Kimenti az adatokat a serializator segítségével. setchoosersui( Container container ): void Az osztály konstruktorában hívódik meg, letiltja a dialógusablak egyes elemeit (Új mappa, Egyet fel), hogy a felhasználó csak a save mappába tudjon menteni, illetve onnan betölteni. InfoFromFile.java Ősosztály: JOptionPane Egy új ablakot hoz létre egy OK gombbal, valamint egy adott fájlból beolvasott szöveggel, az ősosztály showmessagedialog() metódusának segítségével. Konstruktor: InfoFromFile(String filepath, boolean totextarea) filepath: a beolvasandó fájl útvonala totextarea: ha igaz, a szöveget egy TextArea-ba teszi bele, amin csúszkák is vannak. Menu.java Ősosztály: JMenuBar A főablak menüsorát adja meg, a Menüben található egyes opciókat hajthatjuk végre, a menüsor két fő menüből áll: a Fájl és az Információk menü. Fontosabb adattagok: saveitem A Fájl menü Mentés eleme, a főablak save() metódusát hívja meg. loaditem A Fájl menü Betöltés eleme, a főablak load() metódusát hívja meg
35 exititem A Fájl menü Kilépés eleme, egy új ExitMessage ablakot dob fel. howtoitem Az Információk menü Játékleírás eleme, egy új InfoFromFile ablakot dob fel, a játék rövid leírásával. highscoreitem Az Információk menü Eddigi eredmények eleme, egy új InfoFromFile ablakot dob fel, amely az eddig eredményeket tartalmazza. creditsitem Az Információk menü Készítők eleme, egy új Credits ablakot dob fel. Fontosabb metódusok setsaveitemenabled(boolean isenabled):void A saveitem csak Egyéni módban engedélyezett, ennek a beállítására szolgál. setloaditemenabled(boolean isenabled):void A loaditem keverés közben nem engedélyezett, ennek a beállítására szolgál. Mainframe.java Az osztály a főablak létrehozásáért felelős, tartalma a háromdimenziós játéktér, a státuszinformációkat, beállításokat tartalmazó interfész, illetve a menüsor is itt található. Konstruktor: MainFrame() A konstruktor hívásakor létrejön egy új ablak a képernyőhöz igazított, 4:3-as arányú méretben, felkerülnek az interfész elemei: a program elindul, kezdőfázisba lép. Fontosabb adattagok: glc: GlCanvas A háromdimenziós játéktér. movesmade: JTextArea
36 A lépésnaplót megjelenítő elem. gamestylescombobox: JComboBox A játékmódválasztó legördülő menü. pictofiniscombobox: JComboBox A kirakandó képet választhatjuk ki ebben a legördülő menüben. winnerstatetochange: int A pictofinishcombobox-ban kiválasztott elem alapján megjegyzi a kirakandó kép által meghatározott kockaállapotot, amely a játék indításakor átadódik a glc-nek. startbtn: JButton A játék indításáért felelős gomb. movenumcaption: JLabel A Lépésszám feliratot jeleníti meg. movenumactual: JLabel Az aktuális lépésszámot rajzolja ki. movenum: int A játék indítása óta megtett lépésszámot tartja számon. timecaption: JLabel Az Eltelt idő feliratot jeleníti meg. timeactual: JLabel Az eltelt időt rajzolja ki. timechanger: TimeChanger Az eltelt időt tárolja, illetve a timeactual kirajzolását frissíti. timer: Timer A timechanger actionperformed() metódusát hívja meg másodpercenként. pictofin: PictureToFinish A Start gomb megnyomása után a legutóbb kiválasztott kirakandó képet jeleníti meg. winscreen: WinScreen Nyert állapotban megjelenít egy képet. randommoves: RandomMovesGenerator
37 A mixeléshez szükséges lépéseket generálja le. stepsmade: Vector<int[]> A mentéshez tárolja a mixelés lépéseit és az eddig megtett lépéseket. mixerth: MixerThread A játék indítása után a keverésért felelős új szál. MixerThread osztály: Egy privát osztálya a MainFrame osztálynak, a Thread-ből származik. Bemenetként egy int[][] moveslist tömböt vár, amely alapján elvégzi a keverés műveletét, ez idő alatt a Start gomb és a menü Betöltés opciója le van tiltva, a keverés után elindítja az időmérőt. treealgorithm: TreeAlgorithm A játék Fa algoritmus módban való kirakását valósítja meg. bruteforce: BruteForce A játék Brute Force módban való kirakását valósítja meg. Fontosabb metódusok: reset(): void Letiltja a billentyűzetet, eltűnteti a kijelöléseket, törli a stepsmade összes elemét, letiltja a Fájl menü Mentés elemét, ha van futó gép általi kirakás, akkor letiltja azt, vár 250 milliszekundumot, hogy az esetleges folyamatban lévő forgatások végbemenjenek. A kockákat alapállapotba helyezi, a lépésnaplót, a lépésszámlálót, az időmérőt nullázza. start(): void Egyéni játékmód indításához használt metódus. Meghívja a reset() metódust, beállítja a kirakandó képet, és jelzi a glc-nek, hogy melyik állapotot kell kirakni, majd elindít egy keverést. individual(): void Egyéni játékmód indítását végzi: megvárja a keverés végét, majd engedélyezi a billentyűzethasználatot, beállítja a kijelölést az első oszlopra, engedélyezi a Fájl menü Mentés elemét. Ezt egy új szálon teszi, hogy a keverés folyamata látszódjon a képernyőn. bruteforce(): void
38 Brute Force játékmód indítását végzi egy új szálon: megvárja a keverés végét, létrehoz egy új BruteForce objektumot, majd meghívja annak solvegame(final int statetobesolved) metódusát. treealgorithm(): void Megvárja a keverést, majd az adott állapotokat átadva létrehoz egy új TreeAlgorithm osztályt, majd meghívja annak solvegame(mainframe mf) metódusát. save(): void Az adott állás információit belerakja egy új SeralizableObject-be, majd feldob egy save dialógust. load(): void A betöltés folyamatát végzi. Feldob egy új load dialógust, amely visszatérési értékét belehelyezi egy új SerializeableObjectbe. Ha a felhasználó választott ki fájlt, akkor meghívja a reset() metódust, majd elindít egy új keverést, a beolvasott információk alapján beállítja a lépésszámot, a lépésnaplót, az eltelt időt, elindítja az időmérőt. Ezek után beállítja a kirakandó képet, és jelzi a glcnek, hogy melyik állapotot kell kirakni, majd elindít egy új játékot egyéni módban. addhighscore(string strtofile): void A kapott strtofile szöveget beírja az externals/highscores.txt fájlba. Ha a fájl nem található hibaüzenetet dob. winstate(): void A glc változó segítségével eltolja a kockákat, hogy ne legyen köztük térköz, leveszi a kijelöléseket, letiltja a billentyűzetet, leállítja az időmérőt, megjeleníti a winscreen-t, meghívja az addhighscore() metódust a kapott eredményekre
39 mesekocka3d.graphics csomag Elemei a kétdimenziós grafikát megjelenítő osztályok. 12. ábra - mesekocka3d.graphics csomag osztályai Processing.java Ősosztály: JFrame Megjelenít egy új JFrame-et a játéktér közepén, melyen egy gif animációt játszik le folyamatosan, az ablak nem zárható be, nem méretezhető át, amíg jelen van, a főablak blokkolva van. Fontosabb adattagok: mainframe: MainFrame A leblokkolandó főablak. Fontosabb metódusok: dispose(): void Újra engedélyezi a főablakot, majd meghívja az ős dispose() metódusát önmagára. Screen2D.java Ősosztály: JPanel Egy bemenetként megadott képet új panelként megjelenítő absztrakt osztály
40 Fontosabb adattagok: imgtodraw: BufferedImage A megjelenítendő kép. Fontosabb metódusok: setimg(string imgsrc): void Beállítja a megjelenítendő képet a megadott elérési út alapján. Winscreen.java Ősosztály: Screen2D A nyerési fázisban megjelenő képet rajzolja ki a játéktér közepére. PictureToFinish.java Ősosztály: Screen2D A játéktéren a kirakandó képet mutatja kicsiben, a bal felső sarokba, egy 2 képpontos szegéllyel. A főablak kezelőfelületén megadható célkép legördülő menü hatására a megjelenítendő kép változik, a játék elindítása után. Fontosabb metódusok: showpic(): void Egy új szálon elindítva vár egy másodpercet, majd megjeleníti a képet három másodpercig, majd eltűnteti azt
41 mesekocka3d.threedimension csomag Az egyes háromdimenziós megjelenítéshez szükséges osztályokat tartalmazza. 13. ábra - mesekocka3d.threedimension csomag osztályai Mesh.java Ősosztály: Object Beolvas egy obj fájlt, majd menti annak adatait. Konstruktor:
42 Mesh(String meshfilepath) meshfilepath: A beolvasandó objektum elérési útvonala. Entity.java Ősosztály: Object Megjelenítendő háromdimenziós objektum. Konstruktor: Entity(Mesh mesh, String texturepath) mesh: egy mesh fájl, ami megadja az objektumra vonatkozó adatokat. texturepath: az objektum textúráját tartalmazó fájl elérési útja. Statikus adattagok: ROTATION_TABLE: int[][] Az új állapotok meghatározásához szükséges táblázat, megadja, hogy mely állapotból milyen irányú forgatással melyik új állapotba jut az objektum. RED_BLUE_TABLE: int[][] Az állapotokhoz tartozó színeket adja meg. LEFT: int A balra irányt reprezentálja, értéke 0. RIGHT: int A jobbra irányt reprezentálja, értéke 1. UP: int A fel irányt reprezentálja, értéke 2. DOWN: int A le irányt reprezentálja, értéke 3. Fontosabb adattagok: model: doube[] Az objektum modellmátrixa, betöltéskor a 4x4-es egységmátrix
43 state: int Az objektum állapotát tárolja (0-23). color: int Az objektum színét tárolja (piros = 0, vagy kék = 1). rgb: int[] A kijelölés megjelenítéséhez határozza meg az RGB értékek mértékét. Fontosabb metódusok: paint(): void Elmenti az aktuális, fő világkoordináta rendszert, majd betölt egy újat, az osztály model adattagja alapján, ezután kirajzolja az objektumot, majd visszatölti a mentett fő világ-koordinátarenszert. translate(double tx, double ty, double tz): void A modellmátrix eltolás értékeit állítja be. rotate(double angle, double rx, double ry, double rz): void Forgatási értékeket állít be a modellmátrixon. calculaterotmtx(double x, double y, double z, double angle): Matrix A forgatási transzformációs mátrixot hozza létre, amellyel a modellmátrixot meg kell szorozni. select(): void Az rgb értékeket állítja be, általa az objektum kicsit pirosas lesz. deselect(): void A select() fordítottja, visszaállítja az eredeti rgb értékeket. setstateandcolorbytable(int direction): void A megadott forgatási irány alapján kiválasztja a ROTATION_TABLE-ből, illetve a RED_BLUE_TALBE-ből az egyes értékeket, amelyek a modell új állapotait reprezentálják. GlCanvas.java Ősosztály: GLCanvas A háromdimenziós játékteret megjelenítő osztály, amely megjelenít kilenc kockát
44 Statikus adattagok: EXTENDED_TRANSLATIONS_AND_STARTING_STATES: double[][] A játék indításakor az alapállapotban lévő kockák elhelyezkedését adja meg, már egymástól eltávolodott állapotban. LEFT_COL: int[] Az entities tömbben lévő kockák közül a bal oszlopban lévők indexeit adja meg. CENTER_COL: int[] Az entities tömbben lévő kockák közül a középső oszlopban lévők indexeit adja meg. RIGHT_COL: int[] Az entities tömbben lévő kockák közül a jobb oszlopban lévők indexeit adja meg. UPPER_ROW: int[] Az entities tömbben lévő kockák közül a felső sorban lévők indexeit adja meg. CENTER_ROW: int[] Az entities tömbben lévő kockák közül a középső sorban lévők indexeit adja meg. LOWER_ROW: int[] Az entities tömbben lévő kockák közül az alsó sorban lévők indexeit adja meg. ENTITY_INDEXES: int[][] Az előző hat tömböt tartalmazó tömb. FIRST_COL: int Az ENTITY_INDEXES első elemének indexe. SECOND_COL: int Az ENTITY_INDEXES második elemének indexe. THIRD_COL: int Az ENTITY_INDEXES harmadik elemének indexe. FIRST_ROW: int Az ENTITY_INDEXES negyedik elemének indexe. SECOND_ROW: int Az ENTITY_INDEXES ötödik elemének indexe
45 THIRD_ROW: int Az ENTITY_INDEXES hatodik elemének indexe. Fontosabb adattagok: distance: float A szempozíció távolságát adja meg. eyex: float A szempozíció X koordinátáját adja meg. eyey: float A szempozíció Y koordinátáját adja meg. eyez: float A szempozíció Z koordinátáját adja meg. polargamma: float A szempozíció számításához szükséges gömbi Gamma polárkoordináta. polarbeta: float A szempozíció számításához szükséges gömbi Beta polárkoordináta. actposx: float Az aktuális egérpozíció X koordinátáját tárolja. actposy: float Az aktuális egérpozíció Y koordinátáját tárolja. prevposx: float Az előző egérpozíció X koordinátáját tárolja. prevposy: float Az előző egérpozíció Y koordinátáját tárolja. entities: Entity[] A kirajzolandó kilenc objektumot tartalmazza. winnerstate: int A nyerő állapotot tartalmazza, amelybe a kockákat el kell forgatni. Fontosabb metódusok: init(glautodrawable glad): void
46 Elvégzi a megjelenítéshez szükséges beállításokat (hátlapok eldobása, shadermodel stb.), beállítja a fényeket, létrehozza a kockákat, majd eltolja őket, beállítja a kezdő nézőpont értékeit. display(glautodrawable glad): void Törli a képernyőt, beállítja a nézőpontot, kirajzolja a kockákat. setcamera(gl gl, GLU glu, float distance): void A nézőpont beállítását végzi, a distance, és a két gömbi polárkoordináta alapján (polarbeta, polargamma) beállítja a nézőpont három koordinátáját. rotmultiplecubeslow(int selectionindex, int direction) throws InterruptedException: void Kilenc lépésben elfordítja a selectionindex által meghatározott kockákat direction irányba, 90 fokkal. Ezek után bejegyzést ír a lépésnaplóba, beállítja a kockák új állapotát, felveszi a lépéseket a főablak stepsmade változójába, majd leellenőrzi, hogy a kockák az elérni kívánt állapotban vannak-e. rotmultiplecubequick(int selectionindex, int direction): void Elfordítja a selectionindex által meghatározott kockákat direction irányba egy lépésben, 90 fokkal, majd vár 10 milliszekundumot. setmultiplestateandcolorsbytable(int selectionindex, int direction): void A selecitonindex paraméter által meghatározott kockákra meghívja a setstateandcolorbytable() metódust a direction paraméterrel. void setcubescloser(): void Eltolja a kockákat, hogy ne legyen térköz közöttük. setcubesextendedandstates(): void Minden kockát alapállapotba forgat, helyközökkel köztük, beállítja az állapotukat is alapállapotba. deselectall(): void Az entities összes elemén elvégzi a deselect() műveletet. setselections(int selectionindex): void A bemenő selectionindex paraméter alapján elvégzi a kijelöléseket, az eddig kijelöléseket törli. setmovestext(int selectionindex, int direction): void
47 A főablak lépésnaplójába ír egy bejegyzést. isentitiesright(): void Leellenőrzi az összes kockát, hogy megfelelő állapotban vannak-e, ha igen, meghívja a főablak winstate() metódusát, ezzel a program nyert fázisba ér. mesekocka3d.help csomag A mentéshez, betöltéshez, státuszinformáció megjelenítéséhez, illetve a kockák keveréséhez szükséges segédosztályokat tartalmazza. 14. ábra - mesekocka3d.help csomag osztályai ObjectSerializator.java Ősosztály: Object A mentéshez, illetve a betöltéshez szükséges szerializációs lépéseket végzi. Fontosabb metódusok: tofile(string filepath, SerializableObject serobj): void A megadott fájlelérés alapján a serobj tartalmát menti a fájlba. fromfile(string filepath): SerializableObject
48 A megadott elérési útvonal alapján visszaadja a fájlban lévő szerializált objektumot. SerializableObject.java Ősosztály: Object Mevalósítja: Serializable A mentéshez, illetve a betöltéshez szükséges információkat tárolja. Fontosabb adattagok: stepsmade: Vector<int[]> A mixelés és az utána elvégzett forgatások indexeit és irányait tárolja. time: long A kezdés óta eltelt időt tárolja. steps: int A kezdés óta megtett lépéseket tárolja. winnerstate: int A kezdéskor beállított kirakandó képhez tartozó állapot. steptexts: int A lépésnapló szövegét tárolja. RandomMovesGenerator.java Ősosztály: Object A játék elindulásakor a mixelés lépéseit határozza meg. Forgatandó kockahármasok indexeit, illetve forgatási irányokat határoz meg. Statikus adattagok: TIMES: int A generálandó véletlen lépések számát adja meg. Fontosabb adattagok: moves: int[][]
49 A kockahármasok indexeit és az irányokat tárolja. Fontosabb metódusok: generate: int[][] TIMES számú elemet generál a moves tömbbe, majd visszatér azzal. TimeChanger.java Ősosztály: Object Megvalósítja: ActionListener A főablakon megjelenő eltelt idő változtatásához szükséges osztály. Fontosabb adattagok: time: long A kezdés óta eltelt időt tárolja. labeltoset: JLabel A főablak időt kirajzoló címkéjét tárolja. Fontosabb metódusok: actionperformed(actionevent e): void Megnöveli a time értékét 1000-el, formázza, majd átadja a labeltoset-nek, amely kirajzolja az időt. reset(): void Visszaállítja a time értékét 0-ra
50 mesekocka3d.algorithms csomag A gép általi kirakásokhoz szükséges osztályok. 15. ábra - mesekocka3d.algorithms csomag osztályai BruteForce.java Ősosztály: Object A játéktér (glc) objektumait forgatja addig, amíg helyes állapotba nem kerülnek. Fontosabb adattagok: terminated: boolean Indításkor az értéke hamis, ha igazzá válik, a SolveGame() metódus működése megszakad. Fontosabb metódusok: solvegame(int statetobesolved): void
51 Elvégzi a megfelelő forgatásokat, a bemenetként kapott állapotba hozza a kockákat. makerotate(int selectionindex, int direction) throws InterruptedException: void Megvizsgálja, hogy a terminated értéke igaz-e, ha nem, elvégzi a forgatást a megadott kockákon, a megadott irányba. terminate(): void A terminated értékét igazra állítja. Node.java Ősosztály: Object Egy gráf csúcsát megvalósító osztály, a Fa algoritmus használatához. Statikus adattagok: INDS_AND_DIRS: int[][] A lehetséges forgatásokhoz tartozó kockák indexeit, és a forgatási irányokat tartalmazza. Fontosabb adattagok: states: int Az adott forgatás után a hat kocka állapotait 24-es számrendszerben tartalmazó változó. rots: int[] A kockákon a kiinduló állapotból elvégzett forgatások indexeit és irányát tartalmazó tömb. children: Vector<Node> A csúcs gyerekeit tartalmazza. depth: int A csúcs mélységét adja meg. Fontosabb metódusok: makenewstates(int[] inandielem): int
52 A kapott INDS_AND_DIRS egy eleme alapján a megfelelő kockák állapotát írja át, majd menti vissza 24-es számrendszerbe, ezzel az értékkel tér vissza, ami a csúcs gyerekének állapota lesz. makenewrots(int index, int dir): int[] A saját rots tömbjét írja hozzá a visszatérési értékhez, majd ehhez hozzáveszi az index és dir paramétereket, mint az új forgatás adatait. makechildren(): void Létrehozza a csúcs új gyerekeit. getstateelement(int index): int A 24-es számrendszerben lévő state változóból az index-edik elemet adja meg. Iterator.java Ősosztály: Object Egy gráfon való végighaladást teszi lehetővé, a Fa algoritmusban való gráfmetszet kereséshez tárolja a két gráfot. Fontosabb adattagok: start: HashMap<Node, int[]> A kezdőcsúcsból indított gráf elemeit tartalmazza. end: HashMap<Node, int[]> A végcsúcsból indított gráf elemeit tartalmazza. Fontosabb metódusok: tostart(node n): void A kapott csúcsból indulva rekurzívan behelyezi a csúcsot és annak gyerekeit a start tárolóba, a csúcsot magát kulcsként, a rots tömbjét értékként. toend(node n): void A kapott csúcsból indulva rekurzívan behelyezi a csúcsot és annak gyerekeit az end tárolóba, a csúcsot magát kulcsként, a rots tömbjét értékként
53 RoadCalculater.java Ősosztály: Object Két gráf alapján megkeresi azok metszetét, majd menti az egyikből a másikba vezető utat egy vektorba. Az út tartalma a kezdőcsúcstól a végcsúcsig a forgatások indexe és iránya. Konstruktor: RoadCalculater(int[] startstate, int[] endstate) startstate: a kezdőállapotokat tartalmazó tömb. endstate: a végállapotokat tartalmazó tömb A kapott állapotokat átszámítja 24-es számrendszerbe, létrehoz két gráfot a két kezdőcsúcs alapján, egy iterator segítségével behelyezi őket a tárolókba, majd megkeresi a metszetet, végül menti az eredményt a road változóba. Fontosabb adattagok: road: Vector<int[]> Az utat tartalmazó vektor, az egyes elemek: egy forgatási indexet és egy forgatási irányt tartalmazó tömb. Fontosabb metódusok: tovector (int[] temprot): void A road vektorba behelyezi a kapott temprot értékeit. tovectorreverse(int[] temprot): void A road vektorba behelyezi a kapott temprot értékeit, fordított sorrendben. toscale(int[] temparray): int A kapott tömb értékeit átszámítja 24-es számrendszerbe. TreeAlgorithm.java Ősosztály: Object Fontosabb adattagok:
54 terminated: boolean Indításkor az értéke hamis, ha igazzá válik, a SolveGame() metódus működése megszakad. start: int[] A kezdőállapotot tartalmazó tömb, amelyet majd a RoadCalculator objektum kap meg. end: int[] A végállapotot tartalmazó tömb, amelyet majd a RoadCalculator objektum kap meg. bruteforce: BruteForce A felső 6 kocka kirakása után az alsó hármat BruteForce módban számoljuk ki. Fontosabb metódusok: solvegame(mainframe mf): void Egy RoadCalculator segítségével létrehozza az utat, ami alapján aztán végrehajtja a forgatásokat. Ezek után a fennmaradó 3 kockát egy Brute Force módon rakja ki. makerotate(int selectionindex, int direction) throws InterruptedException: void Ha a terminated értéke hamis, akkor elvégi a kapott adatok alapján a forgatást. terminate(): void A terminated értékét igazra állítja, ha a bruteforce éréke nem null, akkor ennek is meghívja a terminated() metódusát
55 mesekocka3d.adapters csomag Az egyes bemeneti eszközök kezelését megvalósító osztályok. 16. ábra - mesekocka3d.adapters csomag osztályai MyKeyAdapter.java Ősosztály: KeyAdapter A játéktér gombeseményeit kezeli: kiválasztja a megfelelő objektumhármasokat, elvégzi a forgatásokat az objektumokon. Fontosabb adattagok: selectionindex: int A kiválasztott objektumhármasok indexe. lastkeypress: long Az utolsó gombnyomás idejét tárolja, ha azóta nem telt el 250 milliszekundum, akkor nem lehet új forgatást végezni. isabletomove: boolean Ha értéke hamis, nem lehet használni a billentyűzetet a játéktéren. Fontosabb metódusok: keypressed(keyevent e): void A megnyomott billentyű alapján, mely az e változóban tárolódik, az egyes kijelöléseket és forgatásokat végzi el. A forgatások új szálon indulnak
56 MyMouseAdapter.java Ősosztály: MouseAdapter A játéktér egéreseményeit kezelő osztály. Fontosabb metódusok: mousepressed(final MouseEvent e): void A jobb egérgomb lenyomásakor elmenti az egérkurzor aktuális pozícióját. mousedragged(mouseevent e): void A jobb gomb lenyomása után az akkori pozíciótól való eltérés alapján átállítja a játéktér nézőpontjának gömbi koordinátáit. mousewheelmoved(mousewheelevent e): void Az egér görgőjének hatására a játéktér nézőpontjának távolságát növeli vagy csökkenti. MyWindowAdapter.java Ősosztály: WindowAdapter A főablak X gombjára való kattintást kezeli le, ekkor feldob egy új ExitMessage ablakot
57 Az egyes osztályok kapcsolata működés közben 17. ábra - forgatás menete Leírás: a felhasználó elforgat egy kockahármast valamely irányba a billentyűzet segítségével, ha a forgatás után a kockák megfelelő állapotban vannak, akkor nyer
58 18. ábra - betöltés menete Leírás: a felhasználó betölt egy mentett állományt, ha hibás fájlnevet ír be, akkor a program ezt hibaüzenettel jelzi. Továbbfejlesztési lehetőségek Az alap hat darab kép helyett a felhasználó is kiválaszthatná a számára kedvezőbb képeket, ehhez szükség van a képvágó projektre, valamint egy automatikus textúrakészítőt is meg kellene írni. Új menü felvétele a kezelőgombok beállítására, például függőleges irányú invertálható egérmozgás, az indexválasztó, forgatógombok konfigurálása, majd ezt el is kéne menteni, hogy a következő indításnál ne kelljen újra beállítani. Hangok betétele a forgatásokhoz, a mixeléshez, a játék kezdésének, végének jelzésére. A Kirakandó kép panel lekicsinyítésének lehetősége. A játéktér színesebbé tétele, például dombos, füves háttérrel, Nap objektum felvétele, amely fényt sugároz
59 Közösségi oldalakon lehetőség az eredmények megosztására, onnan való lekérdezés. Tesztelés A tesztelés egy szoftver esetében nagyon fontos, a fejlesztés 80%-át a tesztelés teszi ki. A célja a hibák felfedezése és azok javítása. Interfész tesztelése Mentés menüpont. A következő táblázat az egyes játékmódok egyes fázisaiban a menüpont engedélyezettségét mutatják. Egyéni Brute Force Fa algoritmus Betöltés után Kezdési fázis Letiltva Keverési fázis Letiltva Letiltva Letiltva Letiltva Játék fázis Engedélyezve Letiltva Letiltva Engedélyezve Nyerési fázis Letiltva Letiltva Letiltva Letiltva A következő táblázat a menüponthoz kapcsolódó gombok használatát mutatja. Mit tesztelünk Elvárt eredmény Értékelés A menüpont használata Egyéni módban, az X gombra kattintva. A menüpont használata Egyéni módban, a Mégse gombra kattintva. A menüpont használata Egyéni módban, a Ment gombra kattintva, új fájlnevet beírva. A menüpont használata Egyéni módban, a Ment gombra A program feldobja a mentési ablakot, amely a gomb hatására eltűnik. A program feldobja a mentési ablakot, amely a gomb hatására eltűnik. A program feldobja a mentési ablakot, majd a mentés megtörténik. A program feldobja a mentési ablakot, majd a mentés
60 kattintva, egy a save mappában lévő elemet kiválasztva. A menüpont használata betöltés után, az X gombra kattintva. A menüpont használata betöltés után, a Mégse gombra kattintva. A menüpont használata betöltés után, a Ment gombra kattintva, új fájlnevet beírva. A menüpont használata betöltés után, a Ment gombra kattintva, egy a save mappában lévő elemet kiválasztva. megtörténik, amely felülírja a kiválasztott fájlt. A program feldobja a mentési ablakot, amely a gomb hatására eltűnik. A program feldobja a mentési ablakot, amely a gomb hatására eltűnik. A program feldobja a mentési ablakot, majd a mentés megtörténik. A program feldobja a mentési ablakot, majd a mentés megtörténik, amely felülírja a kiválasztott fájlt. Betöltés menüpont A következő táblázat az egyes játékmódok egyes fázisaiban a menüpont engedélyezettségét mutatják. Egyéni Brute Force Fa algoritmus Betöltés után Kezdési fázis Engedélyezve Keverési fázis Letiltva Letiltva Letiltva Letiltva Játék fázis Engedélyezve Engedélyezve Engedélyezve Engedélyezve Nyerési fázis Letiltva Engedélyezve Engedélyezve Engedélyezve A következő táblázat a menüponthoz kapcsolódó gombok használatát mutatja, a tesztelés minden játékmódra megtörtént
61 Mit tesztelünk Elvárt eredmény Értékelés A menüpont használata az aktuális játékmódban, módban, az X gombra kattintva. A menüpont használata az aktuális játékmódban, a Mégse gombra kattintva. A menüpont használata az aktuális játékmódban, a Betölt gombra kattintva, új, létező fájlnevet beírva. A menüpont használata az aktuális játékmódban, a Betölt gombra kattintva, új, nem létező fájlnevet beírva. A menüpont használata az aktuális játékmódban, a Betölt gombra kattintva, egy a save mappában lévő helyes tartalmú elemet kiválasztva. A menüpont használata az aktuális játékmódban, a Betölt gombra kattintva, egy a save mappában lévő helytelen tartalmú elemet kiválasztva. A program feldobja a betöltési ablakot, amely a gomb hatására eltűnik. A program feldobja a betöltési ablakot, amely a gomb hatására eltűnik. A betöltés megtörténik. A program hibaüzenetet dob nem létező fájlról. A betöltés megtörténik. A program hibaüzenetet dob helytelen tartalmú fájlról
62 Kilépés menüpont Mit tesztelünk Elvárt eredmény Értékelés A beleegyező ablak A menüpont használata az X gombra kattintva. A menüpont használata a Nem gombra kattintva. A menüpont használata az Igen gombra kattintva. megjelenik, majd a gomb hatására eltűnik, a program fut tovább. A beleegyező ablak megjelenik, majd a gomb hatására eltűnik, a program fut tovább. A beleegyező ablak megjelenik, majd a gomb hatására leáll a program. Játékleírás menüpont Mit tesztelünk Elvárt eredmény Értékelés A menüpont használata az X gombra kattintva. A menüpont használata az OK gombra kattintva. Az információs ablak megjelenik, a gomb hatására eltűnik. Az információs ablak megjelenik, a gomb hatására eltűnik. Eddigi eredmények menüpont Mit tesztelünk Elvárt eredmény Értékelés A menüpont használata az X gombra kattintva. Az információs ablak megjelenik, a gomb hatására eltűnik
63 A menüpont használata az OK gombra kattintva. A menüpont görgetősávjának használata. Az információs ablak megjelenik, a gomb hatására eltűnik. A görgetés használatával lentebbi, vagy fentebbi sorok jelennek meg. Készítők menüpont Mit tesztelünk Elvárt eredmény Értékelés A menüpont használata az X gombra kattintva. A menüpont használata az OK gombra kattintva. Az információs ablak megjelenik, a gomb hatására eltűnik. Az információs ablak megjelenik, a gomb hatására eltűnik. Játékmódválasztó legördülő menü Mit tesztelünk Elvárt eredmény Értékelés A menü legördül, majd a Az első elem kiválasztása. A második elem kiválasztása. A harmadik elem kiválasztása. második kattintásra az Egyéni felirat jelenik meg benne. A menü legördül, majd a második kattintásra a Brute Force felirat jelenik meg benne. A menü legördül, majd a második kattintásra a Fa algoritmus felirat jelenik meg benne
64 Kirakandó kép legördülő menü Mit tesztelünk Elvárt eredmény Értékelés A menü legördül, majd a Az első elem kiválasztása. A második elem kiválasztása. A harmadik elem kiválasztása. A negyedik elem kiválasztása. Az ötödik elem kiválasztása. A hatodik elem kiválasztása. második kattintásra az Courage felirat jelenik meg benne. A menü legördül, majd a második kattintásra a Madagascar felirat jelenik meg benne. A menü legördül, majd a második kattintásra a Monster Inc felirat jelenik meg benne. A menü legördül, majd a második kattintásra az Family Guy felirat jelenik meg benne. A menü legördül, majd a második kattintásra a Lion King felirat jelenik meg benne. A menü legördül, majd a második kattintásra a Garfield felirat jelenik meg benne
65 Start gomb A következő táblázat a különböző játékmódokban, különböző képeket kiválasztva azon teszt eredményét mutatja, hogy a megfelelő játékmódban indul-e el a játék, illetve a megfelelő kirakandó kép jelenik-e meg a Kirakandó kép panelen. Egyéni Brute Force Fa algoritmus Courage Madagascar Monter Inc. Family Guy Lion King Garfield Időmérő A következő táblázat az időmérő működését mutatja az egyes módokban indított játékok fázisaiban. Egyéni Brute Force Fa algoritmus Betöltés Kezdési fázis Nem fut - Keverési fázis Nem fut Nem fut Nem fut Nem fut Játék fázis Fut Fut Fut Fut Nyerési fázis Nem fut Nem fut Nem fut Nem fut
66 Egyéb tesztesetek. Mit tesztelünk Elvárt eredmény Értékelés Betöltés esetén megfelelő-e a mutatott idő Start gomb megnyomásakor a mutatott idő. Betöltés utána keverési fázisban a számláló megáll, majd keverés után a mentett állapottól fut tovább. A számláló nullázódik. Lépésszámláló A következő táblázat a számlálónak az egyes játékmódokban forgatásokra való növekedés teszteseteinek eredményét mutatja. Egyéni Brute Force Fa algoritmus Betöltés Lépésnapló A következő táblázat a Lépésnapló az egyes játékmódokban forgatásokra való helyes információ kiírás teszteseteinek eredményét mutatja. Egyéni Brute Force Fa algoritmus Betöltés Hibaüzenet Mit tesztelünk Elvárt eredmény Értékelés X gomb használata nem termináló hibaüzeneten. OK gomb használata nem termináló A hibaüzenet eltűnik, a program fut tovább. A hibaüzenet eltűnik, a program fut tovább
67 hibaüzeneten. X gomb használata termináló hibaüzeneten. OK gomb használata termináló hibaüzeneten. A hibaüzenet eltűnik, a program működése leáll. A hibaüzenet eltűnik, a program működése leáll. A főablak Mit tesztelünk Elvárt eredmény Értékelés X gomb használata. Kis méret gomb használata. Az ablak mozgatása. Nagy méret gomb használata. Megjelenik a Kilépés beleegyező dialógus A program a tálcára kerül. Mozog az ablak a képernyőn. A gomb le van tiltva. A tálcára tétel és az onnan való visszanagyítás gyors, a megjelenés rendben. Az újrarajzolás gyors, a megjelenés rendben. Hiányzó fájlok tesztelése A programhoz tartozó externals mappa hiányainak tesztelése. Mit tesztelünk Elvárt eredmény Értékelés obj/quadcube.obj fájl hiánya pics/win.jpg fájl hiánya pics/szamitas.gif fájl hiánya pics/courage.jpg fájl hiánya Az objektum betöltése sikertelen hibaüzenet. A képbetöltés sikertelen. hibaüzenet. A képbetöltés sikertelen. hibaüzenet. A képbetöltés sikertelen. hibaüzenet. pics/family Guy.jpg fájl A képbetöltés sikertelen
68 hiánya pics/garfield.jpg fájl hiánya pics/lion King.jpg fájl hiánya pics/madagascar.jpg fájl hiánya pics/monster Inc..jpg fájl hiánya text/1.jpg fájl hiánya text/2.jpg fájl hiánya text/3.jpg fájl hiánya text/4.jpg fájl hiánya text/5.jpg fájl hiánya text/6.jpg fájl hiánya text/7.jpg fájl hiánya text/8.jpg fájl hiánya text/9.jpg fájl hiánya Readme.txt fájl hiánya Highscores.txt fájl hiánya hibaüzenet. A képbetöltés sikertelen. hibaüzenet. A képbetöltés sikertelen. hibaüzenet. A képbetöltés sikertelen. hibaüzenet. A képbetöltés sikertelen. hibaüzenet. A textúra fájl nem található hibaüzenet. A textúra fájl nem található hibaüzenet. A textúra fájl nem található hibaüzenet. A textúra fájl nem található hibaüzenet. A textúra fájl nem található hibaüzenet. A textúra fájl nem található hibaüzenet. A textúra fájl nem található hibaüzenet. A textúra fájl nem található hibaüzenet. A textúra fájl nem található hibaüzenet. A fájl beolvasása sikertelen. hibaüzenet. A fájl beolvasása sikertelen. hibaüzenet
69 Perifériák tesztelése Billentyűzet A billentyűzet működésének tesztelése az egyes játékmódok, egyes fázisaiban. Egyéni Brute Force Fa algoritmus Betöltés után Kezdési fázis Letiltva Keverési fázis Letiltva Letiltva Letiltva Letiltva Játék fázis Engedélyezve Letiltva Letiltva Letiltva Nyerési fázis Letiltva Letiltva Letiltva Letiltva A billentyűzet tesztelése Egyéni módban az egyes kijelölések. Mit tesztelünk Elvárt eredmény Értékelés 1-es gomb megnyomása 2-es gomb megnyomása 3-es gomb megnyomása Az első oszlop lesz kijelölve. A második oszlop lesz kijelölve. A harmadik oszlop lesz kijelölve. 4-es gomb megnyomása Az első sor lesz kijelölve. 5-es gomb megnyomása 6-es gomb megnyomása A második sor lesz kijelölve. A harmadik sor lesz kijelölve
70 A billentyűzet tesztelése Egyéni módban, az egyes kijelölt kockahármasok lehetséges irányokba való forgatása. Bal Jobb Fel Le Első oszlop Balra fordul a megfelelő kockahármas. Jobbra fordul a megfelelő kockahármas. Nem történik semmi. Nem történik semmi. Második oszlop Balra fordul a megfelelő kockahármas. Jobbra fordul a megfelelő kockahármas. Nem történik semmi. Nem történik semmi. Harmadik oszlop Balra fordul a megfelelő kockahármas. Jobbra fordul a megfelelő kockahármas. Nem történik semmi. Nem történik semmi. Első sor Nem történik semmi. Nem történik semmi. Felfelé fordul a megfelelő kockahármas. Lefelé fordul a megfelelő kockahármas. Második sor Nem történik semmi. Nem történik semmi. Felfelé fordul a megfelelő kockahármas. Lefelé fordul a megfelelő kockahármas. Harmadik sor Nem történik semmi. Nem történik semmi. Felfelé fordul a megfelelő kockahármas. Lefelé fordul a megfelelő kockahármas
71 A billentyűzet egyéb funkcióinak tesztelése. Mit tesztelünk Elvárt eredmény Értékelés Balra gomb folyamatos nyomva tartása 30 másodpercig az első oszlopot kijelölve. 1-6 gombok egymásután gyors megnyomása. Balra illetve jobbra gombok egymás után gyors megnyomása, az első oszlopot kijelölve. Fel illetve le gombok egymás után gyors megnyomása, az első sort kijelölve. A kocka nem folyamatosan, hanem 0,25 másodpercenként egyszer fordul, a gombot felengedve nem mozog tovább. A kijelölések azonnal láthatók. Csak balra fordulnak el a kockák. Csak felfelé fordulnak el a kockák. Egér Az egér tesztelését különböző távolságokban függőlegesen és vízszintesen körbeforgatva végeztem, az egér működése során hibát nem tapasztaltam, a megadott távolságoknál közelebb vagy távolabb nem tudunk közelíteni, az Y tengellyel párhuzamosan nem tudjuk a nézőpontot beállítani. Monitor A programot egy 1024x768-as maximum felbontású, 4:3 arányú, és egy 1366x768 maximum felbontású, 16:9 arányú kijelzőn teszteltem
72 Felbontás 1. kijelző 2. kijelző 800x600 A Lépésnapló és a Játéktér A Lépésnapló és a Játéktér alja kilóg a képből. alja kilóg a képből. 1024x600 A Lépésnapló és a Játéktér A Lépésnapló és a Játéktér alja kilóg a képből. alja kilóg a képből. 1024x x720 - A Lépésnapló és a Játéktér alja kilóg a képből 1280x x x768 - Programműködés Az egyes módokban kirakott képek utána helyes játékfázisnak megfelelően működik-e a program, azaz összeugrik, nem lehet menteni, nem lehet billentyűt használni stb. Egyéni Brute Force Fa algoritmus Betöltés után Courage Madagascar Monter Inc. Family Guy Lion King Garfield
73 A Fa algoritmus módban a Processing képernyő jelenlétének ideje másodpercben. Milyen képre Mennyi idő Courage 14, 13, 13 Garfield 13, 12, 13 Madagascar 13, 15, 14 Monster Inc. 13, 13, 13 Lion King 15, 14, 14 Famil Guy 14, 13,
74 Felhasználói dokumentáció 1. A program rövid leírása A Mesekocka3D egy gyerekjáték, a mesekocka és a 3x3x1-es Rubik kocka (más néven Floppy Cube) ötvözetének számítógépes megvalósítása. A Mesekocka: a játék kockákból áll, melyeknek mind a 6 oldalán egy-egy ismert meséből származó képrészlet található. A játék célja, hogy a választott képet kirakjuk, a kockák megfelelő helyzetbe való forgatásával. Rubik kocka: A Rubik-kocka mechanikus, egyéni logikai játék. A kocka oldalai különféle színűek és elforgathatók a lap középpontja körül. A forgatás során a szomszédos oldalak színe megváltozik. A rendszertelen forgatással az oldalak színösszeállítása összekeverhető. A játék célja, hogy egy előzetesen összekevert kockából forgatással visszaállítsuk az eredeti, rendezett színösszeállítást, vagyis minden oldalon azonos színű lapocskák legyenek. ([1]) A Floppy Cube: A Rubik kockának a kitalálása óta eltelt közel negyven év alatt számtalan változata elkészült. Vannak nem csak kocka alakú, hanem téglalap, tetraéder alakú fajtái is, sőt a kockának létezik 1x1x1-es változata is. Ezek egyik fajtája a Floppy Cube néven ismert kocka, amelyben 1x3x3-as elrendezésben találhatók az elemek. A játéknak lévén, hogy eggyel kevesebb dimenziója van, sokkal kevesebb állapotba is hozható. A Floppy Cube felső és alsó sora, illetve a két szélső oszlopa forgatásával hozható a kívánt állapotba. A program jelen esetben 9 darab kockából áll, 3x3-as elrendezésben. A kockákat nem egyenként, hanem a Floppy Cube-hoz hasonlóan soronként, illetve oszloponként tudjuk forgatni. Eltérés, hogy míg az eredetiben csak a szélső hármasokat mozgathatjuk, itt a középsőkre is lehetőség van. Eltérés még, hogy az oszlopokat a kockák mélységi tengelyén forgathatjuk jobbra és balra, az oszlopokat pedig a szélességi tengelyükön felfelé és lefelé. A játék célja, hogy az előzetesen kiválasztott képet a kockák megfelelő mozgatásával kirakjuk, ha nyertünk, ezt a program egyébként jelzi is. A kockák 24 féle állapotban helyezkedhetnek el, mivel a hat képet
75 fokban elforgatva oldalanként 4 állapotot kapunk. A képek a 90-es és 2000-es évek ismert meséit ábrázolják: Bátor a gyáva kutya: Az Oroszlánkirály: Madagaszkár: Family Guy: Szörny Rt.: Garfield
76 2. Rendszerkövetelmények Minimális hardver követelmények: Processzor: AMD Athlon II P340 Dual-Core Processor 2.20 GHz Memória (RAM): 2GB Merevlemez: 5MB szabad tárterület Videókártya: OpenGL által támogatott: Monitor: minimum 800x600-as felbontású Egér, billentyűzet Minimális szoftver követelmények Java Virtual Machine telepítve (letölt: Windows operációs rendszer Megjegyzés: a Program más operációs rendszereken nem lett tesztelve, de valószínűleg működőképes, ehhez töltse le a következő oldalról a megfelelő jogl mappát: Ennek lib könyvtárában lévő fájlokat helyezze a Java/jre könyvtárának bin könyvtárába, majd parancssorból a Java jar %Mesekocka3D.jar elérése%/mesekocka3d.jar paranccsal indíthatja azt. 3. Telepítés, futtatás A Java futtatókörnyezet (JRE) telepítése A futtatáshoz telepíteni kell a Java futtatórendszerét (Java Runtime Environment, JRE), amely a J2SE (J2 Standard Edition) része. A futtatórendszer más nevei: Java VM, Java WEB Start. Ha még nincs a gépén a JRE szükséges verziója, akkor töltse le a Sun oldaláról, és telepítse: Letöltendő a JRE vagy magasabb verzió. Letöltési cím: (JRE)
77 A Windows-os fájl neve például: j2re-1_4_1_02-windows-i586.exe (kb. 10 MB) Kattintson a telepítő állományra, és kövesse a telepítő utasításait! A program telepítése, eltávolítása A program telepítéséhez helyezzük el a Mesekocka3D mappát akárhol a számítógépen, majd kattintsunk duplán a setup.vbs fájlra, ekkor a program létrehoz egy parancsikont az Asztalon. A főmappában lévő mappákat, fájlokat ne helyezzük át, ez a program használhatatlanná válásához vezet. A program eltávolításához törölje az Asztalon lévő parancsikont. A program indítása Kattintson duplán a Mesekocka3D.lnk parancsikonra az Asztalon! Ha még nincs társítva a jar kiterjesztéshez a Java futtatóprogram - a Mesekocka3D mappában a Mesekocka3D.jar fájlnak egy üres lap az ikonja -, akkor társítsa a Mesekocka3D.jar-t a JRE bin könyvtárában levő javaw.exe programhoz, például: Kattintson duplán Mesekocka3D.jar fájlon, majd a felugró ablakból válassza ki a Kiválasztom a telepített programok listájából, ezután navigáljon a következő fájlhoz a felugró dialógusban: Jobb egér/társítás/egyéb/ C:/Program Files/Java/j2re1.4.1_02/bin/javaw.exe Ha a program így sem indul, akkor Windows rendszereken nyissa meg a Start menüt, majd Parancssor programon jobb gombbal kattintva a helyi menüből válassza ki a Futtatás rendszergazdaként menüpontot. Majd írja be a következőket: assoc.jar=jarfile ftype jarfile="c:\a JAVAW FÁJL ELÉRÉSE\javaw.exe" -jar "%1" %* A JAVAW FÁJL ELÉRÉSE például: Program Files\Java\j2re1.4.1_02\bin\javaw.exe A \ (Backslash) operátort az Altgr+ Q gombok lenyomásával írhatja be
78 4. A program fogalmai Fogalom Jelentés Betöltés A Fájl menü eleme, az elmentett állapotok betöltését végzi. Brute Force mód Célkép legördülő menü Egy játékstílus, melyben a számítógép végzi a kockák kirakását. A Kezelőfelületen elhelyezkedő legördülő menü, amelyen kiválasztatjuk a kirakandó képet. Eddigi eredmények Az Információk menü része, információkat ad az eddigi befejezett játékokról. Egyéni mód Fa algoritmus mód Fájl menü Egy játékstílus, melyben a játékos végzi a kockák kirakását. Egy játékstílus, melyben a számítógép végzi a kockák kirakását. A Menüsor első menüje. Forgatás Egy kockahármas mélységi, vagy szélességi tengelyen való forgatása 90 fokkal pozitív, vagy negatív irányba. Időmérő Információk menü Játék fázis A Kezelőfelület része, játék közben az eltelt időről ad információt. A Menüsor második menüje. A program Keverési fázis utáni állapota, amikor a tényleges játék folyik. Játékleírás Az Információk menü része, információkat ad a játék szabályairól, használatáról. Játékmód választó legördülő menü A Kezelőfelületen elhelyezkedő legördülő
79 menü, melyen kiválaszthatjuk az indítás előtti játékmódot. Játéktér Egy háromdimenziós megjelenítő, mely a képernyő nagy részét képezi, a játék folyamata itt látható. Készítők Az Információk menü része, információkat ad a játék készítőjéről. Keverési fázis Kezdő fázis Kezelőfelület A program azon állapota, amikor a kockák keverése történik. A program indulása utáni állapot. A képernyő jobb szélén elhelyezkedő panel, amelyen az indítás előtti beállításokat lehet elvégezni, illetve a játékról tudhatunk meg információkat játék közben. Kijelölés Egy kockahármast pirosra színez a program, ezzel jelezve, hogy ezt tudjuk majd elforgatni. Kilépés Kilépés beleegyező dialógus. A Fájl menü része, a programból való kilépést végzi. A kilépéskor megjelenő üzenet, amely a felhasználó beleegyezését kéri a program leállítására. Kirakandó kép panel A képernyő bal felső sarkában elhelyezkedő panel, amely a játék közben azt a képet jeleníti meg, amelyet a felhasználónak, vagy a gépnek ki kell raknia. Lépésnapló A Kezelőfelület része, játék közben a megtett lépésekről ad információt: mely kockákat, milyen irányba, hányadik
80 lépésben forgattuk el. Lépésszámláló Mentés Menüsor Nem termináló hibaüzenet Nézett pont A Kezelőfelület része, játék közben a megtett lépések számáról ad információt. A Fájl menü eleme, Egyéni módban az aktuális állapot elmentésére szolgál. A képernyő felső sorában a címsor alatt elhelyezkedő panel, amelyen a felhasználó a mentést, betöltés, kilépést végezheti el, illetve információkat tudhat meg a játékról. Egy felugró, hibát jelző ablak, amely nem állítja le a programot. A középső kocka közepe. Az a pont a világkoordináta rendszerben, Nézőpont Nézőpontváltás Nyert fázis Start gomb Termináló hibaüzenet ahonnan a felhasználó az eseményeket látja, a kamera helye. A nézőpont elmozgatása a középső kocka középpontja körüli gömbön. A Játék fázis után a kockák helyre forgatásakor létrejövő állapot. A játék indítását kezdeményezhetjük vele. Egy felugró, hibát jelző ablak, amely leállítja a programot
81 5. A képernyő részei A képernyőt 4 fő részre oszthatjuk: 19. ábra - A képernyő részei A. Célkép panel A képernyőnk bal felső sarkában elhelyezkedő panelen megjelenő képet kell kiraknunk a játék során. A kép alapértelmezésként a listában elsőként szereplő Courage című képet jeleníti meg, amelyet majd a C-vel jelölt kezelőfelületen állíthatunk át. A panelen a 6 különböző kép közül válogathatunk. B. 3D Játéktér A képernyő fő része, amely háromdimenziós megjelenítést tesz lehetővé. A képernyőn a kilenc kockát láthatjuk, alapállapotban a Courage című képre kirakva. Alapállapotban a kockát helyköz nélkül helyezkednek el, de a játék indításakor szétugranak, a jobb átláthatóság érdekében. Ha a képernyő fókuszt kap (rákattintunk), az indítás utána a kockák mozgathatók, ha a játék el van indítva, illetve a nézőpontot az egér segítségével állíthatjuk
82 C. Kezelőfelület és státuszinformációk A játékra vonatkozó beállításokat végezhetjük el, valamint információkat tartalmaz a játék menetéről. D. Menüsor A program menüsorában, a Fájl menüben a játék mentését, betöltését végezhetjük el, valamint kiléphetünk a játékból. Az információk Menüben információkat kaphatunk a program készítéséről, leírást a játékszabályokról, valamint az elmúlt játékok eredményeit tekinthetjük meg. 6. Általános használat Játékfázisok A játékot működés közben négy nagyobb fázisra bonthatjuk. Kezdési fázis A játék kezdete előtti első betöltéskor megjelenő fázis. Ekkor semmilyen módosítást nem hajthatunk végre a Játéktéren, bár a nézőpontot állíthatjuk (ld. Nézőpont beállítások). A státuszinformációk az alap lenullázott, illetve üres fázisban vannak. Kijelölések nincsenek, és a kockák helyköz nélkül helyezkednek el egymás mellett. Keverési fázis A Keverési fázis a játék indítása utáni pár másodpercig tart. Az fázis kezdetekor a kockák eltávolodnak egymástól, majd a program megkeveri a kockákat. Ekkor nem indítható új játék. Játék fázis A Keverési fázis után következik a játék fázis, ahol a kockákat forgatásokkal játékmódtól függően a számítógép, vagy a felhasználó megfelelő helyre forgatja. Ekkor már kapunk visszajelzéseket a státuszinformációk által. A kijelölések játékmód függőek. Itt már új játékot is indíthatunk
83 Nyert fázis Ha a játékfázisban a kockák a megfelelő helyre kerültek, a játék véget ért, ekkor a kockák megint összeugranak, a játéktéren nem tudunk kijelöléseket végrehajtani, a kijelölések megszűnnek, illetve az időmérő leáll. A játéktér közepén pár másodpercig feltűnik egy Winner felirat. 20. ábra - A nyeréskor megjelenő felirat Játékmódok Játékfázisban háromféle módon rakhatjuk ki a kockákat, ezt a játék indítása előtt a kezelőfelületen állíthatjuk be (ld. Kezelőfelület használata). Egyéni mód A felhasználó a billentyűzet segítségével rakja ki a kívánt állapotot. (ld. Kijelölések, forgatások) Brute force Itt a kirakás a számítógép segítségével történik. Ekkor a felhasználónak semmiylen beleszólása nincs a kockák forgatásába, a billentyűzet le van tiltva, azonban szabadon állíthatja a nézőpontot, illetve új játékot is indíthat. A számítógép első lépésben felállít egy alapállapotot, ahonnan aztán a második lépésben a megfelelő előre beégetett egyszerű forgatásokat hajtja végre kockánként addig, amíg el nem jut a kívánt végállapotba. Faalgoritmus A Brute Force játékmódhoz hasonlóan a felhasználónak itt sincs beleszólása a játékmenetbe, de a nézőponot állíthatja, új játékot is indíthat. A program ekkor egy
84 hosszabb számítássorozatot hajt végre, eddig egy Számítás című képernyő jelenik meg. A számítás végrehajtása után a program pár forgatás segítségével kirakja a kívánt állapotot. 21. ábra - A faalgoritmus számításakor megjelenő panel Nézőpont beállítások A játékban az adott nézőpontot az egér segítségével változtathatjuk a jobb átláthatóságért. Azért, hogy a kockákat minden oldalról meg tudjuk vizsgálni, alapvetően két funkciót különíthetünk el: a zoomolást és a körbeforgást. Fontos, hogy a mozgatást csak akkor végezhetjük el, ha előtte a képernyő rész fókuszt kapott, ezt a megjelenítő panelen való kattintással érhetjük el. A nézőpont mindig a középső kockánk közepére fókuszál. Körbeforgás: az egér jobb gombjának nyomva tartásával mozgassuk azt, ekkor a nézett pont körül oldalirányú mozgatás esetén, oldalirányban, függőleges mozgás esetén pedig függőleges irányban járhatjuk körbe a kockáinkat. A függőleges mozgás invertált, azaz ha az egeret lefele húzzuk, akkor a nézőpont feljebb kerül. Fontos még függőleges irányú forgatás esetén, hogy a nézőpont csak 180 fokban mozdítható el. A forgatás csak akkor működik, ha az egér a gomb lenyomásakor a játékpanelen van
85 22. ábra - a nézőpont oldalirányú mozgatása Zoomolás: a közelítéshez és a távolításhoz az egér görgőjét használjuk, ez a nézőpont irányát nem változtatja, csak a kockáktól vett távolságot. A zoomolásnak van egy adott minimum és maximum értéke, ezeknél nem tudunk közelebb illetve távolabb menni. 23. ábra - Közeli és távoli nézőpontok Kockamozgatások, kijelölések A kockák mozgatását, illetve kijelölését a billentyűzet segítségével tehetjük meg, szintén csak akkor, ha a képernyő fókuszt kapott, illetve ha elindítottuk a játékot, és a
86 keverés megtörtént. A kockák állapotának a módosítására csak Egyéni módban van lehetőségünk. Kijelölés: a forgatni kívánt kockákat előbb ki kell jelölnünk, ezt az 1-6-os gombokkal tehetjük meg. Az 1-3 gombok balról jobbra az oszlopokat jelölik ki, a 4-6-os gombok fentről lefelé a sorokat. A kijelölt kockák színe pirosra változik, alapértelmezésként az első oszlop van kijelölve, de csak egyéni módban, és csak ha épp játékfázisban vagyunk. 24. ábra - A második oszlop kijelölése Forgatás: a kijelölések után a nyíl gombok használatával mozgathatjuk a kockáinkat, a kijelöléseknek megfelelően, azaz ha oszlopokat jelöltünk ki, akkor csak jobbra illetve balra forgathatjuk őket, a jobb és bal nyilakkal, míg ha sorokat, akkor csak felfelé és lefelé a fel és a le nyilakkal
87 25. ábra - Az első oszlop balra forgatása Kezelőfelület használata A kezelőfelület információkat tartalmaz a játék menetével kapcsolatban, illetve az új játék kezdete előtti beállításokat végezhetjük el általa. Információk a felhasználónak Lépésszámláló A program számon tartja az elvégzett lépéseket, ez minden új játék kezdésénél lenullázódik. Eltelt idő A játék elkezdése óta eltelt időt mutatja, új játék indításakor lenullázódik. Lépésnapló A játék indításától a játékfázisban végzett forgatásokat tartja számon, tehát a forgatási fázis lépéseit nem. Megmutatja, hogy hányadik lépésben, milyen irányba és melyik kockákat forgattuk el, a kockákat a számukkal jelöli, a számozás balról jobbra, fentről lefelé történik ábra - A kockák számozása
88 Új játék indításakor törlődnek az eddigi információk. Minden forgatás egy új sorba kerül, ha a szöveg doboz kapacitásánál több sor jön létre, akkor jobboldalt egy csúszka jelenik meg, amivel visszanézhetjük az összes eddigi lépést. 27. ábra - Információk a játékmenetről: lépésszám, eltelt idő, megtett lépések Beállítások Játékmód választó A kockák kirakásának módját, az első legördülő menüben tehetjük meg, itt választhatunk az Egyéni, a Brute Force illetve a Fa alapú játékstílusok közül. Alapértelmezésként az egyéni mód van kiválasztva, de a menüre kattintva az egérrel ezt megváltoztathatjuk. A játékstílus változtatás csak a Start gomb megnyomása, illetve a játék indítása után lép életbe
89 28. ábra - a játékmód-választó menü Kirakandó kép A második legördülő menüvel, a kirakandó hat kép közül választhatunk, hogy melyiket szeretnénk elkészíteni. Alapértelmezésként a Courage című kép van kiválasztva, ezt az egér segítségével módosíthatjuk. Kattintás után a bal felső panelen lévő kép megváltozik a kiválasztottra, de csak a Start gomb lenyomása után lép érvénybe a változtatás, az aktuális játék befejezéséhez az elsőnek választott képet kell kiraknunk. 29. ábra - A képválasztó menü Start gomb A gomb lenyomásával a program keverő fázisba lép, ekkor a gombot nem tudjuk megnyomni, amíg a keverés be nem fejeződik, majd játék fázisba lép át, ekkor a gomb újra lenyomható, ezzel új játék indítható. Az előzetesen beállított játékmód életbe lép,
90 a kirakandó kép az utoljára kiválasztott kép lesz. A gomb a lépésszámot és az időt lenullázza, a lépésnaplót törli. Ha éppen játékfázisban vagyunk, az adott játékfolyamatot megszakítja. 30. ábra - Keverés közben a Start gomb le van tiltva 7. A program funkciói A menüsorban két menü található. Fájl menü A Fájl menüben a mentett játékokat kezelhetjük, illetve kiléphetünk a programból. 31. ábra - Fájl menü Mentés Egyéni módban, a keverési fázis után a nyert fázisig az adott állás elmenthető. A játék indításáig, vagy bármilyen más játékmódban, a menüpont le van tiltva
91 32. ábra - Egyéni módban, játékfázisban van lehetőség menteni, egyébként nincs. A mentés folyamata során a megadhatunk egy új fájlnevet, amibe menteni kívánjuk a játékot, vagy egy már létező fájlt választhatunk ki, de ekkor a program felülírja azt. A mentést csak a save mappában végezhetjük, egyéb mappákba nincs is lehetőség átmenni. 33. ábra - A "mentés" felugró ablak Betöltés A betöltés menüpontból egy adott, korábban elmentett fájl betöltésére van lehetőség. A menüpont lenyomása után egy felugró ablakból kiválaszthatjuk a megfelelő fájlt, majd az OK gombra kattintva betölthetjük azt. A betöltés megkezdésekor, ha van folyamatban lévő játék, akkor az megszakad, a program keverőfázisban a korábbi keverést, és a megtett lépéseket is elvégzi, az eltelt időt visszaállítja, a megtett lépéseket is felülírja a mentett játékéval, illetve a lépésnaplóban a mentéskor megtett lépések kerülnek
92 Kilépés A menüpont célja, hogy kiléphessünk a játékból, lenyomásakor a program nem azonnal áll le, hanem előbb feldob egy beleegyező ablakot, hogy biztosan szeretnénk-e kilépni. Alapértelmezettem a Nem válaszgombra van állítva a kijelölés. A Nem gombra kattintva nem történik semmi, a program fut tovább, mintha semmi sem történt volna, Igen esetén a program működése megszakad, a főablak bezárul. 34. ábra Kilépés felugró ablak Információk menü Különböző információkat tudhatunk meg a játék készítéséről, illetve magáról a játékról. Az egyes menüpontok ablakokat dobnak fel, ezeket az OK gomb megnyomásával, illetve az X gombra való kattintással az bezárhatjuk. 35. ábra - Információk menü Játékleírás A menüpont lenyomásakor egy ablak ugrik fel, ahol a játékszabályokról, illetve a játék irányításáról kapunk információkat
93 36. ábra - Információk a játékról Eddigi eredmények A menüpont megnyomásakor a program feldob egy ablakot, ahol az előzetesen végigjátszott játékokat láthatjuk, időrendi sorrendben. Megfelelő mennyiségű eredmény utána a sorok között a jobb oldalon lévő csúszkával, illetve az egér görgőjével lapozhatunk
94 37. ábra Eddigi eredmények felugró ablak Készítők A menüpont megnyomásakor egy új ablak ugrik fel, amelyben a program készítésében résztvevőkről kapunk információt. 38. ábra - Készítők felugró ablak Egyéb funkciók A program ablakán a Teljes méret funkció le van tiltva, az ablak mérete mindig fix. A Kis méret funkció az átlagoshoz hasonlóan működik, a programot a tálcára teszi, az ablak ilyenkor nem látszik, de a program tovább fut. Az X gomb megnyomására a Fájl menü/kilépés el azonos ablakot kapunk (ld. feljebb)
95 8. Hibaüzenetek A program hiányzó fájlok esetén hibaüzenetet ad. A hibaüzenet kiírja a történt hibát, majd az OK gombra kattintva, a hiba típusától függően leáll a program, vagy fut tovább. A hibaablak megjelenése után, csak erre tudunk kattintani, a program más ablakait nem módosíthatjuk. 39. ábra -Hibaüzenet: az objektum nem található Lehetséges hibák Az objektum betöltése sikertelen: a program external/obj quadcube.obj fájl hiányzik. mappájában lévő A kép betöltés sikertelen: a program externals/pics mappája hiányos. A textúra nem található: a program externals/text mappája hiányos. A textúra betöltése sikertelen: a programnak nem sikerült az adott textúrákat hozzárendelni az objektumokhoz. A fájl nem létezik: betöltéskor a fájlnevet beírva is megadhatjuk, a hiba akkor jelentkezik, ha elírjuk a fájlnevet. A fájl beolvasása sikertelen: a program externals mappája hiányos. A fájl tartalma nem megfelelő: az externals/save mappában lévő fájl nem a program által támogatott információkat tartalmaz
GráfRajz fejlesztői dokumentáció
GráfRajz Követelmények: A GráfRajz gráfokat jelenít meg grafikus eszközökkel. A gráfot többféleképpen lehet a programba betölteni. A program a gráfokat egyedi fájl szerkezetben tárolja. A fájlokból betölthetőek
HORVÁTH ZSÓFIA 1. Beadandó feladat (HOZSAAI.ELTE) ápr 7. 8-as csoport
10-es Keressünk egy egész számokat tartalmazó négyzetes mátrixban olyan oszlopot, ahol a főátló alatti elemek mind nullák! Megolda si terv: Specifika cio : A = (mat: Z n m,ind: N, l: L) Ef =(mat = mat`)
Space Invaders Dokumenta cio
Space Invaders Dokumenta cio 0. Tartalomjegyzék 0. Tartalomjegyzék... 1 1. Követelmény feltárás... 2 1.1. Célkitűzés, projektindító dokumentum... 2 1.2. Szakterületi tartalomjegyzék... 2 1.3. Használatieset-modell,
A Windows az összetartozó adatokat (fájlokat) mappákban (könyvtárakban) tárolja. A mappák egymásba ágyazottak.
Mappakezelés WINDOWS-7 A Windows az összetartozó adatokat (fájlokat) mappákban (könyvtárakban) tárolja. A mappák egymásba ágyazottak. A PC legnagyobb mappája, amely az összes többi mappát is magában foglalja,
Java Programozás 5. Gy: Java alapok. Adatkezelő 1.rész
Java Programozás 5. Gy: Java alapok Adatkezelő 1.rész 27/1 B ITv: MAN 2018.04.13 Feladat Egy nagyon hosszú feladatmegoldásba kezdünk bele: létrehozunk egy adatkezelő programot, sok-sok extrával: 27/2 A
Johanyák Zsolt Csaba: Ugráló gomb oktatási segédlet Copyright 2008 Johanyák Zsolt Csaba
Ugráló gomb Készítsünk egy egyszerű játékprogramot, ami egy mozgó nyomógombot tartalmaz. A nyomógomb beállított ideig marad egy helyben, majd az ablakon számára elhatárolt terület (panel) egy véletlenszerűen
A dokumentáció felépítése
A dokumentáció felépítése Készítette: Keszthelyi Zsolt, 2010. szeptember A szoftver dokumentációját az itt megadott szakaszok szerint kell elkészíteni. A szoftvert az Egységesített Eljárás (Unified Process)
Magyar Nemzeti Bank - Elektronikus Rendszer Hitelesített Adatok Fogadásához ERA. Elektronikus aláírás - felhasználói dokumentáció
ERA Elektronikus aláírás - felhasználói dokumentáció Tartalomjegyzék 1. Bevezető... 3 1.1. Általános információk... 3 2. DesktopSign... 3 2.1. Általános információk... 3 2.2. Telepítés... 3 3. MNBSubscriber...
ContractTray program Leírás
ContractTray program Leírás Budapest 2015 Bevezetés Egy-egy szerződéshez tartozó határidő elmulasztásának komoly gazdasági következménye lehet. Éppen ezért a Szerződés kezelő program főmenü ablakában a
VII. Appletek, grafika
VII. Appletek, grafika 1. Bevezetés A tantárgy elején említettük, hogy a Java alkalmazásokat két nagy csoportba sorolhatjuk. Ezek: alkalmazások (applications) alkalmazáskák (applets) Az eddig megírt programjaink
A TERC VIP költségvetés-készítő program telepítése, Interneten keresztül, manuálisan
Telepítés internetről A TERC VIP költségvetés-készítő program telepítése, Interneten keresztül, manuálisan Új szolgáltatásunk keretén belül, olyan lehetőséget kínálunk a TERC VIP költségvetéskészítő program
FELHASZNÁLÓI ÚTMUTATÓ
FELHASZNÁLÓI ÚTMUTATÓ VÉRADÁS IDŐPONT SZERKESZTŐ (verzió: 1.2) 2013. április 1. Tartalomjegyzék 1. Telepítés és indítás... 3 2. Frissítés... 3 3. Beállítás... 4 4. Felület... 4 5. Véradó helyszínek...
EDInet Connector telepítési segédlet
EDInet Connector telepítési segédlet A cégünk által küldött e-mail-ben található linkre kattintva, a következő weboldal jelenik meg a böngészőben: Az EdinetConnectorInstall szövegre klikkelve(a képen pirossal
DebitTray program Leírás
DebitTray program Leírás Budapest 2015 Bevezetés Egy-egy kintlévőséghez tartozó határidő elmulasztásának komoly következménye lehet. Éppen ezért a Kintlévőség kezelő program főmenü ablakában a program
Image Processor BarCode Service. Felhasználói és üzemeltetői kézikönyv
Image Processor BarCode Service Áttekintés CIP-BarCode alkalmazás a Canon Image Processor programcsomag egyik tagja. A program feladata, hogy sokoldalú eszközt biztosítson képállományok dokumentumkezelési
Mechatronika segédlet 3. gyakorlat
Mechatronika segédlet 3. gyakorlat 2017. február 20. Tartalom Vadai Gergely, Faragó Dénes Feladatleírás... 2 Fogaskerék... 2 Nézetváltás 3D modellezéshez... 2 Könnyítés megvalósítása... 2 A fogaskerék
13. óra op. rendszer ECDL alapok
13. óra op. rendszer ECDL alapok 1. Mire szolgál az asztal? a) Az ideiglenesen törölt fájlok tárolására. b) A telepített alkalmazások tárolására. c) A telepített alkalmazások ikonok általi gyors elérésére.
3D koordináta-rendszerek
3D koordináta-rendszerek z z y x y x y balkezes bal-sodrású x jobbkezes jobb-sodrású z 3D transzformációk - homogén koordináták (x, y, z) megadása homogén koordinátákkal: (x, y, z, 1) (x, y, z, w) = (x,
Operációs rendszerek. Tanmenet
Tanmenet TANMENET- Operációs rendszerek Témakörök Javasolt óraszám 1. Operációs rendszerek alapjai 2. Windows 2000 ismeretek- Munka a képernyőn 3. Windows 2000 ismeretek- A Start menü elemei 4. Windows
Thermo1 Graph. Felhasználói segédlet
Thermo1 Graph Felhasználói segédlet A Thermo Graph program a GIPEN Thermo eszközök Windows operációs rendszeren működő grafikus monitorozó programja. A program a telepítést követően azonnal használható.
Grafikus felhasználói felületek. Dr. Szendrei Rudolf Informatikai Kar Eötvös Loránd Tudományegyetem. Programozási technológia I. Dr.
Programozási Grafikus Informatikai Kar Eötvös Loránd Tudományegyetem 1 Tartalom 1 2 Grafikus felhasználói felület Két csomag elemeiből lehet a felületet elkészíteni awt: heavy weight" komponensek swing:
ServiceTray program Leírás
ServiceTray program Leírás Budapest 2015 Bevezetés szerviz munkalapok státuszai a Törölve és Lezárva státuszt leszámítva a munkalap különböző nyitott állapotát jelzik, melyek valamilyen tevékenységet jeleznek.
A GeoEasy telepítése. Tartalomjegyzék. Hardver, szoftver igények. GeoEasy telepítése. GeoEasy V2.05 Geodéziai Feldolgozó Program
A GeoEasy telepítése GeoEasy V2.05 Geodéziai Feldolgozó Program (c)digikom Kft. 1997-2008 Tartalomjegyzék Hardver, szoftver igények GeoEasy telepítése A hardverkulcs Hálózatos hardverkulcs A GeoEasy indítása
Két csomag elemeiből lehet a felületet elkészíteni: awt: heavy weight komponensek; swing: light weight komponensek (időben később).
Grafikus felhasználói felület Két csomag elemeiből lehet a felületet elkészíteni: awt: heavy weight komponensek; swing: light weight komponensek (időben később). Mi hogyan használjuk? awt: eseménykezelés,
Szimulációs technikák
SZÉCHENYI ISTVÁN EGYETEM Műszaki Tudományi Kar Informatikai tanszék Szimulációs technikák ( NGB_IN040_1) 2. csapat Comparator - Dokumentáció Mérnök informatikus BSc szak, nappali tagozat 2012/2013 II.
TERC V.I.P. hardverkulcs regisztráció
TERC V.I.P. hardverkulcs regisztráció 2014. második félévétől kezdődően a TERC V.I.P. költségvetés-készítő program hardverkulcsát regisztrálniuk kell a felhasználóknak azon a számítógépen, melyeken futtatni
Telepítési útmutató. 1.1 lépés : Telepítés típusa - ablak :
Telepítési útmutató 1.1 lépés : Telepítés típusa - ablak : Typical (Általános): A telepítéskor a program fájljai, az adatbázis kezel, valamint a súgó fájlok kerülnek telepítésre. (Abban az esetben ajánlott,
Táblázatok. Táblázatok beszúrása. Cellák kijelölése
Táblázatok Táblázatok beszúrása A táblázatok sorokba és oszlopokba rendezett téglalap alakú cellákból épülnek fel. A cellák tartalmazhatnak képet vagy szöveget. A táblázatok használhatók adatok megjelenítésére,
VARIO Face 2.0 Felhasználói kézikönyv
VARIO Face 2.0 Felhasználói kézikönyv A kézikönyv használata Mielőtt elindítaná és használná a szoftvert kérjük olvassa el figyelmesen a felhasználói kézikönyvet! A dokumentum nem sokszorosítható illetve
CabMap hálózat-dokumentáló rendszer
CabMap hálózat-dokumentáló rendszer A CabMap hálózat-dokumentáló rendszer elsősorban passzív optikai hálózatok elektronikus dokumentálására szolgál. A rendszer hatékony és rugalmas hozzáférést biztosít
Transzformációk. Grafikus játékok fejlesztése Szécsi László 2013.02.26. t05-transform
Transzformációk Grafikus játékok fejlesztése Szécsi László 2013.02.26. t05-transform Koordinátarendszerek: modelltér Koordinátarendszerek: világtér Koordinátarendszerek: kameratér up right z eye ahead
A program telepítése
program telepítése Töltse le a telepítőt a www.kocheskochkft.hu internetes oldalról. Programjaink menü alatt válassza a Egyszerűsített foglalkoztatással kapcsolatos nyilvántartás programot, kattintson
A GeoEasy telepítése. Tartalomjegyzék. Hardver, szoftver igények. GeoEasy telepítése. GeoEasy V2.05+ Geodéziai Feldolgozó Program
A GeoEasy telepítése GeoEasy V2.05+ Geodéziai Feldolgozó Program (c)digikom Kft. 1997-2010 Tartalomjegyzék Hardver, szoftver igények GeoEasy telepítése A hardverkulcs Hálózatos hardverkulcs A GeoEasy indítása
Ablak és ablakműveletek
Ablak és ablakműveletek 1. Jelölje meg az igaz állításokat! A. A képen egy ablakot lehet látni. B. A Windows operációs rendszerben a mappák és programok ablakokban nyílnak meg. C. Egyszerre csak egy ablakot
Lakóház tervezés ADT 3.3-al. Segédlet
Lakóház tervezés ADT 3.3-al Segédlet A lakóház tervezési gyakorlathoz főleg a Tervezés és a Dokumentáció menüket fogjuk használni az AutoDesk Architectural Desktop programból. A program centiméterben dolgozik!!!
Programozási technológia
Programozási technológia Grafikus felhasználói felület Dr. Szendrei Rudolf ELTE Informatikai Kar 2018. Grafikus felhasználói felület Két csomag elemeiből lehet a felületet elkészíteni awt,,heavy weight"
FELHASZNÁLÓI KÉZIKÖNYV XMAP (EXTENDED MAP) KEZELÉSI ÚTMUTATÓ (TATABÁNYA VÁROS KÖZLEKEDÉSE)
FELHASZNÁLÓI KÉZIKÖNYV XMAP (EXTENDED MAP) KEZELÉSI ÚTMUTATÓ (TATABÁNYA VÁROS KÖZLEKEDÉSE) 1. Bevezető Az XMap egy korszerű, internetes, böngésző alapú, térképes utastájékoztató szoftver. Jelenleg Tatabánya
Tartalom Képernyő részei... 2
Tartalom Képernyő részei... 2 Sötétszürke menü részei... 2 1. Menü kibontása... 2 2. Eszközök... 3 3. Műveletek... 3 Világosszürke menü részei... 4 Kijelölés... 4 Okos kijelölés... 5 Körülvágás... 6 Vegyes
KIRA. KIRA rendszer. Telepítési útmutató v1
KIRA rendszer Telepítési útmutató v1 1. Bevezetés A dokumentáció, illetve a dokumentáció mellékleteként megtalálható állományok segítségével készíthető fel a kliens oldali számítógép a KIRA rendszer működtetésére.
Mobil Partner telepítési és használati útmutató
Mobil Partner telepítési és használati útmutató Tartalom Kezdeti lépések... 2 Telepítés... 2 A program indítása... 6 Mobile Partner funkciói... 7 Művelet menü... 7 Kapcsolat... 7 Statisztika... 8 SMS funkciók...
Kalandjáték dokumentáció
Követelmény feltárás Kalandjáték dokumentáció A program grafikus interfészen keresztül kommunikáljon a felhasználóval. Egyszerű, érthető irányítási funkciók segítsék a játékost. Meg kell teremteni az egyensúlyt
Swing GUI készítése NetBeans IDE segítségével
Programozási Swing e NetBeans IDE segítségével Informatikai Kar Eötvös Loránd Tudományegyetem 1 Tartalom 1 2 2 Eddig a grafikus felhasználói felületet kódból hoztuk létre kézzel. A mi feladatunk volt az
Felhasználói kézikönyv - Android kliens
Felhasználói kézikönyv - Android kliens Tartalom Telepítés Indítás Fő képernyők Térkép Rétegválasztó ablak Kilépés Keresés Lista Részletek Telepítés Az Élő Berek Android alkalmazás letölthető a www.e-berek.hu
3. Ezután a jobb oldali képernyő részen megjelenik az adatbázistábla, melynek először a rövid nevét adjuk meg, pl.: demo_tabla
1. Az adatbázistábla létrehozása a, Ha még nem hoztunk létre egy adatbázistáblát sem, akkor a jobb egérrel a DDIC-objekt. könyvtárra kattintva, majd a Létrehozás és az Adatbázistábla menüpontokat választva
POSZEIDON dokumentáció (1.2)
POSZEIDON dokumentáció (1.2) Bevezetés a Poszeidon rendszer használatába I. TELEPÍTÉS Poszeidon alkalmazás letölthető: www.sze.hu/poszeidon/poszeidon.exe Lépések: FUTTATÁS / (FUTTATÁS) / TOVÁBB / TOVÁBB
Szia Ferikém! Készítek neked egy leírást mert bánt, hogy nem sikerült személyesen megoldani a youtube problémát. Bízom benne, hogy segít majd.
Szia Ferikém! Készítek neked egy leírást mert bánt, hogy nem sikerült személyesen megoldani a youtube problémát. Bízom benne, hogy segít majd. Első lépés: Töltsd le a programot innen: http://download.vessoft.com/files/fyds/freeyoutubedownoad.exe
OpenCL alapú eszközök verifikációja és validációja a gyakorlatban
OpenCL alapú eszközök verifikációja és validációja a gyakorlatban Fekete Tamás 2015. December 3. Szoftver verifikáció és validáció tantárgy Áttekintés Miért és mennyire fontos a megfelelő validáció és
ReszlAd fájl, kitöltési útmutató:
1 ReszlAd fájl, kitöltési útmutató: A ReszlAd táblázat egy adott látogatás részletes adatait tartalmazza. A szaktanácsadó által hiánytalanul kitöltött, és elnevezett fájlt e-mail üzenetben kérjük elküldeni
Kirakós játék. Döntő február 22. Alakzatok (katalógus) DUSZA ÁRPÁD ORSZÁGOS PROGRAMOZÓI EMLÉKVERSENY 2013/2014
Döntő 2014. február 22. Kirakós játék Az Q-Puzzler kirakós játékot egyedül játsszák. A játéktér egy 5 sorból és 11 oszlopból álló lyukacsos tábla, amelybe különböző színű síkbeli alakzatok illeszthetőek.
I. VEKTOROK, MÁTRIXOK
217/18 1 félév I VEKTOROK, MÁTRIXOK I1 I2 Vektorok 1 A síkon derékszögű koordinátarendszerben minden v vektornak van vízszintes és van függőleges koordinátája, ezeket sorrendben v 1 és v 2 jelöli A v síkbeli
DKÜ ZRT. A Portál rendszer felületének általános bemutatása. Felhasználói útmutató. Támogatott böngészők. Felületek felépítése. Információs kártyák
A Portál rendszer felületének általános bemutatása Felhasználói útmutató Támogatott böngészők Internet Explorer 9+ Firefox (legújabb verzió) Chrome (legújabb verzió) Felületek felépítése Információs kártyák
A Novitax ügyviteli programrendszer első telepítése
Telepítő fájl letöltése honlapunkról A Novitax ügyviteli programrendszer első telepítése A honlapunkon (www.novitax.hu) található telepítő fájlt (novitax2007-setup.exe) le kell tölteni a számítógép egy
Java telepítése és beállítása
A pályázati anyagok leadás Mozilla Firefox böngészőn keresztül: Tartalom Java telepítése és beállítása... 1 USB kulcs eszközkezelő telepítése... 4 USB kulcs telepítése böngészőbe... 4 Kiadói tanúsítvány
2. Beadandó feladat dokumentáció
2. Beadandó feladat dokumentáció Készítette: Giachetta Roberto E-mail: groberto@inf.elte.hu Feladat: Készítsünk programot a következő memóriajátékhoz. A játéktáblán mező foglal helyet, amelyek különböző
PLC Versenyfeladat. XIV. Országos Irányítástechnikai Programozó Verseny Budapest, március Összeállította az EvoPro Kft.
PLC Versenyfeladat XIV. Országos Irányítástechnikai Programozó Verseny Budapest, 2008. március 19-21. Összeállította az EvoPro Kft. Általános bemutatás A feladatban szereplő eszköz egy 8x8 képpontos LED-mátrix
Választó lekérdezés létrehozása
Választó lekérdezés létrehozása A választó lekérdezés egy vagy több rekordforrásból származó adatokat jelenít meg. A választó lekérdezések a táblák, illetve az adatbázis tartalmát nem változtatják meg,
Netlock Kft. által kibocsátott elektronikus aláírás telepítése Windows XP SP3 Internet Explorer 8 böngészőbe
Netlock Kft. által kibocsátott elektronikus aláírás telepítése Windows XP SP3 Internet Explorer 8 böngészőbe 1. Indítsa el az Internet Explorer 8-as böngészőt. (Windows XP esetén: Start menü > Internet
QGIS tanfolyam (ver.2.0)
QGIS tanfolyam (ver.2.0) I. Rétegkezelés, stílusbeállítás 2014. január-február Összeállította: Bércesné Mocskonyi Zsófia Duna-Ipoly Nemzeti Park Igazgatóság A QGIS a legnépszerűbb nyílt forráskódú asztali
E-Freight beállítási segédlet
E-Freight beállítási segédlet Az E-Freight rendszer működéséhez szükséges programok és beállítások v08 A legújabb verzióért kérjük, olvassa be az alábbi kódot: 1. Támogatott böngészők Az E-Freight az Internet
CMS videó megjelenítő szoftver használata
CMS videó megjelenítő szoftver használata Bevezető Ez a felhasználói kézikönyv a HF-DVR5704T 4 csatornás H.264 tömörítésű hálózati rögzítőhöz mellékelt CMS szoftver használatát mutatja be. Nem tér ki az
A számítógép beállításainak megváltoztatása
Megjelenés és témák Először tekintsük át, hogy hogyan lehet a képernyőn megjelenő elemek küllemét módosítani. Válasszuk a Start menü Vezérlőpultban a Megjelenés és témák hivatkozást. Itt kattintsunk a
Java telepítése és beállítása
A pályázati anyagok leadás Mozilla Firefox böngészőn keresztül: Tartalom Java telepítése és beállítása... 1 USB kulcs eszközkezelő telepítése... 4 USB kulcs telepítése böngészőbe... 4 Kiadói tanúsítvány
4. Használati útmutatás
megbízható(másnéven: robusztus): mert a programozási hibák egy részét megakadályozza,a másik részét pedig futás közben kisz ri és támogatja a fejleszt t azok professzionális kezelésében. biztonságos: megakadályozza
RIEL Elektronikai Kft v1.0
DeskCamera v1.6.1 1. DESKCAMERA A DeskCamera segítségével lehetőség nyílik a számítógép monitorán megjelenő képet rögzítő (NVR, DVR) segítségével rögzíteni. 1.1. TECHNIKAI ADATOK Maximális monitor szám:
ivms-4200 kliensszoftver
ivms-4200 kliensszoftver Felhasználói segédlet v1.02 2012.11.21. HU 1. TARTALOM 1. Tartalom... 2 2. Bevezető... 2 2.1. Felhasználás... 2 2.2. Hardverigény... 2 3. Használat... 3 3.1. Vezérlőpult... 3 3.2.
* Az eszköztáron látható menüpontok közül csak a felsoroltak esetén használható a Ctrl.
Általános fogómód használata Az általános fogómód egy olyan objektum érzékeny kurzor, amely az alább felsorolt szerkesztı mőveleteknél felismeri azt, hogy milyen grafilus elem felett áll, és annak megfelelıen
ClicXoft programtálca Leírás
ClicXoft programtálca Leírás Budapest 2015 Bevezetés A ClicXoft programok bár önálló programok közös technológia alapon lettek kifejlesztve. Emellett közös tulajdonságuk, hogy a hasonló funkciókhoz ugyanaz
Gyakorlati vizsgatevékenység A
Gyakorlati vizsgatevékenység A Szakképesítés azonosító száma, megnevezése: 481 04 0000 00 00 Web-programozó Vizsgarészhez rendelt követelménymodul azonosítója, megnevezése: 1189-06 Web-alkalmazás fejlesztés
Készítette: niethammer@freemail.hu
VLogo VRML generáló program Készítette: Niethammer Zoltán niethammer@freemail.hu 2008 Bevezetés A VLogo az általános iskolákban használt Comenius Logo logikájára épülő programozási nyelv. A végeredmény
KATRO-FL rendszer 4CH MOBIL DVR. PC-s visszatekintő program használati utasítása
KATRO-FL rendszer 4CH MOBIL DVR PC-s visszatekintő program használati utasítása Tartalomjegyzék Hogyan kell kivenni a memóriakártyát? 3 Szoftver installálás 3 Az adatok visszanyerése 5 Az adatok megjelenése
Hardver és szoftver követelmények
Java-s Nyomtatványkitöltő Program Súgó Telepítési útmutató Hardver és szoftver követelmények A java-s nyomtatványkitöltő program az alábbi hardverigényt támasztja a számítógéppel szemben: 400 MHz órajelű
Megjegyzés: A programnak tartalmaznia kell legalább egy felhasználói alprogramot. Példa:
1. Tétel Az állomány két sort tartalmaz. Az első sorában egy nem nulla természetes szám van, n-el jelöljük (5
Dokumentum létrehozása/módosítása a portálon:
Dokumentum létrehozása/módosítása a portálon: 1. Belépés a szerkesztőfelületre A következő webcímre belépve - http://www.zalaegerszeg.hu/licoms/login - megjelenik a szerkesztőfelület beléptető ablaka,
A Java nyelv. Dialógus ablakok. Elek Tibor
A Java nyelv Dialógus ablakok Elek Tibor Dialógus ablakok Szerepe: felbukkanó ablak (üzenet, input) Felépítése, használata majdnem ua., mint JFrame Tulajdonos: lehet tulajdonosa, amellyel együtt ikonizálódik,
Órarendkészítő szoftver
SchoolTime Órarendkészítő szoftver 2.0 verzió Tartalomjegyzék: 1., Belépés a programba...3 2., Órarend főtábla...3 3., Tanátok...4 3.1., Új tanár felvitele, módosítása...4 3.2., Tanár törlése...4 3.3.,
Távolléti díj kezelése a Novitax programban
Mire jó a FirebirdSettings.exe Ezzel a programmal a Firebird adatbázis-kezelővel és az adatbázisokkal kapcsolatos beállításokat lehet elvégezni. Mit kell tenni a használata előtt A FirebirdSettings.exe
Raszter georeferálás QGIS-ben Összeállította: dr. Siki Zoltán verzióra aktualizálta: Jáky András
Raszter georeferálás QGIS-ben Összeállította: dr. Siki Zoltán 2.18.3. verzióra aktualizálta: Jáky András (jakyandras@gmail.com) Ez a leírás ahhoz nyújt segítséget, hogy szkennelt térképet vagy ortofotót
Programozási technológia
Programozási technológia Swing GUI készítése NetBeans IDE segítségével Dr. Szendrei Rudolf ELTE Informatikai Kar 2018. Bevezető Eddig a grafikus felhasználói felületet kódból hoztuk létre kézzel. A mi
Operációs rendszerek. Tanmenet
Tanmenet TANMENET- Operációs rendszerek Témakörök Javasolt óraszám 1. Windows XP ismeretek- Munka a képernyőn 2. Windows XP ismeretek- A Start menü elemei 3. Windows XP ismeretek- A billentyűzet 4. Windows
OpenGL és a mátrixok
OpenGL és a mátrixok Róth Gergő 2013. március 4. Róth Gergő 1/20 A rajzoláskor a videókártya minden csúcson végrehajt egy transzformációt. Mire jó? Kamera helyének beállítása Egy objektum több pozícióra
x = cos αx sin αy y = sin αx + cos αy 2. Mi a X/Y/Z tengely körüli forgatás transzformációs mátrixa 3D-ben?
. Mi az (x, y) koordinátákkal megadott pont elforgatás uténi két koordinátája, ha α szöggel forgatunk az origó körül? x = cos αx sin αy y = sin αx + cos αy 2. Mi a X/Y/Z tengely körüli forgatás transzformációs
ELSŐ LÉPÉSEK A SZÁMÍTÓGÉPEK RODALMÁBA AMIT A SZÁMÍTÓGÉPEKRŐL TUDNI ÉRDEMES
ELSŐ LÉPÉSEK A SZÁMÍTÓGÉPEK RODALMÁBA AMIT A SZÁMÍTÓGÉPEKRŐL TUDNI ÉRDEMES Számítógép = Univerzális gép! Csupán egy gép a sok közül, amelyik pontosan azt csinálja, amit mondunk neki. Hardver A számítógép
ECDL Operációs rendszerek Miazön által használt számítógép operációs rendszere és annak verziószáma? Windows XP 1 Hány MB az ön által használt számítógépbe épített RAM? Sajátgépen jobb egérgomb / Tulajdonságok
Kormányzati Elektronikus Aláíró és Aláírás-ellenőrző Szoftver
Kormányzati Elektronikus Aláíró és Aláírás-ellenőrző Szoftver Felhasználói leírás verzió: 1.0 1 TARTALOMJEGYZÉK 1. BEVEZETÉS... 3 2. ALAPKÉPERNYŐ... 3 3. MENÜSZERKEZET... 3 4. DOKUMENTUM ALÁÍRÁSA... 4
Minőségellenőrzési kérdőív kitöltő program Felhasználói kézikönyv
Minőségellenőrzési kérdőív kitöltő program Felhasználói kézikönyv Magyar Könyvvizsgálói Kamara 2010. augusztus 18. Tartalom A program főablaka... 3 A fejléc, a felső menüsor valamint az eszköztár... 4
A PowerMill egy hatékony alámarásmentes CAM rendszer, amellyel 3D-s szerszámpályákat tudunk generálni, importált CAD modellek alapján.
PowerMill 1. Bevezetés 1. BEVEZETÉS A PowerMill egy hatékony alámarásmentes CAM rendszer, amellyel 3D-s szerszámpályákat tudunk generálni, importált CAD modellek alapján. Bementeti fájlformátumok DELCAM
Mesh generálás. IványiPéter
Mesh generálás IványiPéter drview Grafikus program MDF file-ok szerkesztéséhez. A mesh generáló program bemenetét itt szerkesztjük meg. http://www.hexahedron.hu/personal/peteri/sx/index.html Pont létrehozásához
WINDOWS TELEPÍTÉSI ÉS AKTIVÁLÁSI ÚTMUTATÓ A FOTOBETYAR.HU - PHOTOSHOP PLUGINJEIHEZ
WINDOWS TELEPÍTÉSI ÉS AKTIVÁLÁSI ÚTMUTATÓ A FOTOBETYAR.HU - PHOTOSHOP PLUGINJEIHEZ Köszöntünk! Jó döntést hoztál, hogy az általunk fejlesztett plugineket választottad, nézzük is meg gyorsan, hogyan tudod
Objektumok és osztályok. Az objektumorientált programozás alapjai. Rajzolás tollal, festés ecsettel. A koordinátarendszer
Objektumok és osztályok Az objektumorientált programozás alapjai Rajzolás tollal, festés ecsettel A koordinátarendszer A vektorgrafikában az egyes grafikus elemeket (pontokat, szakaszokat, köröket, stb.)
Vodafone Mobile Connect telepítése
Vodafone Mobile Connect telepítése Kérjük ne csatlakoztassa a Vodafone Mobile Connect eszközt a Mac számítógépéhez. Ha esetleg már csatlakoztatta az adatkártyát vagy a modemet a Mac számítógépéhez, akkor
Java és web programozás
Budapesti M szaki Egyetem 2015. 03. 18. 6. El adás Graka Java-ban Emlékezzünk kicsit vissza a tikz-re: \begin{tikzpicture \draw (0,0) node[draw,circle] (S) {s; \draw (3,2) node[draw,circle] (A) {a; \draw
Digitális aláíró program telepítése az ERA rendszeren
Digitális aláíró program telepítése az ERA rendszeren Az ERA felületen a digitális aláírásokat a Ponte webes digitális aláíró program (Ponte WDAP) segítségével lehet létrehozni, amely egy ActiveX alapú,
Bevezető. Mi is az a GeoGebra? Tények
Bevezető Mi is az a GeoGebra? dinamikus matematikai szoftver könnyen használható csomagolásban az oktatás minden szintjén alkalmazható tanításhoz és tanuláshoz egyaránt egyesíti az interaktív geometriát,
Információ megjelenítés Számítógépes ábrázolás. Dr. Iványi Péter
Információ megjelenítés Számítógépes ábrázolás Dr. Iványi Péter Raszterizáció OpenGL Mely pixelek vannak a primitíven belül fragment generálása minden ilyen pixelre Attribútumok (pl., szín) hozzárendelése
3. Osztályok II. Programozás II
3. Osztályok II. Programozás II Bevezető feladat Írj egy Nevsor osztályt, amely legfeljebb adott mennyiségű nevet képes eltárolni. A maximálisan tárolható nevek számát a konstruktorban adjuk meg. Az osztályt
A LOGO MOTION TANÍTÁSA
A LOGO MOTION TANÍTÁSA ÍRTA: SZABÓ JÁNOS TANÍTÓ 2010, KECEL LOGO MOTION TANÍTÁSA KÉSZÍTETTE: SZABÓ JÁNOS TANÍTÓ 2010. 1 1. FOGLALKOZÁS Kattintsunk a Logo motion ikonjára. A Színes teki. Ez a program ablaka.
Teljesítményprognosztizáló program FELHASZNÁLÓI KÉZIKÖNYV
Teljesítményprognosztizáló FELHASZNÁLÓI KÉZIKÖNYV Tartalomjegyzék 1. A szoftver feladata...3 2. Rendszerigény...3 3. A szoftver telepítése...3 4. A szoftver használata...3 4.1. Beállítások...3 4.1.1. Elszámolási
BaBér bérügyviteli rendszer telepítési segédlete 2011. év
BaBér bérügyviteli rendszer telepítési segédlete 2011. év Ajánlott konfiguráció A program hardverigénye: Konfiguráció: 2800 MHz processzor 512 Mbyte memória (RAM) / Szerver gépen 1G memória (RAM) Lézernyomtató
MÁV-START Tudáspróba Felhasználói kéziköny
MÁV-START Tudáspróba Felhasználói kéziköny Tartalomjegyzék Bejelentkezés a tudáspróbára... 3 Kijelentkezés... 3 Megkezdett tudáspróba folytatása... 4 Tudáspróba kiválasztása... 5 Tudáspróba kiválasztása...
Szövegszerkesztés alapok WORD Formázások
Szövegszerkesztés alapok WORD Formázások A formázás sorrendje 1. Begépelem a szöveget folyamatosan 2. Helyesírást ellenőrzök 3. Entert (bekezdés) vagy Shift + Entert ütök 4. Formázok KIJELÖLÖM A FORMÁZANDÓ