"Kréta szigetén élt egy szörny egy labirintusban, akit Minótaurusznak hívtak. Mínosz király knószoszi csodaszép palotájában állt ez a labirintus, szövevényes útvesztőiből ember még élve nem került ki, mert a bikafejű ember testű szörny felfalta az áldozatul odaküldötteket." A monda szerint a szörnyet az ifjú Thészeusznak sikerült legyőznie, aki nagyon elgyengült a harcban. Thészeusznak a kezében csupán egyetlen fáklya ég, az sem sokáig, és minden lépéssel gyengül az ereje. Sajnos most nem segített neki a szépfürtű Ariadné, így Neked kell segíteni Thészeusznak kijutni a labirintusból, mielőtt végképp elgyengül.
A labirintus egy NxM elemből álló játéktábla. Minden cella alapvetően kétféle elem lehet: fal vagy padló. A játékmezőt mindenhol fal veszi körbe, csupán egy helyen van rajta kijárat, ide kell Thészeusznak eljutnia, akinek a kiindulási pontja valahol a labirintus gyomrában van.
A labirintusból mindig csak egy 11x11-es rész látszik, azaz maga a játékmező ekkora (nagy labirintus esetén ennyi látszódik). Thészeusz mindig a játékmező közepén helyezkedik el. Thészeusz irányítása a billentyűzet kurzorbillentyűivel történik, egyszerre egyet léphet vízszintesen vagy függőlegesen. Lépéskor nem ő maga mozdul el (ő mindig középen van), hanem a labirintus mozog a játékmezőben (azaz Thészeusz jobbra lépésekor igazából a labirintus látható részét mozgatjuk balra alatta).
A labirintusban nincsen világítás, csupán Thészeusz fáklyája világítja meg az utat. A megvilágítás szabályai a következők. A fáklya egy 11x11-es mezőt képes megvilágítani a hős körül (azaz a teljes játékmezőt), de a falakon a fáklya sem tud átvilágítani. Azt, hogy egy adott pont látható-e, többféleképpen is el lehet dönteni, például a következőképpen: Vegyük először a Thészeusz körüli nyolc pontot. Ha ott padló van, akkor megvilágítja, ha fal, akkor nem (ekkor a fal maga még látszik). Vegyük a Thészeusz körüli következő gyűrűt. Minden pont esetén vizsgáljuk meg az ő nyolc szomszédját, és döntsük el, melyik esik legközelebb Thészeuszhoz. Ha ez megvilágított, akkor ő maga is megvilágított lesz, ha nem, akkor oda sem jut el a fény. Folytassuk ezt minden további gyűrűre is.
Kezdetben Thészeusznak van valamennyi életerő pontja, és a fáklyájának égési ideje másodpercben. Minden lépéssel az életerő pont eggyel csökken, a fáklya égési ideje pedig az eltelt időnek megfelelően fogy. Elérve a kijáratot írjuk ki a hátralévő időt és az életerőpontot.
Speciális mezők is vannak a pályán:
víz: erre lépve az életerő két ponttal csökken.
bozótos: erre lépve az életerő tíz ponttal csökken.
étel: erre lépve az életerő 50 ponttal nő. Lelépve eltűnik.
fáklya: erre lépve újra a teljes idő áll a feladat elvégzésére. Lelépve eltűnik.
A pályák grafikai elemeire és a dizájnra nincsenek megkötések. Megvalósítható HTML elemekkel és canvas
elemmel is. Egy pályának tartalmaznia kell:
A játék főoldalán mindenki számára legyen elérhető egy egyszerű kis labirintus csalogatás céljából. Ugyanezen az oldalon legyen lehetőség a regisztrálásra és bejelentkezésre, ugyanis a további funkciókat csak azonosított felhasználók érhetik el.
A bejelentkezéshez meg kell adni a felhasználónevet és jelszót. Regisztráció során a felhasználónév és jelszó mellett kérjük be a teljes nevét és e-mail címét is az illetőnek. Szabályok: mindegyik kötelező, az e-mail címben kell lennie @
karakternek.
Sikeres bejelentkezés után egy listaoldalra kerülünk. Két lista jelenik meg: az általunk szerkesztett pályák listája, és a velünk megosztott pályák listája. Mindkét táblázatban a következő oszlopok legyenek: pálya mérete, életerő, fáklya időtartama, illetve hogy sikerült-e megoldani. Az első táblázatban e mellett jelenjen meg a készítés ideje, a másodikban a megosztó e-mail címe.
Bármelyik pályára kattintva megjelenik az adott pálya oly módon, ahogy azt fentebb leírtuk. Legyen lehetőség a játékot feladni. A pálya sikeres vagy sikertelen megoldását követően térjünk vissza a listaoldalra.
A listaoldalon legyen lehetőség átmenni a pályaszerkesztő oldalra. Ezen meg kell adni az új pálya méreteit, életerőt és fáklyaidőt, majd egy táblázatban meg kell adni a labirintust. Ez történhet például úgy, hogy valamilyen módon szöveges formátummal írjuk le a pályát, de fel lehet használni a játékhoz megírt logikát oly módon, hogy "Thészeusszal" szabadon járjuk be a labirintust, és a tartózkodási helyre automatikusan vagy pl. a szóköz lenyomásával valamilyen elemet helyezünk el (utat, falat, ételt, fáklyát, vizet, bozótost, kijáratot és Thészeuszt). A szerkesztés végeztével mentsük el és térjünk vissza a lista oldalra. Ekkor a saját pályák között jelenjen meg az újonnan szerkesztett.
A lista oldalon legyen lehetőség a pályát megosztani másokkal. Ekkor egy felugró panelen egy vagy több e-mail címet kell megadni (pl. vesszővel elválasztva őket, vagy egy többsoros beviteli mezőben soronként), majd egy gombra kattintva AJAX technológiával az oldal újratöltése nélkül kerüljön a megosztás érvényesülésre. Ekkor azoknál a felhasználóknál, akiknek a regisztrált e-mail címe megegyezik a most megadottal, megjelenik a pálya.
A pályaleírást érdemes valamilyen módon JSON formátumban megadni. Az adatok tárolása adatbázisban történik.
A feladatot Codeigniter segítségével készítsd el!
A JavaScriptes kódrészleteknek JSLint-en át kell menniük alap beállítási értékekkel.
jQuery használható.
A PHP-s kódnak az MVC szabályait be kell tartaniuk, azaz modellben ne jelenjen kéréshez tartozó adat (pl. $_GET
vagy $_POST
), és HTML se. A nézetben ne legyen feldolgozás. Stb.
A megoldásokat a webprogramozas.inf.elte.hu szerverre kell feltölteni, és publikusan elérhetővé tenni. A megfelelő hivatkozást a gyakorlatvezetőnek kell elküldeni e-mailben.
Határidő: 2014. június 1. éjfél