7. hét: vegyes feladatok, gyakorlás

Czirkos Zoltán, Frey Balázs · 2025.10.12.

1. NZH, NHF

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!

2. Ikerprím

Ikerprímeknek nevezzük azokat a prímszám együtteseket, amelyeknél n és n+2 is prím. Az első 3 ilyen pár (3, 5), (5, 7) és (11, 13). Melyik a 60-adik? Határozd meg Python programban! Használj top-down tervezést, ne duplikáld a prímkereső algoritmust!

3. Labirintus játék

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!

4. További feladatok

  • 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.