« 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:

 

az akciók ablaka (kérdés eseményekkel) 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ó.