Ohjaustoiminnot

On olemassa useita toimintoja, joilla voit hallita, mitkä muista toiminnoista suoritetaan. Monet näistä toiminnoista testaavat kysymystä, esimerkiksi sellaista, että onko jokin sijainti tyhjä. Kun vastaus on kyllä (true, tosi), seuraava toiminto suoritetaan, muuten se ohitetaan. Jos halutaan suorittaa tai ohittaa monta toimintoa tuloksen mukaan, ne voidaan laittaa toimintoryhmään ympäröimällä ne toimintoryhmän aloitus- ja lopetustoiminnoilla. Tähän rakenteeseen voidaan myös liittää else (muutoin)-osa, joka suoritetaan, kun aiemman kysymyksen vastaus on ei. Tällainen kysymysrakenne näyttää tyypillisesti siis seuraavalta:

Tässä kysytty kysymys on, että onko nykyisen instanssin sijainti törmäysvapaa. Jos asia on näin, instanssi alkaa liikkua annettuun suuntaan. Muutoin se siirtyy annettuun sijaintiin.

Kaikkia kysymyksiä luodessa on mahdollista valita valintalaatikko NOT. Jos valitset sen, kysymyksen tulos on käänteinen, eli todesta tulee epätosi ja päinvastoin. Tällä tavoin voit suorittaa toimintoja, kun kysymyksen vastaus on ei.

Monissa kysymyksissä voit määrittää, pitäisikö niiden toimia kaikilla tietyn objektin instansseilla. Tässä tapauksessa tulos on tosi vain, jos se on kaikkien instanssien puolesta tosi. Voit esimerkiksi tarkistaa, onko kaikkien ball-objektin instanssien hiukan oikealla olevassa sijainnissa törmäysvapaa alue.

Seuraavat kysymystoiminnot ja niihin liittyvät muut toiminnot ovat käytettävissä. (Huomaa, että niillä kaikilla on erimuotoinen kuvake ja taustaväri, joiden avulla ne voidaan erottaa helpommin muista toiminnoista.)

Check Empty (Tarkista, onko tyhjä)
Tämä kysymys on tosi, jos nykyisen instanssin siirtyessä määritettyyn paikkaan ei synny törmäystapahtumaa minkään muun objektin kanssa. Voit määrittää sijainnin joko absoluuttiseksi tai suhteelliseksi (relative). Voit myös määrittää, tarkistetaanko törmäykset vain kiinteiden (solid) vai kaikkien objektien suhteen. Tätä toimintoa käytetään tyypillisesti tarkistettaessa, voiko instanssi siirtyä tiettyyn sijaintiin.

Check Collision (Tarkista, onko törmäys)
Tämä toiminto on edellisen vastakohta. Sen vastaus on tosi, jos nykyiselle instanssille syntyy törmäystapahtma, kun se siirretään annettuun sijaintiin (voit määrittää jälleen, tarkistetaanko tilanne vain kiinteiden vaiko kaikkien objektien osalta).

Check Object (Tarkista, onko objekti)
Tämä kysymys on tosi, jos nykyinen instanssi tapaa määritetyn objektin instanssin, kun se siirretään määritettyyn sijaintiin.

Test Instance Count (Testaa instanssien määrä)
Tähän toimintoon voit määrittää objektin ja luvun. Jos määritetyn objektin instanssien määrä on yhtä kuin annettu luku, vastaus on tosi. Muutoin se on epätosi. Voit myös määrittää, että instanssien määrän pitäisi olla vähemmän tai enemmän kuin annettu luku. Tätä toimintoa käytetään usein, kun tarkistetaan, ovatko kaikki tietyntyyppiset instanssit poissa. Tämä on usein kentän tai pelin loppumisen merkki.

Test Chance (Testaa mahdollisuutta)
Tähän toimintoon määritellään nopan sivujen määrä, kun sitä heitetään. Jos nopasta tulee tulokseksi yksi, tulos on tosi ja seuraava toiminto suoritetaan. Tällä tavalla voit luoda peliisi sattumanvaraisuuden elementtejä. Voit esimerkiksi joka askeleella luoda pommin tai vaihtaa suuntaa tietyllä todennäköisyydellä. Mitä enemmän sivuja nopassa on, sitä pienempi todennäköisyys on. Voit itse asiassa käyttää tässä reaalilukuja, eli jos käytät esimerkiksi lukua 1.5, seuraava toiminto suoritetaan kahdessa kolmesta tapauksesta. Luvun, joka on alle 1 käyttämisessä ei ole mitään järkeä.

Check Question (Tarkista kysymällä)
Tähäm toimintoon määritellään kysymys. Pelissä kysymys näytetään pelaajalle, ja vaihtoehtoina ovat kyllä ja ei. Tulos on tosi, jos pelaaja vastaa kyllä.

Test Expression (Testaa lauseketta)
Tämä on kaikkein tavallisin kysymystoiminto. Voit määrittää minkä tahansa loogisen lausekkeen. Jos lausekkeen arvoksi tulee tosi (luku, joka on suurempi tai yhtä suuri kuin 0.5), seuraava toiminto suoritetaan. Myöhemmin selitetään lisää lausekkeista.

Check Mouse (Tarkista hiiri)
Vastaus on tosi, jos määritettyä hiiren painiketta painetaan. Normaalisti tätä käytetään askeltoiminnossa. Voit tarkistaa, onko hiiren painike painettuna, ja jos on, voit esimerkiksi siirtyä hiiren sijaintiin (käytä Jump To Position (Hyppää paikkaan) -toimintoa arvoilla mouse_x ja mouse_y).

Check Grid (Tarkista ruudukko)
Vastaus on tosi, jos instanssin sijainti on ruudukon pisteessä. Voit määrittää tarkistuksessa käytettävän ruudukon pysty- ja vaakasuuntaisen ruutukoon. Tämä on todella hyödyllinen, kun jotkin toiminnot, kuten kääntyminen, ovat sallittuja vain instanssin ollessa ruudukon pisteessä.

Start Block (Aloita toimintoryhmä)
Määrittää toimintoryhmän alkavaksi.

End Block (Lopeta toimintoryhmä)
Määrittää toimintoryhmän loppuvaksi.

Else (Muutoin)
Tämän toiminnon jälkeen tulee kysymysrakenteen else-osa, joka suoritetaan, jos kysymyksen tulos on epätosi.

Repeat (Toista)
Tämän toiminnon avulla voidaan toistaa seuraavaa toimintoa (tai toimintoryhmää) tietty määrä kertoja. Kaikki, mitä sinun tulee asettaa, on toistokertoen määrä.

Exit Event (Poistu tapahtumasta)
Kun tämä toiminto tavataan, mitään sen jälkeen olevia toimintoja tapahtumasta ei suoriteta. Esimerkiksi, jos sijainti on vapaa, mitään ei enää tarvitse tehdä, joten on järkevää poistua tapahtumasta. Tällä tavalla toteutetussa tapahtumassa kysymysrakennetta seuraavat toiminnot suoritetaan vain, jos törmäys tapahtuu.

Jos haluat hallita pelisi sisällä tapahtuvia asioita entistä laajemmin, voit käyttää sisäänrakennettua ohjelmointikieltä, josta kerrotaan kaikki tämän ohjeistuksen neljännessä osassa. Sillä saat paljon joustavuutta peliisi toimintojen käyttämisen sijaan. Helpompi, mutta myös tärkeä, käyttötapa on omien muuttujien käyttäminen. Seuraavat toiminnot käsittelevät näitä asioita.

Execute Code (Suorita koodia)
Kun lisäät tämän toiminnon, voit kirjoittaa ilmestyvään ikkunaan koodipätkän, joka pitää suorittaa. Tämä voi sisältää yksinkertaisia funktiokutsuja tai monimutkaisempaa koodia. Käytä tätä toimintoa mieluiten vain pienten koodipätkien käsittelyyn. Pidempen koodien käyttöön suositellaan skriptejä, joita käsitellään tämän ohjeistuksen toisessa osassa.

Comment (Kommentti)
Tällä toiminnolla voit lisätä kommenttirivejä toimintolistalle. Nämä rivit kirjoitetaan kursivoituina. Kommenttien lisääminen auttaa muistamaan, mitä tapahtumissasi tapahtuu. Tämä toiminto itse ei tee yhtään mitään. Huomaa kuitenkin, että se on silti toiminto. Jos siis asetat sen kysymystoiminnon jälkeen, se on toiminto, joka suoritetaan kysymyksen ollessa tosi (vaikkei se tee edes mitään).

Set Variable (Aseta muuttuja)
Pelissä on monta sisäänrakennettua muuttujaa. Tämän toiminnon avulla voit muuttaa niiden arvoja. Voit myös luoda omia muuttujia ja antaa niille arvoja. Sinun tulee määrittää muuttujan nimi ja uusi arvo. Kun valitset Relative (suhteellinen) -valintalaatikon, annettu arvo lisätään nykyiseen muuttujan arvoon. Huomaa, että näin voidaan tehdä vain, kun muuttujalla on jo arvo! Muuttujista on lisää tietoa myöhempänä.

Test Variable (Testaa muuttujaa)
Tällä toiminnolla voit tarkisyaa, mikä tietyn muuttujan arvo on. Jos sen arvo on yhtä kuin määritetty arvo, kysymyksen vastaus on tosi. Muutoin se on epätosi. Voit myös määrittää, että tarkistuksessa tulisi tarkistaa, onko muuttuja pienempää kuin annettu arvo tai suurempaa kuin annettu arvo. Myöhempänä on lisää tietoa muuttujista. Voit myös käyttää tätä toimintoa kahden lausekkeen vertailemiseen.

Draw Variable (Piirrä muuttuja)
Tällä toiminnolla voit piirtää muuttujan arvon tiettyyn sijaintiin ruudulla. Huomaa, että tätä toimintoa voidaan käyttää vain objektin piirtotapahtumassa (Draw).