Materjalid koostas ja kursuse viib läbi
Tartu Ülikooli arvutiteaduse instituudi programmeerimise õpetamise töörühm
< eelmine | 2. nädala sisukord | järgmine > |
Pythoni dokumentatsioon
Seni oleme saanud programmide töö tulemused tekstilisel kujul ekraanile väljastatuna. Samuti oleme sisendi andnud tekstilisel kujul. Reaalselt kasutatavad programmid on sageli hoopis graafilise kasutajaliidesega. Sellisteni jõuame mõne nädala pärast, aga natuke graafikat toome juba praegu sisse. Selles peatükis vaatame lähemalt Pythoni moodulit turtle
(tõlkes "kilpkonn"), mille abil saab ekraanile kujundeid joonistada. Joonistamiseks tuuakse mängu tegelane - kilpkonn, kes oma virtuaalmaailmas ringi liikudes võib jätta maha jälje. See jälg võib teinekord päris huvitava ja isegi kunstilise kujuga olla.
AJALUGU
Selline virtuaalne kilpkonn ilmus esmakordselt hariduslikus programmeerimiskeeles LOGO, mille lõid aastal 1967 Wally Feurzeig ja Seymour Papert. See keel oli mõeldud just lastele algoritmilise mõtlemise arendamiseks. Praeguseks on kilpkonnagraafikat võimalik kasutada mitmetes programmeerimiskeeltes, ka Pythonis. Viimasel ajal eriti populaarses hariduslikus programmeerimiskeeles Scratch on samuti tuntavaid kilpkonnagraafika mõjutusi. LOGO programmeerimist võib proovida siin. Võib-olla on huvitav teada, et üks esimesi interneti kaudu toimunud kursusi (aastal 1996, tol ajal e-posti kaudu) Eestis oli just programmeerimiskeele Logo kursus.
ALUSTAMINE JA LIIKUMINE
Järgnevalt uurime, kuidas kilpkonna Pythonis kasutama hakata ning vaatame, kuidas kujundeid joonistada. Kokkuleppeliselt nimetatakse kilpkonnaks väikest kolmnurka joonistamisväljal.
Järgnevat videot võite vaadata kohe või pärast mõningat iseseisvat katsetamist.
Selleks, et joonistamisega alustada, tuleb esmalt importida vajalikud käsud kilpkonna moodulist. Selleks kirjutame programmi esimesele reale:
from turtle import *
Järgnevalt proovime kirjutada programmi, mille abil joonistataks ruut. Selleks kasutame sobivaid kilpkonnakäske:
forward(n)
- liigu edasi (ingl forward) n sammu võrra (ühe sammu pikkus on 1 piksel ehk üks täpike ekraanil);back(n)
- liigu tagasi (ingl back) n sammu võrra;left(d)
- pööra vasakule (ingl left) d kraadi;right(d)
- pööra paremale (ingl right) d kraadi.
Eelnevaid käske sobivas järjekorras rakendades saame järgneva programmi.
Näiteprogramm. Ruut
from turtle import * # * lisamisel imporditakse kõik kilpkonna käsud forward(100) # Kilpkonn liigub edasi 100 pikslit left(90) # Kilpkonn pöörab 90° vasakule forward(100) # Kordame eelnevaid käske, sest ruudul on neli külge left(90) forward(100) left(90) forward(100) exitonclick() # Saame akna sulgeda hiireklõpsuga
NB! Ärge pange oma Pythoni programmi nimeks turtle.py. See ajab Pythoni segadusse.
Tulemuseks saame
Tegelikult võib kilpkonn järjekindlalt pöörata ka 90° paremale, tulemuseks on ikka ruut.
Näiteprogrammis märkame, et kilpkonn peab täitma korduvalt samu käske: minema 100 pikslit edasi ja pöörama seejärel 90° vasakule. Seega on siin tegemist tsüklilise tegevusega. Tsüklitest aga räägime edasistes osades.
Selleks, et vähendada kirjutamisvaeva, saab kilpkonna liikuma panna ka lühemate käskudega, kasutades pikemate esituste esimesi ja viimaseid tähti.
fd(n)
- võrdne käsugaforward(n)
;bk(n)
- võrdne käsugaback(n)
;lt(d)
- võrdne käsugaleft(d)
;rt(d)
- võrdne käsugaright(d)
.
See robot-kilpkonn oskab teha veel palju muudki. Täpsemalt võib vaadata Pythoni dokumentatsioonist.
VÄRVIMINE
Kilpkonn oskab ka joonistatud kujundeid värvida ja muuta taustavärvi. Selleks, et värvima hakata, tuleb esmalt valida sobiv värv. Seda saab teha käsuga color(värvi_nimetus)
, kus värv antakse sõnena, mille väärtuseks on värvi ingliskeelne vaste või värvi kuueteistkümnendkoodis esitus. Näiteks musta värvi esitus kuueteistkümnendkoodis on #000000. Värvikoode saab vaadata siit.
Näiteks
color("red") # Kilpkonn muutub punaseks
või
color("#008000") # Kilpkonn muutub tumeroheliseks
Kui värv on valitud, siis tuleb kilpkonnale käsuga begin_fill()
teada anda, et nüüd lähebki värvimiseks. Seda peab tegema vahetult enne kujundi joonistamist, mida värvida soovime. Värvimise lõpetamiseks tuleb peale kujundi lõppu kirjutada käsk end_fill()
.
Järgmiseks kirjutame programmi, mis joonistab punase ringi. Kilpkonn oskab joonistada ringi (ingl circle) käsuga circle(r)
, kus r on ringi raadius pikslites.
Näiteprogramm. Jaapani lipp
from turtle import * color("red") # Kilpkonn muutub punaseks begin_fill() # Kilpkonn alustab ringi värvimist circle(100) # Kilpkonn joonistab ringi raadiusega 100 pikslit end_fill() # Kilpkonn lõpetab ringi värvimise exitonclick()
Kui eelmisel programmi puhul oli täpselt teada, mis toimub, siis täiendame seda programmi juhuslikkusega. Selles programmis imporditakse käske lausa kahest moodulist.
Näiteprogramm. Sinine, must või valge
from turtle import * from random import randint värv = randint(1, 3) if värv == 1: color("blue") # Sinine if värv == 2: color("black") # Must if värv == 3: color("white") # Valge valgel taustal begin_fill() # Kilpkonn alustab ringi värvimist circle(100) # Kilpkonn joonistab ringi raadiusega 100 pikslit end_fill() # Kilpkonn lõpetab ringi värvimise exitonclick()
Praegu tõime kilpkonna mängu selleks, et edasisi natuke keerulisemaid teemasid paremini illustreerida. Aga mitte ainult - hakkame ikka ilusaid pilte ka tegema.
< eelmine | 2. nädala sisukord | järgmine > |