Materjalid koostas ja kursuse viib läbi
Tartu Ülikooli arvutiteaduse instituudi programmeerimise õpetamise töörühm
< eelmine | 4. OSA sisukord | järgmine > |
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. Selliseid me selle kursuse raames teha ei jõua, aga natuke graafikat toome sisse siiski. Selles peatükis vaatame lähemalt Pythoni moodulit turtle (tõlkes kilpkonn). Mooduliks nimetatakse teatud kogumit, kust saab vajalikke käske võtta. Joonistamiseks võtame appi tegelase - kilpkonna, 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. Kokkuleppeliselt nimetatakse kilpkonnaks väikest kolmnurka joonistamisväljal. 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.
Videot võite vaadata kohe või pärast mõningat katsetamist.
Selleks, et joonistamisega alustada, tuleb esmalt importida kilpkonna moodul. 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öörata seejärel 90° vasakule. Seega on siin tegemist tsüklilise tegevusega ja saame kasutada tsüklit. Tsüklist 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 argumendiks tuleb kasutada sõne, mille väärtuseks on värvi ingliskeelne vaste või värvi kuueteistkümnendkoodis esitus. Näiteks musta värvi esitus kuueteistkümnedkoodis 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 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 | 4. OSA sisukord | järgmine > |