# MenuItem ## Áttekintés A `MenuItem` osztály egy játék menürendszerének egyetlen választható elemét reprezentálja. Az osztály kezeli: - a menüpont szövegének megjelenítését, - a kijelölést, - a menüpontok közötti navigációt, - a kiválasztáskor meghívandó függvényt (akciót), - valamint a kurzor kirajzolását. A menüpontok egy irányított hálózatot alkotnak, ahol minden elem ismeri a szomszédait (`up`, `down`, `left`, `right`). --- ## Konstruktor ```python MenuItem( label, x, y, left, right, up, down, action, data=None, back_func=None ) ``` ### Paraméterek - `label` (`str`) A menüpont megjelenő szövege. - `x` (`int`) A menüpont vízszintes pozíciója. - `y` (`int`) A menüpont függőleges pozíciója. - `left` (`MenuItem | None`) A bal oldali szomszédos menüpont. - `right` (`MenuItem | None`) A jobb oldali szomszédos menüpont. - `up` (`MenuItem | None`) A felső szomszédos menüpont. - `down` (`MenuItem | None`) Az alsó szomszédos menüpont. - `action` (`callable`) A menüpont kiválasztásakor meghívandó függvény. - `data` (`any`, opcionális) A kiválasztáskor az akciónak átadott adat. - `back_func` (`callable`) A menüpont kiválasztásakor meghívandó függvény. --- ## Attribútumok ### Navigáció ```python self.left self.right self.up self.down ``` A szomszédos menüpontokra mutató referenciák. Ha egy adott irányban nincs további menüpont, akkor az attribútum értéke: ```python None ``` --- ### Akció ```python self.action ``` A kiválasztás során meghívandó függvény. Példa: ```python def start_game(data): print("Játék indul!") ``` --- ### Vissza ```python self.back ``` A visszalépés során meghívandó függvény. Példa: ```python def vissza(data): open_menu() ``` --- ### Adat ```python self.data ``` A menüelemhez kapcsolódó opcionális adat, amelyet az akció- és visszafüggvény paraméterként kap meg. Példa: ```python MenuItem( "Nehéz", 100, 100, None, None, None, None, set_difficulty, "hard" ) ``` Kiválasztáskor: ```python set_difficulty("hard") ``` fut le. --- ### Pozíció ```python self.x self.y ``` A menüpont képernyőn elfoglalt pozíciója. --- ### Szövegmegjelenítő ```python self.text ``` Egy `TextRenderer` objektum, amely a felirat megjelenítéséért felel. --- ### Kijelölt állapot ```python self.selected ``` Logikai érték: - `True`: a menüpont jelenleg ki van jelölve; - `False`: a menüpont nincs kijelölve. --- ## Metódusok ### `select()` ```python select() ``` Kijelöli a menüpontot. #### Működés ```python self.selected = True ``` #### Példa ```python start_button.select() ``` --- ### `update()` ```python update() ``` A menüpont állapotának frissítése. Ha az elem nincs kijelölve, a függvény azonnal visszatér: ```python if not self.selected: return ```