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