Turtle

Turtle

Turtle on Pythonin laajennus, jolla voi luoda graafista sisältöä. Graafisen sisällön luominen perustuu olioon, joka liikkuu ruudulla ja piirtää ruudulle jäljen.



Esimerkki 1.


Ruudulla liikkuvan olion liikettä, sen väriä ja muun muassa sen tuottamaa tekstiä ohjaillaan aika suppealla määrällä eri komentoja. Käydään niitä läpi seuraavissa esimerkeissä ja välitehtävissä. Kattavampi luettelo komennoista löytyy muun muassa täältä.

Komento Merkitys Esimerkki
import turtle Tuodaan turtle-kirjasto käyttöön.
Tällä komennolla aloitetaan kaikki turtle-ohjelmat.
 
nimi = turtle.Turtle() Luodaan muuttuja (olio), jota komennoilla ohjaillaan. kilppari = turtle.Turtle()
nimi.shape("haluttu muoto") Annetaan oliolle jokin muoto. Muoto voi olla arrow, turtle, circle, square, triangle tai classic. kilppari.shape("turtle")
nimi.color("väri") Annetaan oliolle ja sen jättämälle jäljelle jokin väri. Väri voi olla kirjoitettuna englanniksi tai se voi olla html-värikoodi. kilppari.color("red")

Välitehtävä 2.


Oliota voi liikuttaa eteen- ja taaksepäin sekä kääntää seuraavilla komennoilla. Oletuksena olio lähtee liikkeelle näytön keskeltä ja katsoo oikealle.

Komento Merkitys Esimerkki
nimi.forward(p) Olio liikkuu p pikseliä siihen suuntaan, johon se parhaillaan osoittaa. nimi.forward(200)
nimi.backward(p) Olio liikkuu p pikseliä taaksepäin siitä suunnasta, johon se parhaillaan osoittaa. nimi.backward(200)
nimi.left([[$\alpha$]]) Olio kääntyy myötäpäivään [[$\alpha$]] astetta. nimi.left(90)
nimi.right([[$\alpha$]]) Olio kääntyy vastapäivään [[$\alpha$]] astetta.  nimi.right(180)

Välitehtävä 3.


Näyttö, jolla olio seikkailee, koostuu siis pikseleistä. Jokaisella pikselillä on (x, y)-koordinaatti kuten meille tutussa xy-koordinaatistossa. Näytön keskikohdan koordinaatit ovat (0, 0).
Olio liikkuu tutussa xy-koordinaatistossa, vaikka x- ja y-akseleita ei näy.

Komento Merkitys Esimerkki
nimi.goto(x,y) Olio liikkuu nykyisestä olinpaikasta pisteeseen (x,y). kilppari.goto(50,-100)
nimi.home() Olio liikkuu pisteeseen (0,0). kilppari.home()
nimi.heading() Palauttaa suunnan, johon olio parhaillaan osoittaa.
(0=itä, 90=pohjoinen, 180=länsi ja 270=etelä)
print( kilppari.heading() )
nimi.distance(x,y) Palauttaa etäisyyden pikseleinä olion nykyisen paikan ja pisteen (x,y) välillä. kilppari.distance(100,-50)

Välitehtävä 4.


Esimerkki 2.


Käydää lopuksi läpi vielä muutama piirtämiseen, värittämiseen ja tekstin kirjoittamiseen liittyvä komento.

Komento Merkitys Esimerkki
nimi.write("teksti")  Näytölle ilmestyy teksti siihen kohtaan, jossa olio on. kilppari.write("Hei")
nimi.penup() Olio ei jätä jälkeä penup-komennon jälkeen. kilppari.penup()
nimi.pendown() Olio jättää jäljen pendown-komennon jälkeen. kilppari.pendown()
 nimi.circle(säde) Olio piirtää ympyrän, jonka säde on annettu. kilppari.circle(25)
nimi.begin_fill() Kuvio, jonka piirtäminen alkaa begin_fill-komennon jälkeen kilppari.begin_fill()
nimi.end_fill() ja jonka piirtäminen loppuu ennen end_fill-komentoa, väritetään värillä. kilppari.end_fill()
nimi.fillcolor("väri") Määrää värin, jolla kuvion väritys tapahtuu. kilppari.fillcolor("blue")

Esimerkki 3.



Tehtäviä

1. Piirrä forward- ja left-komennoilla
a) neliö
b) tasasivuinen kolmio
c) tasasivuinen viisikulmio (viisikulmion kulmat ovat [[$108^\circ$]]).

Mieti, kuinka monta astetta käännösten tulee olla.

2. Väritä edellisen tehtävän kuviot eri väreillä.

3. Pentagrammi on viidestä yhtä pitkästä janasta koostuva tähtimonikulmio. Janojen välinen kulma on [[$36^\circ$]] astetta. Piirrä pentagrammi käyttämällä for- tai while-silmukkaa.

4. a) Piirrä kolme eri väristä ympyrää eri paikkoihin. Väritä ympyrät.

b) Piirrä kolme sisäkkäistä ympyrää, jotka ovat eri kokoisia. Väritä ympyrät eri väreillä.


5.*
a) Tuo käyttöösi random-kirjasto (kts. kappale "Funktiot ja kirjastot") ja piirrä ympyröitä satunnaisiin paikkoihin.
b) Tee ympyröiden säteistä myös satunnaisia.
c) Väritä ympyrät satunnaisin värein.