204 lines
2.7 KiB
Markdown
204 lines
2.7 KiB
Markdown
# 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
|
|
)
|
|
```
|
|
|
|
### 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.
|
|
|
|
---
|
|
|
|
## 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!")
|
|
```
|
|
|
|
---
|
|
|
|
### Adat
|
|
|
|
```python
|
|
self.data
|
|
```
|
|
|
|
A menüelemhez kapcsolódó opcionális adat, amelyet az akciófü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
|
|
```
|