Jelentkeztél NZH-ra? Biztos? Ellenőrizted?! Ez az utolsó lehetőség.
Nézted a nagy házik listáját? Választottál feladatot?
Ne feledd, ezek határidős feladatok!
A labirintus egy fallal körülvett 10×10-es tábla. A labirintust körülvevő falon egy kijárat található. A labirintusban több kincset rejtettek el. A játékos feladata, hogy összeszedje a kincseket és eljusson a kijáratig.
XXXXXX XXX X* X X XXXX XXX X X X X XXXX XXX X X X*X X XX*X X X X@ XXX X X X *X X XXXXXXXXXX
A labirintust a fenti formában kell megjeleníteni. A falakat X
jelzi, a járható részeket szóköz, az elrejtett
kincseket a *
karakter, a játékost pedig a @
. Ha a játékos felvette, a kincs helyére is szóköz kerül.
Ebben a feladatban az alább látható részfeladatok mind egymásra épülnek, vagyis sorban kell megcsinálnod őket. Minden függvény megírásakor írj egy rövid programrészt a főprogramba, amely meghívja a függvényt – így lépésenként ellenőrizni tudod azt, hogy helyesen működik-e.
A pálya
Hozz létre egy két dimenziós listát a labirintus tárolására! Tárolja ez a pálya egyes celláit, először sorral, aztán pedig oszloppal indexelve. Alább megadjuk a pályát sztringek listájaként; ezt kell átmásolnod a saját, 10×10-es kétdimenziós listádba úgy, hogy minden listaelem egy karakter legyen:
kiindulas = [
"XXXXXX XXX",
"X* X X",
"XXXX XXX X",
"X X",
"X XXXX XXX",
"X X X*X",
"X XX*X X X",
"X@ XXX X X",
"X *X X",
"XXXXXXXXXX",
]
Kirajzolás
Írj függvényt, amely paraméterként veszi a labirintust tároló adatszerkezetet és kirajzolja azt a képernyőre!
Kincsek száma
Írj függvényt, amelyik megadja, hogy a pályán hány kincs van!
A játékos mozgása
Írj függvényt, amelyik a játékot vezérli! Ez a következő feladatokat kell végrehajtsa egy ciklusban:
- Kérje be a felhasználótól a mozgási irányt. A felhasználó az A,S,D,W betűk valamelyikét nyomja majd (rendre balra, le, jobbra, fel irányokhoz), utána pedig entert.
- Ellenőrizze ezután, hogy lehet-e arra menni, nem ütközik-e falba a játékos.
- Ha nem, mozgassa, és vegye figyelembe azt is, hogy kincset talált-e, vagy a kijárathoz ért-e.
- Ha üres sort kapott, vagy elérte a kijáratot, akkor vége a játéknak, amúgy rajzolja ki újra a pályát.
Kincsek száma
Miután vége lett a játéknak, ellenőrizze a program a pályát, és számolja meg, hány kincs maradt!
Szorgalmi feladat: a kijárat helye
A fenti példában és mintamegoldásban a kijáratot nem jelöli semmilyen karakter; csak a pálya északi részén lehet. Egészítsd
ki úgy a programod, hogy a kijáratnak is adsz egy jelet, pl. a #
karaktert, és oda kell eljutnia a játékosnak!
- Szorgalmi feladat: a labirintusos játékba építsd be a PyConio modult! Ezzel megoldhatod azt is, hogy színes legyen a kimenet, továbbá hogy ne kelljen minden lépés után entert nyomni.
- Írhatsz további játékokat is.
- Dolgozhatsz a nagy házi feladatodon is.