Tie koodariksi

Ohjelmoinnin alkeet

Liite 2: Grafiikkaa Turtle-kirjastolla

Pythonin osana on kirjasto Turtle, jolla voi piirtää grafiikkaa kilpikonnan avulla. Kirjasto on kunnianosoitus Logo-kielelle, joka kehitettiin 1960-luvulla ohjelmoinnin opetukseen.

Ideana on ohjata kilpikonnaa, joka piirtää viivaa liikkuessaan. Alussa kilpikonna on näytön keskellä ja sen liikesuunta on vasemmalta oikealle. Kilpikonnaa voi ohjata mm. seuraavilla komennoilla:
komentovaikutus
forward(x)liiku eteenpäin x askelta
left(x)käänny vasemmalle x astetta
right(x)käänny oikealle x astetta
pendown()piirrä viivaa kulkiessa (oletus)
penup()älä piirrä viivaa kulkiessa
Täydellinen lista komennoista on Pythonin dokumentaatiossa:

https://docs.python.org/3/library/turtle.html

Ohjelman pohja

Seuraava koodi on pohja Turtle-kirjaston käyttämiselle:
from turtle import *

shape("turtle")
done()
Se tuo näkyviin näytölle kilpikonnan, mutta ei tee vielä muuta:

Liikkuminen

Komento forward liikkuu eteenpäin ja piirtää samalla viivaa. Esimerkiksi seuraava koodi liikkuu 100 askelta eteenpäin:
from turtle import *

shape("turtle")
forward(100)
done()
Tuloksena on seuraava kuva:

Kääntyminen

Komennot left ja right kääntävät kilpikonnaa annetun astemäärän verran. Esimerkiksi seuraava ohjelma liikkuu 100 askelta eteenpäin, kääntyy 90 astetta oikealle ja liikkuu taas 100 askelta eteenpäin.
from turtle import *

shape("turtle")
forward(100)
right(90)
forward(100)
done()
Tuloksena on seuraava kuva:

Toistaminen

Piirtämisen aikana voi käyttää kaikkia Pythonin ominaisuuksia, kuten muuttujia ja silmukoita. Esimerkiksi seuraava koodi piirtää neliön toistamalla neljä kertaa samoja komentoja:
from turtle import *

shape("turtle")
for i in range(4):
    forward(100)
    right(90)
done()
Tuloksena on seuraava kuva:

Viivan näkyvyys

Komentojen pendown ja penup avulla voi säädellä, piirtääkö kilpikonna viivaa liikkuessaan. Esimerkiksi seuraava koodi piirtää kaksi erillistä viivaa tämän avulla:
from turtle import *

shape("turtle")
forward(100)
right(90)
penup()
forward(100)
right(90)
pendown()
forward(100)
done()
Tuloksena on seuraava kuva:

Spiraali

Muuttujien ja silmukoiden avulla on mahdollista piirtää monenlaisia kuvia. Tästä on näytteenä seuraava koodi, jossa liikkumisen määrä kasvaa silmukan joka kierroksella.
from turtle import *

shape("turtle")
x = 1
for i in range(100):
    right(50)
    forward(x)
    x += 1
done()
Tuloksena on seuraava spiraali:

Tehtäviä

  1. Tee ohjelma, joka piirtää tasasivuisen kolmion.
  2. Tee ohjelma, joka piirtää tasasivuisen viisikulmion.
  3. Tee ohjelma, joka piirtää minkä tahansa tasasivuisen monikulmion. Kulmien määrä annetaan muuttujassa.
  4. Tee ohjelma, joka piirtää vierekkäin kaksi neliötä.
  5. Tee ohjelma, joka piirtää vierekkäin muuttujassa annetun määrän neliöitä.
  6. Tee ohjelma, joka piirtää sisäkkäin kaksi neliötä.
  7. Tee ohjelma, joka piirtää sisäkkäin muuttujassa annetun määrän neliöitä.
  8. Tee ohjelma, joka piirtää 8×8-ruudukon.
  9. Tee ohjelma, joka piirtää 8×8-shakkilaudan. Erota valkeat ja mustat ruudut haluamallasi tavalla.
  10. Tee ohjelma, joka piirtää mahdollisimman hienon kuvion.