Luku 5

Animaatio

Animaation tekeminen onnistuu tekemällä silmukan, joka joka kierroksella tyhjentää näytön ja piirtää siihen uuden sisällön.

Komento ClearScreen tyhjentää näytön. Väri on oletuksena musta, mutta sen voi vaihtaa komennolla ClearColor.

Komento DrawScreen piirtää näytön uudestaan. Kun tätä komentoa käyttää silmukassa, komento huolehtii automaattisesti siitä, että näyttö piirretään uudestaan 60 kertaa sekunnissa.

Liikkuva ympyrä

Seuraava koodi luo animaation, jossa ympyrä liikkuu ruudun halki:

FillColor 0, 255, 0
For x = 100 To 500
    ClearScreen
    FillCircle x, 200, 50
    DrawScreen
Next x

Animaatio näyttää tältä:

Do-silmukka

Do-silmukka soveltuu usein hyvin animaation tekemiseen. Sitä voi käyttää niin, että silmukan koodi toistuu loputtomiin, kunnes käyttäjä sulkee ohjelman.

Seuraava koodi liikuttaa ympyrää oikealle aloittaen x-kohdasta 100. Kun ympyrä saavuttaa x-kohdan 500, se palaa jälleen x-kohtaan 100.

FillColor 0, 255, 0
Dim x = 100
Do
    ClearScreen
    FillCircle x, 200, 50
    DrawScreen
    x = x + 1
    If x = 500 Then x = 100
Loop

Satunnaisliike

Seuraava koodi muuttaa ympyrän suuntaa satunnaisesti:

FillColor 0, 255, 0
Dim x = 320
Dim y = 240
Do
    ClearScreen
    FillCircle x, y, 50
    DrawScreen
    Dim a = Rnd(1, 4)
    If a = 1 Then x = x - 1
    If a = 2 Then x = x + 1
    If a = 3 Then y = y - 1
    If a = 4 Then y = y + 1
Loop

Koodi arpoo joka kierroksella luvun väliltä 1–4 muuttujaan a. Tämä luku määrää, miten ympyrä siirtyy seuraavaksi:

  • 1: vasemmalle
  • 2: oikealle
  • 3: ylöspäin
  • 4: alaspäin

Pyörimisliike

Sini- ja kosinifunktion avulla voi tehdä animaation, jossa liike tapahtuu ympyrän kehällä. EppaBasicissa nämä funktiot ovat nimellä Sin ja Cos.

Molemmille funktioille annetaan kulma radiaaneina. Radiaaneina 360 asteen kierros on 2·π radiaania. Jos ympyrän säde on 1, kosini kertoo, kuinka paljon kulmaa vastaava liike on x-suunnassa, ja sini kertoo, kuinka paljon se on y-suunnassa.

Seuraava koodi luo animaation, jossa ympyrä pyörii suuremman ympyrän kehällä:

Dim k = 0
FillColor 0, 255, 0
Do
    ClearScreen
    FillCircle 320+Cos(k)*100, 240+Sin(k)*100, 50
    DrawScreen
    k = k + 0.01
Loop

Kellotaulu

Seuraava koodi on mutkikkaampi esimerkki, joka piirtää yksinkertaisen analogisen kellon.

EppaBasicin funktiot Hour, Minute ja Second kertovat, mikä tunti, minuutti ja sekunti on parhaillaan meneillään.

Koodi laskee niiden perusteella kellon viisareiden kulmat ja piirtää ne ruudulle.

Dim pii = 3.14159
Do
    ClearScreen
    DrawCircle 320, 240, 200
    DrawCircle 320, 240, 10
    Dim k1 = (Hour() Mod 12)/12+0.75
    Dim k2 = (Minute() Mod 60)/60+0.75
    Dim k3 = (Second() Mod 60)/60+0.75
    DrawLine 320, 240, 320+Cos(k1*2*pii)*100, 240+Sin(k1*2*pii)*100
    DrawLine 320, 240, 320+Cos(k2*2*pii)*150, 240+Sin(k2*2*pii)*150
    DrawLine 320, 240, 320+Cos(k3*2*pii)*150, 240+Sin(k3*2*pii)*150
    DrawScreen
Loop

Kellotaulu näyttää seuraavalta (kun kello on 18:38:05):

Edellinen | Seuraava