« Előző oldal- - - ^Tartalom^- - - Következő oldal »
12.4 fejezet
Ellenőrző akciók
Számos akció van, amelyekkel ellenőrizheted, hogy milyen más akciók hajtódnak végre. Ezek legtöbbje "kérdéseket" tesz fel, például hogy egy adott pozíció üres-e. Ha a válasz igen, a következő akció végrehajtódik, egyébként kihagyódik. Ha több akciót akarsz így a választól függően végrehajtani vagy átugorni, az akciókat egy blokkba tudod helyezni. Egy blokkot a start block (blokk eleje) és end block (blokk vége) akcióval kell jelezni. Lehet egy else (különben) rész is, amely akkor hajtódik végre ha a válasz nemleges. Tehát egy kérdés általában így néz ki:
![]() |
Itt a példában a kérdés arra vonatkozik, hogy a jelenlegi példány egy adott helyen "ütközésileg szabad-e" (collision free). Ha a válasz igen, a példány az adott irányba kezd el mozogni. Ha a válasz nem, a példány az adott pozícióba ugrik. |
Minden kérdéshez tartozik egy NOT
jelzésű mező. Ha ez ki van pipálva, a kérdés eredménye
megfordul. Szóval a nem válaszból igen lesz és az igenből
nem. Ez lehetővé teszi hogy, nemleges válaszokhoz rendeljünk
akciót.
Sok kérdésnél megadható, hogy egy adott objektum összes
példányára vonatkozzon. Ebben az esetben a válasz csak akkor
igaz, ha az objektum összes példányára igaz. Például így
kérdezheted le, hogy az összes labda mozgása jobbra szabad-e
(collision free).
A következő kérdések és kapcsolódó akciók érhetők el:
(Ezek az akciók a többitől eltérő alakú ikonnal és
háttérszínnel vannak jelölve, így könnyen
megkülönböztethetők a többitől.)
If a position is collision free
Erre a kérdésre a válasz akkor igaz, ha a példányt az adott
pozicióba helyezve ott nem ütközik más objektummal. A
poziciót megadhatod abszolútan és a példányhoz viszonyítva
relatívan is. Azt is meg kell adni, hogy csak a tömör
objektumok kerüljenek számításba vagy a nem tömörek is. Ezt
az akciót általában annak az ellenőrzésére használjuk,
hogy a példány az adott helyre mozoghat-e, vagy nem.
If there is a collision at a position
Az előző akció fordítottja. Akkor igaz a válasz, ha a
példány az adott pozicióba mozogva más objektummal ütközne.
(Szintén meg kell jelölni, hogy minden objektum számításba
kerüljön, vagy csak a tömör objektumok.)
If there is an object at a position
Ez a kérdés igaz választ ad vissza, ha a példányt az adott
pozícióba helyezve az adott objektum egy példányával
találkozik.
If the number of instances is a value
Egy objektumot és egy számot kell megadni. Ha az objektum
példányainak a száma megegyezik az adott számmal, a
kérdésre a válasz igen. Egyéb esetben a válasz nem. Az is
ellenőrizhető, hogy a példányok száma egy adott értéknél
kisebb, vagy nagyobb. Ezt általában annak az ellenőrzésére
használjuk, hogy egy objektumnak van-e még példánya. Ez
jelölheti egy szint vagy a teljes játék végét.
With a change perform next action
Meg kell határozni egy kocka oldalainak számát. Ha a kocka az
egyesre esik, a válasz igaz és a következő akció
végrehajtódik. Ezzel véletlenszerűséget tehetsz a játékba.
Például minden egyes lépésben az adott valószínűséggel
irányt változtathatunk vagy bombát készíthetünk. Minél
nagyobb a kocka oldalainak száma annál kisebb a
valószínűsége annak hogyaz esemény bekövetkezik. Valós
számokat használhatunk. Ha az oldalak számát 1.5-re
állítjuk, a következő akció három alkalomból kétszer
végrehajtódik. Egynél kisebb szám esetében semmi sem
történik.
If the user answers yes to a question
Meg kell adni egy kérdést. Egy párbeszédablak ugrik fel egy
yes (igen) és egy no (nem) gombbal. Ha a játékos igennel
válaszol, az eredmény true (igaz) lesz.
If an expression is true
Egy kifejezést kell megadni. Ha a kifejezés értéke igaz lesz
(nagyobb vagy egyenlő mint 0.5), a következő akció
végrehajtódik. A kifejezésekről bővebben lesz szó a
későbbiekben.
If a mouse button is pressed
Igaz, ha a megadott egérgomb le van nyomva. Általában a
lépés eseményben használjuk. Ellenőrizni tudod, hogy egy
egérgomb le van-e nyomva, és ha igen, például mozgathatsz
valamit abba a pozícióba (használd a jump to a point
akciót a mouse_x és mouse_y értékekkel).
If instance is aligned with grid
Igaz, ha a példány a hálózaton fekszik. Meg kell határozni a
hálózat vízszintes és függőleges felosztásának
értékét. Hasznos bizonyos akciókhoz, például ha egy
elfordulást csak akkor engedünk, ha a példány hálózati
ponton áll.
Start of block
Akciók blokkjának kezdetét jelzi.
End of block
Akciók blokkjának végét jelzi.
Else
Az ez után álló akció akkor hajtódik végre, ha a kérdés
eredménye nemleges.
Repeat next action
Ezzel az akcióval a következő akciót (vagy akciók blokkját)
ismételheted meg többször. Csak az ismétlések számát kell
megadni.
Exit the current event
Ennek elérése után az adott eseményben több már nem
hajtódik végre. Általában kérdések után használjuk.
Például ha egy pozició üres, nem kell tennünk semmit, és
kilépünk az eseményből. Ebben a példában a többi akció
csak akkor hajtódik végre, ha a pozicióban ütközés
történik.
Ha jobban irányítani akarod a játék
történéseit, akkor használhatod a beépített programnyelvet.
Ez sokkal több lehetőséget ad az akciók használatánál. A
következő akciók foglalkoznak ezzel:
Execute a piece of code
Mikor megadod ezt az akciót, felbukkan egy ablak, amelybe
begépelheted a végrehajtandó kódot. Ez tartalmazhat egyszerű
függvényhívást, de valami bonyolultabbat is. A kód akció
csak kisebb kódok végrehajtására ajánlott. A nagyobbakat
tanácsos saját függvényként, szkriptként megírni,
melyekről bővebben a18. fejezetben olvashatsz.
Comment
Ezzel az akcióval megjegyzést fűzhetsz az akciók
listájához. Ez a sor dőlt betűvel jelenik meg. A
megjegyzések hozzáadása segít, hogy emlékezz, mit is
csinálnak az eseményeid. Nem csinál semmit, de attól ez még
egy akció! Ezért mikor elhelyezed egy feltételes akció után,
akkor végrehajtódik, ha a feltétel igaz (még akkor is, ha nem
csinál semmit).
Set the value of a variable
A játékban sok beépített változó van. Ezzel az akcióval
ezeket változtathatod meg. Szintén alkothatsz saját
változókat, és ezek értékét is megváltoztathatod. Meg kell
adnod a változó nevét és az új értéket. Ha kipipálod a Relative
négyzetet, a megadott érték a jelenlegihez adódik hozzá. Ez
csak akkor működik, ha a változóhoz már volt érték
rendelve! A továbbiakban több információt találsz a
változókról.
If a variable has a value
Ezzel az akcióval leellenőrizheted, hogy milyen érték
tartozik a jelenlegi változóhoz. Ha a változó értéke
egyenlő a megadott számmal, a visszatérési érték true
(igaz) lesz, különben false (hamis). Beállíthatod, hogy az
legyen ellenőrizve, hogy az érték kisebb-e a megadottnál,
vagy az, hogy nagyobb. A változókról a későbbiekben találsz
még ismertetőt. Ezt az akciót két kifejezés
összehasonlítására is használhatod.
Draw the value of a variable
Ezzel az akcióval kiírathatod egy változó értékét a
képernyő egy adott pontjára. Jegyezd meg, hogy ez csak
valamelyik objektum rajzolás eseményében (draw
event) használható.