Arvutiteaduse instituut
  1. Kursused
  2. 2020/21 kevad
  3. Programmeerimise alused (MTAT.03.236)
EN
Logi sisse

Programmeerimise alused 2020/21 kevad

  • Pealeht
  • Loengud
  • Moodle
  • Thonny paigaldamine
  • Thonny logide esitamine
  • Kiireksamist
  • Viited
< eelmine2. nädala sisukordjärgmine >

2.6 Kilpkonnagraafika

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äsuga forward(n);
  • bk(n) - võrdne käsuga back(n);
  • lt(d) - võrdne käsuga left(d);
  • rt(d) - võrdne käsuga right(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.


< eelmine2. nädala sisukordjärgmine >
  • Arvutiteaduse instituut
  • Loodus- ja täppisteaduste valdkond
  • Tartu Ülikool
Tehniliste probleemide või küsimuste korral kirjuta:

Kursuse sisu ja korralduslike küsimustega pöörduge kursuse korraldajate poole.
Õppematerjalide varalised autoriõigused kuuluvad Tartu Ülikoolile. Õppematerjalide kasutamine on lubatud autoriõiguse seaduses ettenähtud teose vaba kasutamise eesmärkidel ja tingimustel. Õppematerjalide kasutamisel on kasutaja kohustatud viitama õppematerjalide autorile.
Õppematerjalide kasutamine muudel eesmärkidel on lubatud ainult Tartu Ülikooli eelneval kirjalikul nõusolekul.
Tartu Ülikooli arvutiteaduse instituudi kursuste läbiviimist toetavad järgmised programmid:
euroopa sotsiaalfondi logo