Tehtäväsarja 4: Kuvioiden piirtäminen Konnagrafiikalla ja funktion tekeminen

 

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ä:

setup(500,500) # Sulkeisiin laitetaan pikseleinä ikkunan suuruus x-akselina ja y-akselina.
 
Taustaväri valitaan käskyllä:
 
bgcolor(“red”) # Taustan 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ä

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. 

setheading() # Asettaa objektin osoittamaan haluttuun suuntaan koordinaatistossa (kuva). 
 

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ä

bgcolor(“red”) # Taustan värin valinta.
 

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

Piirrustusobjektin nimeäminen
 
testi = Turtle() # Nimeää piirrustusobjektin nimellä testi. Voit nimetä piirrustusobjektin mielesi mukaan.
 
Kun haluat piirtää kyseistä objektia valitse objekti kirjoittamalla nimi käskyn eteen.
 
Esimerkki
 
testi.forward() # Siirtää objektia testi eteenpäin.
 

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.