(toiminnot)

hwechtla-tl: Teema 5: liikettä ruudulle

Kierre.png

Mikä on WikiWiki?
nettipäiväkirja
koko wiki (etsi)
viime muutokset


Tässä osiossa tutustutaan erilaisiin tapoihin tehdä liikkuvaa kuvaa, siis animaatioita.

Harjoitus 5a: lennokin liikkeet

Kaikkein helpoin tapa tehdä liikkuvia asioita on käyttää lennokkia. Jos lennokkia siirtää tarpeeksi vähän kerrallaan, liike näyttää sulavalta. Mutta kannattaa käyttää "odota"-komentoa, jottei liike ole liian nopeaa silmin erotettavaksi. "odota"-komento ei tee mitään pienen hetken ajan, jolloin silmä ehtii huomata lennokin paikan. Kokeile vaikkapa tällaista:

? toista 100 [et 1 odota 1]

Kuten huomaat, eteneminen on varsin sulavan näköistä, kunhan joka välissä odotetaan vähän ("odota 1" odottaa sekunnin kuudeskymmenesosan ajan). Melkein kaikki tekemämme kuviot voi muuttaa animaatioiksi korvaamalla "eteen"-komennot tällaisilla "toista"-komennoilla, joissa mennään vähän eteenpäin kerrallaan.

Jos ei halua, että lennokki jättää viivaa jälkeensä, voi käyttää "hyps"- tai "äläpiirrä"-komentoa. Jos sanot "äläpiirrä", lennokki lakkaa kokonaan piirtämästä, kunnes annat taas "piirrä"-komennon. Kokeile:

? äläpiirrä toi 4 [toi 100 [et 1 odota 1] toi 90 [oi 1 odota 1]] piirrä

Näille komennoille on lyhenteet "äp" (äläpiirrä) ja "pä" (piirrä). "hyps"-komento käyttää oikeasti näitä komentoja apunaan.

Kuten ennenkin, mieleisille komentosarjoille kannattaa antaa nimi:

? miten vartiokierros
> äp toi 4 [toi 100 [et 1 odota 1] toi 90 [oi 1 odota 1]] pä
> valmis

Laita lennokki kulkemaan verkkaiseen tahtiin vaikkapa ympyrän kaarta pitkin tai viivaa edestakaisin. Tee komennot, joilla lennokki etenee ja kääntyy hitaasti, ja toteuta niillä jokin ohjelma, joka tuottaa hitaasti piirroksen.

Harjoitus 5b: lentävä neliö

Lennokin animoiminen on helppoa, mutta lennokissa on yksi vika, nimittäin se, että se näyttää aina samalta. Jos haluamme saada jotain muita kuvia liikkumaan, pitää nähdä hieman enemmän vaivaa - mutta aika vähän kumminkin.

Kuten tiedät, lennokin pystyy siirtämään helposti et-komennolla paikasta toiseen. Se, mitä tällöin oikeasti tapahtuu, on seuraavaa: tietokone poistaa näytöltä vanhaan paikkaan piirretyn lennokin, siirtää sen ja piirtää sen uuteen paikkaan. Me pystymme tekemään saman muillekin kuvioille: voimme poistaa ne vanhasta paikasta, siirtyä ja piirtää ne uuteen paikkaan. Kuvion poistaminen on helpointa tehdä "pyyhi"-komennolla, joka tyhjentää ruudun mutta ei siirrä lennokkia keskelle.

Jos siis haluamme liikettä, meidän pitää toistaa seuraavia: pyyhi vanha kuva, siirry uuteen paikkaan, piirrä kuvio ja odota hetki (ennen kuin aletaan taas pyyhkiä kuvaa). Kokeile seuraavaa (jos sinulla ei ole neliö-komentoa, määrittele se ensin):

? toista 100 [pyyhi hyps 2 va 1 neliö odota 1]

Näin saamme liikkuvan neliön, mutta lennokki näyttää vähän häiritsevältä sen päällä. "piiloon"-komennolla sen saa pois. Kokeile siis näin:

? piiloon toista 100 [pyyhi hyps 2 va 1 neliö odota 1] näkyviin

Aika nätti animaatio, eikö? Aina ei tarvitse edetä, joskus pelkkä kääntyminen riittää:

? miten plussa
> toista 4 [et 100 ta 100 oi 90]
> valmis
plussa määritelty
? uusi
? piiloon toista 100 [pyyhi oi 1 plussa odota 1] näkyviin

Tee nyt jokin lentelevä tai liikkuva oma kuviosi. Määrittele ne komentoina.

Harjoitus 5c: planeettoja ja hyppimistä

Jos haluamme tehdä useampia liikkuvia hahmoja, asioista tulee jälleen vähän monimutkaisempia kuin yhden liikkuvan hahmon piirtämisessä. Lennokin täytyy hyppiä edestakaisin hahmojen välillä, jotta se saa piirretyksi kaikki hahmot eri paikkoihin. Tähän on monta tapaa. Tutustumme ensin muutamaan, jotka eivät vaadi uusien komentojen esittelyä, mutta kaikkein helpoimmat tavat tulevat vasta seuraavissa harjoituksissa.

Määritetään ensin hahmot, joita haluamme liikuttaa. Olkoot ne aurinko, maa ja kuu. Tässä on niiden määrittelyt:

? miten aurinko
> toista 12 [et 20 ta 20 oi 120 et 20 va 90]
> valmis
aurinko määritelty
? miten maapallo
> toista 36 [et 3 oi 10]
> valmis
maapallo määritelty
? miten kuu
> toista 14 [et 2 va 10]
> oi 180
> toista 22 [et 2 oi 10]
> valmis
kuu määritelty

No niin. Suunnitelma on tämmöinen: pyyhitään vanha kuva ja hypätään ruudun keskelle uusi-komennolla, sitten piirretään yksi taivaankappale, käännytään vähän eri suuntaan kuin viime kuvassa, hypätään eteenpäin ja piirretään toinen taivaankappale. Odotetaan vähän, jotta uuden kuvan ehtii nähdä, ja sitten toistetaan.

Nyt meidän pitää pystyä ennen hyppäystä kääntymään eri suuntaan eri toistokerroilla. Tässä auttaa komento "kerta". Ensimmäinen kokeilumme on seuraavanlainen: piirretään maapallo, käännytään oikealle "kerta" astetta, hypähdetään eteenpäin ja piirretään kuu. Yhdessä toiston, vanhan kuvan pyyhkimisen ja odottelun kanssa se näyttää tältä:

? piiloon
? toista 100 [uusi maapallo oi kerta hyps 100 kuu odota 1]

Jee, kuu kiertää maata! Ohjelman saa vielä siistimmäksi, jos tekee kuun piirtämisestä oman ohjelmansa - jolloin kuita saa lisätyksi helposti:

? miten teekuu
> oi kerta hyps 100 kuu
> valmis
? toista 100 [uusi maapallo teekuu odota 1]
? toista 100 [uusi maapallo teekuu teekuu odota 1]

Mutta nyt maapallo ei liiku, koska se piirretään aina samaan paikkaan: uusi-komento vie lennokin keskelle ja maapallo piirretään heti sen jälkeen. Voisimme laittaa maan etenemään tasaisesti komennolla "hyps kerta" ennen maapallon piirtämistä:

? toista 100 [uusi hyps kerta maapallo teekuu odota 1]

Tai sitten voisimme laittaa maapallonkin liikkumaan ympyrää kääntymällä keskeltä aina eri suuntaan ja hypsähtämällä ennen maapallon piirtämistä. Lisätään samalla hiukan animaation pituutta lisäämällä toistokertoja:

? toista 500 [uusi oi kerta hyps 50 maapallo teekuu odota 1]

Maapallo kiertää keskipistettä samaan tahtiin kuin kuu maapalloa, mikä näyttää vähän hassulta. Ongelmasta pääsee kertomalla jommankumman kääntymisen jollain melko lähellä ykköstä olevalla luvulla, jotta se tapahtuisi hiukan eri tahtiin kuin toinen kääntyminen, vaikka näin:

? miten teemaapallo
> oi kerta*1.3 hyps 50 maapallo
> valmis
teemaapallo määritelty
? toista 500 [uusi teemaapallo teekuu odota 1]

Kokeilepa nyt erilaisia tapoja käyttää kerta-komentoa hyps- ja oi-komennoissa saadaksesi aikaan erilaisia liikeratoja. Voit myös laittaa jotain muuta kuin maapallon ja kuun lentämään, melkein mitä vain tekemiäsi hahmoja.

Harjoitus 5d: värejä, värejä

Animaatio näyttää kauniimmalta ja selkeämmältä, jos siinä on mukana värit. Tehdään ensin animaatio pyörivästä auringosta, ja lisätään siihen vielä maapallo:

? toista 500 [uusi oi kerta aurinko odota 1]
? toista 500 [uusi oi kerta aurinko hyps 100 maapallo odota 1]

Komennolla "väri" voi muuttaa lennokin jättämän viivan väriä. Sille voi antaa syötteeksi värin nimen, esimerkiksi "väri punainen" muuttaa viivan punaiseksi. Värin eteen voi myös kirjoittaa "vaalea" tai "tumma" tai kahdesta väristä voi tehdä sekoituksen komennolla "sek". Eri värejä on helppoa testata komennolla "tausta", joka muuttaa taustan tietyn väriseksi:

? tausta vihreä
? tausta sininen
? tausta vaalea keltainen
? tausta tumma tumma lime
? tausta sek sininen tumma punainen

Annetaan nyt taivaankappaleille sopivat värit (olen jakanut hakasulkeiden sisällön monelle riville, mutta voit kirjoittaa sen yhdelle riville, jos haluat):

? tausta musta
? toista 500 [uusi oi kerta väri keltainen aurinko
              hyps 100 väri vaalea sininen maapallo
              odota 1]

Tai selkeämmin:

? miten teeaurinko
> oi kerta väri keltainen aurinko
> valmis
teeaurinko määritelty
? miten sinimaapallo
> hyps 100 väri vaalea sininen maapallo
> valmis
sinimaapallo määritelty
? toista 500 [uusi teeaurinko sinimaapallo odota 1]

Lisätään vielä kuita:

? toista 500 [uusi teeaurinko sinimaapallo
              väri valkoinen teekuu teekuu
              odota 1]

Hiphei! Tee nyt muutama värikäs animaatio. Voit vaikkapa lisätä vielä muutaman taivaankappaleen komennon perään.

Harjoitus 5e: lonkeroita ja salamoita

Kerta-komennolla pystyy tietysti tekemään muutakin kuin sijoittelemaan valmiita kuvioita siirtyvään kohtaan näytöllä. Voimme tehdä esimerkiksi viivoja, jotka muuttuvat kuva kuvalta. Teen tässä vain pari esimerkkiä:

? toi 200 [uusi oi kerta et 100 oi kerta et 70 oi kerta et 40 oi kerta et 10 odota 1]
? toi 100 [uusi toi kerta [et 3 oi 3] toi kerta [et 3 va 3] odota 1]
? toi 200 [uusi va kerta toi kerta [et 70/kerta oi 10] odota 1]

Näitä ohjelmia rajoittaa lähinnä se, että "kerta" viittaa aina lähimpään toista-komentoon. Uloin toisto on se, joka piirtää eri kuvat, joten olisi kivaa pystyä viittaamaan sen toistokertaan myös sisemmistä toista-komennoista. Tähän tarvitaan kuitenkin muuttujia, joihin tutustumme vasta myöhemmin.

Kokeile nyt erilaisia animaatioita. Kun olet tyytyväinen, voit siirtyä seuraavaan teemaan, jossa rakennetaan työkaluja. Muista kuitenkin ensin tallentaa työsi tulokset esimerkiksi näin:

? tallenna "harkat5

Teema 6: Kaikkein tärkein aihe


Pikalinkit:


kommentoi (viimeksi muutettu 03.06.2014 15:43)