Älykästä kilpikonnagrafiikkaa
Tavoitteet
Tavoitteena on
kerrata ylipäätään Python-ohjelmointia
kerrata kilpikonnagrafiikkaa
kerrata for-silmukka
for-silmukan avulla koodissa vältetään tarpeetonta toistoa
opetella vakion käyttöä
ohjelmassa voidaan määritellä vakio kirjoittamalla se isoin kirjaimin tapaan:
OPPITUNNINPITUUS = 75
paivanPituus = 4 * OPPITUNNINPITUUS
harjoitella toimimaan etänä, jolloin ollaan yhteydessä verkon kautta toisiin (tämä on tavanomaista tämän päivän ohjelmointityössä)
Voit toimia Trinketissä tai ladata Python IDLE:n tai muun kehitysympäristön koneellesi
Suositeltavinta on toimia Trinketissä, koska mallikoodit toimivat ko. ympäristössä.
Voit halutessasi toimia Python IDLE:ssa tms. ympäristössä, mutta nämä mallikoodit eivät välttämättä toimi sellaisenaan siellä
Ota muista selvää itse
Muistelua
Muistele, mitä seuraavat koodit tekevät. Koeta miettiä mahdollisimman tarkkaan, yksittäiset merkit ja välit huomioiden.
Testaa sitten koodi ja vertaa, toimiiko se siten kuin kuvittelit.
Kiinnitä huomio erityisesti for-silmukkaan tässä esimerkissä:
# Tämä on trinket.io -ympäristössä, jossa on Python 2 sukupolven tulkki ilmaiseksi käytössä
# Sillä print on komento, jolloin tulostettava merkkijono ympäröidään vain lainausmerkein
for i in range(5):
print i,"Terve maailma!"
# Tämä on sellaisessa ympäristössä, jossa on Python 3 sukupolven tulkki
# Sillä print on metodi, jolloin print-metodilla tulostettavat ympäröidään sulkumerkein
for i in range(5):
print (i,"Terve maailma!")
Osaatko jo selittää, mitä seuraavassa koodissa tapahtuu? Se on tuttu koodi. Mieti ensin ja kokeile sen jälkeen - älä aiemmin.
Kertaa sitten syksyn Turtle-grafiikkaa koskeva sivu
Tästä linkistä kyseiselle sivulle. Huomaa, että myös Python IDLE tukee kilpikonnagrafiikkaa.
Tutki mallikoodit huolellisesti. Harjoitukset voit jättää väliin.
Materiaaleja
Teemu Sirkiän pdf-dokumentti Ohjelmoinnin perusteet Pythonilla. Mm. for-silmukasta on hyvät kuvaukset.
Harjoituksia
Palauttaminen
Tee harjoitukset haluamassasi ympäristössä. Suositeltu tällä kertaa on Trinket.io. Sitä mukaa kuin koodisi valmistuvat, lähetä niistä kopio opettajalle Teamsissa henkilökohtaisessa keskustelussa. Lähetä kopio myös silloin, kun tarvitset vihjeitä tai apua koodin parantamiseen.
Harjoitus 0
Kopioi seuraava koodi ja aja se.
from turtle import * # Ladataan koko turtle-kirjasto keskusmuistiin
t = Turtle() # Luodaan Turtle-tyyppinen olio nimeltään t
t.forward(100)
Harjoitus 1
Jatka edellistä koodia siten, että saat piirrettyä tasasivuisen kolmion. Lopputuloksen tulee siis olla tasasivuinen kolmio, jonka sivun pituus on sata.
VIHJE: lisää kääntymiskomento ja toista sitten piirtämistä
Harjoitus 2
"Refactoroi" eli parantele edellistä koodia siten, että kääntyminen ja piirtäminen tehdään for-silmukassa. Edelleen lopputuloksen tulee siis olla tasasivuinen kolmio, jonka sivun pituus on sata.
Harjoitus 3
"Tuunaa" eli muokkaa piirtämääsi kolmiota seuraavasti:
viivan paksuus on 5 yksikköä
viivan väri on punainen
täyttöväri on "orange"
Muuta vielä kolmio seisomaan kärjellään.
Kuinka hyvin kuva muistuttaa väistämisvelvollisuutta tarkoittavaa liikennemerkkiä? Tuunaa tarvittaessa lisää, jotta se muistuttaisi mahdollisimman hyvin sitä.
Harjoitus 4
Kopioi koodi ja tee siihen pyydetyt muutokset
import turtle
def draw_circle(turtle, color, size, x, y):
turtle.penup()
turtle.color(color)
turtle.fillcolor(color)
turtle.goto(x,y)
turtle.pendown()
turtle.begin_fill()
turtle.circle(size)
turtle.end_fill()
tommy = turtle.Turtle()
tommy.shape("turtle")
tommy.speed(500)
draw_circle(tommy, "green", 50, 25, 0)
draw_circle(tommy, "blue", 50, 0, 0)
draw_circle(tommy, "yellow", 50, -25, 0)
tommy.penup()
tommy.goto(-70,-50)
tommy.color("black")
tommy.write("Let's Learn Python!", None, None, "16pt bold")
tommy.goto(0,-80)
Muutokset:
lisää yksi ympyrä punainen vasemmalle
käytä vakiota SADE = 50 ympyrän piirtämiseen
piilota kilpikonna lopuksi
Harjoitus 5
Etsi jokin logo netistä ja piirrä sen ääriviivat Turtle-grafiikalla.
esimerkiksi edellisestä saisi Audin logon helposti
hyvä jos otat jonkin muun haasteen
Harjoitus 6
Piirrä tikkataulu.
Harjoitus 7
Korjaa (tarvittaessa) tikkataulun mittasuhteet aidoiksi. Etsi siis netistä viralliset mitat.
Harjoitus 8
Refactoroi tikkataulun koodi mm. seuraavasti:
käytä vakiota, joka ilmoittaa aina yhden kehän leveyden
mikäli suhteutat kympinkin tähän vakioon, voit muuttaa tikkataulun kokoa yhtä vakiota muuttamalla
käytä for-silmukkaa (tai jotain muuta silmukkaa) välttääksesi toistoa koodissasi