Konnagrafiikka
Seuraavassa ohjeet ja tehtävät seuraaviin toimintoihin:
- Piirto-ohjelman käyttöönotto
- Piirtoikkunan koon ja värin valinta.
- Kynän liikuttaminen
- Kynän muoto
- Kynän paksuus
- Kynän nostaminen ja laskeminen
- Kynän piilottaminen
- Kynän liikuttaminen
- Leimaus
- Värin valitseminen ja kuvion värittäminen
- Ympyrän piirtäminen
- Kolmoin piirtäminen
- Piirrustusobjektin nimeäminen
- Ruudun puhdistaminen
Piirtoalusta toimii koordinaatein (x,y). Piste (0,0) on origo. Luvut ovat pikseleitä.
Piirto-ohjelman käyttöönotto
Piirtoohjelma otetaan käyttöön käskyllä: from turtle import *
Piirtoikkunan koon ja värin valinta
Ikkunan suuruus määritellään käskyllä:
Väreinä käyvät kaikki englannin kielen sanat tai html-värikoodit (#F50FFB). html-värikoodeja voit hakea esim. täältä.
Kynän liikuttaminen
Oletusasetuksena kynä piirtää.
Eteenpäinkäsky: forward( ) # Liikkuu eteenpäin sulkeissa ilmoitetun matkan pikseleinä tai muuttuja antaman luvun verran.
Taaksepäinkäsky: backward()
Kääntymiskäsky: right() tai left () # Sulkeissa kulma asteina tai muuttujan avulla.
Mene haluttuun kohtaan: goto(50,50) # Ensimmäinen luku on x-akseli ja toinen on y-akseli. Luvut voi antaa joko lukuina tai muuttujina.
Huom! Oletuksena on, että kynä on alhaalla (piirtää) origossa (0,0). Kun haluat liikkua ilman piirtämistä, on kynä nostettava aluksi ylös. Ennen piirtämistä kynä on laskettava alas. Käskyt tähän ovat penup() ja pendown()
Tehtävä 1
Tee ohjelma, joka kysyy käyttäjältä edettävän matkan ja sen jälkeen piirtää kuvan.
Tehtävä
Tee ohjelma, joka kysyy käyttäjältä:
- edettävän matkan
- suunnan, johon käännytään kuljetun matkan jälkeen
- käännöksen jälkeen edettävän matkan
ja tämän jälkeen piirtää kuvan.
Tehtävä
Lisää edelliseen tehtävään toistoa, niin että ohjelma kysyy kysymykset neljä kertaa.
Kynän muoto
Kynän muodon valitseminen tapahtuu käskyllä:
shape(“circle”) # sulkeissa haluttu kynän muoto (arrow=nuoli, circle=pallo, classic=klassinen, square=neliö, triangle=kolmio tai turtle=kilpikonna)
Kynän paksuus
pensize(5) # Sulkeisiin tulee suuruus pikseleinä tai muuttuja (kirjain), jolle määritetään muualla arvo.
Kynän nostaminen ja laskeminen
penup() # kynä ei piirrä
pendown() # kynä piirtää
Kynän piitottaminen
hideturtle() # valittu kursori (nuoli, ympyrä jne.) menee piiloon.
showturtle() # valittu kursori (nuoli, ympyrä jne.) tulee näkyviin.
Kynän liikuttaminen
Seuraavilla käskyillä kynä liikkuu pisteisiin:
goto(50,50) # siirry pikseleinä (x,y)-koordinaatiston pisteeseen. Olion piirtosuunta pysyy samana.
home() # siirry origoon (0,0). Olion piirtosuunta palautuu perusasetuksiin.
print(heading()) # näyttää suunnan johon kynä parhaillaan osoittaa.
print(distence(x,y)) # laskee ja tulostaa kynän nykyisen paikan \((x_0,y_0)\) ja halutun pisteen \(x,y\) välisen etäisyyden.
Leimaus
Tekee leiman kyseiseen kohtaan.
stamp()
Tekstin kirjoittaminen kuvaan
Käskyllä: write(“”) # Kirjoittaa kuvaan nykyiseen kohtaan tekstin, joka on lainausmerkkien sisällä.
Värin valitseminen ja kuvion värittäminen
Värin valinta
Väreinä käyvät kaikki englannin kielen sanat tai html-värikoodit (#F50FFB). html-värikoodeja voit hakea esim. täältä.
color(“red”,”blue”) # Ensimmäinen väri (red) on kynän väri ja toinen (blue) on väritettävän alueen väri .
pencolor(“#F50FFB”) # Pelkän kynänvärin muuttaminen.
fillcolor(“#F50FFB”) # Pelkän täyttövärin muuttaminen.
Täyttövärityskäsky sisältyy kahdesta käskystä:
begin_fill() # aloittaa täytön ja käsky tulee ennen piirtämistä.
end_fill() # lopettaa täytön ja tulee kuvion piirtämisen jälkeen.
HUOM! Ohjelma värittää alueen, vaikkakin kynä olisi ylhäällä aluetta piirrettäessä. Siis reunaviivan ei ole pakko näkyä.
Ympyrän piirtäminen
Ympyrä piirretään käskyllä:
circle(50) # sulkeisiin tulee ympyrän säde lukuna tai muuttujan avulla.
Kolmion piirtäminen
Voit piirtää kolmion esimerkiksi kolmella goto() käskyllä. Viimeinen goto() käskyn koordinaatti pitää olla sama kuin lähtöpiste.
Jos tiedät kolmion kannan ja korkeuden, voit piirtää kolmion siten, että aluksi mennään kannan a verran eteenpäin ja sen jälkeen käännytään \(90^o\) (suorakulma). Tämän jälkeen mennään eteenpäin korkeuden verran h. Lopuksi käskyllä goto(0,0) pääset origoon (jos kuvio aloitetaan pisteestä (0,0)). Jos haluat piirtää kolmion muualle, mene aluksi pisteeseen goto(a,b) ja lopuksi korkeuden jälkeen palaat pisteeseen (a,b). Näin sinun ei tarvitse miettiä hypotenuusan (pisimmän sivun pituutta))
Piirrustusobjektin nimeäminen
Ruudun puhdistaminen
Voit puhdistaa kokoruudun tai yksittäisen piirrustuksen.
Kun halutaan puhdistaa jätetty kynänjälki ruutu käytetään käskyä clear(). Objekti jää siihen sijaintiin, jossa se tällä hetkellä on.
clearscreen() # palauttaa tilanteen lähtöpisteeseen. Kaikki kuvio-objektit puhdistuu. Jos olet määritellyt värin tai muodon tms., niin ne eivät pysy muistissa.
resetscreen() # aikaisemmin määritellyt kuvaobjektit säilyvät. Jos olet määritellyt värin tai muodon tms., niin ne pysyvät muistissa.
clear() # Puhdistaa piirretyn kynänjäljen ruudun.
testi.clear() # Puhdistaa testi objektin kynänjäljen.
Funktion tekeminen
Funktiot helpottavat koodin kirjoittamista. Aluksi määritellään funktiolle nimi kolmio(): sulkeisiin laitetaan kaikki funktiossa käytettävät muuttujat (1-ääretön).
Alla oleva koodi piirtää origoon kolmion. Mutta ilman, että funktiota kutsutaan se ei piirrä mitään.
def kolmio(a,h):
goto(0,0)
pendown()
forward(a)
right(90)
forward(h)
goto(0,0)
penup()
Kun halutaan piirtää kolmio jonka kanta a on 100 ja korkeus 150, kutsutaan koodissa funktiota seuraavasti:
kolmio(100,150) # nyt lukujen tilalla voi olla myös muuttujia. Niiden ei tarvitse olla samoja kuin itse funktiossa.
Esimerkiksi alla on toimiva koodi joka piirtää kaksi kolmoita.
from turtle import *
a = float(input("Kuinka suuri on suorakulmion kanta?: "))
h = float(input("Kuinka suuri on suorakulmion korkeus?: "))
b = float(input("Kuinka suuri on suorakulmion kanta?: "))
c = float(input("Kuinka suuri on suorakulmion korkeus?: "))
def kolmio(a,h): #funktion kolmio määrittely alkaa.
goto(0,0)
pendown()
forward(a)
right(90)
forward(h)
goto(0,0)
penup() # funktion kolmo määrittely loppuu.
kolmio(b,c) # piirtää kolmion muuttujan arvoilla b ja c
kolmio(a,h) # piirtää kolmion muuttujan arvoilla a ja h
Harjoitus 26.
Kopioi alla olevaa tekstiä rivi riviltä Python-ohjelmaan. Aja ohjelma aina yhden rivin jälkeen ja tutki sekä ymmärrä mitä lisätty käsky teki.
from turtle import *
a = float(input("Kuinka suuri on kolmion kanta?: "))
h = float(input("Kuinka suuri on suorakulmion korkeus?: "))
penup()
goto(-10,50)
color("red","blue")
begin_fill()
forward(a)
right(90)
forward(h)
pendown()
pensize(5)
hideturtle()
right(90)
forward(a)
right(90)
forward(h)
end_fill()
penup()
goto(-50,50)
begin_fill()
color("red","pink")
circle(50)
end_fill()
pendown()
showturtle()
shape("turtle")
color("black")
forward(h)
left(180)
forward(h)
goto(0,0)
stamp()
goto(-50,-50)
print("Pinta-ala on", ala, "neliömetriä.")
Tehtävä 26.
Täydennä tehtävän 24 koodia siten, että aina, kun käyttäjä on valinnut mitä lasketaan, niin ohjelma piirtää kyseisen kappaleen ja värittää pinta-alan tai näyttää piirin.