Turtle 3. tunti

Toistorakenne

Ohjelmoinnissa on usein tarpeen toistaa jotakin komentosarjaa riittävän monta kertaa. Alla olevassa esimerkissä kilpikonna menee eteenpäin 100 pikseliä ja kääntyy vasemmalle 90 astetta toistuvasti ja kiertää neliön muotoista rataa.

Esimerkki 1.


Välitehtävä 1.

Kokeile itse while-toistosilmukkaa sandboxissa kopioimalla alla olevat rivit ja laittamalla omat komennot while-silmukan alle.

import turtle
kilppari = turtle.Turtle()

while True:
[[$ \ \ \ \ \ $]] #jokin komento tähän
[[$ \ \ \ \ \ $]] #jokin komento tähän
[[$ \ \ \ \ \ $]] #jokin komento tähän

Jos jokin komento halutaan toistaa tietyn monta kertaa, voidaan käyttää for-komentoa.

Esimerkki 2.


Yllä olevassa ohjelmassa kilpikonna menee eteenpäin ja kääntyy oikealle neljä kertaa, jolloin syntyy neliö.

Välitehtävä 2.

Kokeile itse for-toistokomentoa kopioimalla alla olevat rivit ja laittamalla omat komennot for-komennon alle. Voit määrätä toistojen lukumäärän laittamalla kirjaimen x paikalle haluamasi luvun.

import turtle
kilppari = turtle.Turtle()

for i in range (0,x):
[[$ \ \ \ \ \ $]] #jokin komento tähän
[[$ \ \ \ \ \ $]] #jokin komento tähän
[[$ \ \ \ \ \ $]] #jokin komento tähän

Tehtävät

1. Ohjelmoi olio kulkemaan ikuisesti pisteiden (0,0) ja (100, 100) välillä. (Esimerkki 1.)

2. Ohjelmoi olio kulkemaan ikuisesti pitkin kolmion sivuja. Kolmion kärkipisteet ovat (0,0), (100,0) ja (0, 100).

3. Laita alla olevaan ohjelmaan oikea luku kirjaimen x paikalle, jotta olio piirtää kuvan mukaisen kuvion.

import turtle
kilppari = turtle.Turtle()

for i in range (0,x):
[[$ \ \ \ \ \ $]] kilppari.forward(20)
[[$ \ \ \ \ \ $]] kilppari.left(90)
[[$ \ \ \ \ \ $]] kilppari.forward(20)
[[$ \ \ \ \ \ $]] kilppari.right(90)



4. Piirrä tasasivuinen kolmio käyttämällä for-komentoa. (Esimerkki 2.)

5. Komennoilla

import turtle
import random

kilppari = turtle.Turtle()

while True:
[[$ \ \ \ \ \ $]] kilppari.goto(random.randint(-300,300),random.randint(-300,300))

olio menee satunnaisiin paikkoihin piirtoalustalla.

a) Muuta ohjelmaa siten, että olio piirtää ympyrän aina päätyessään uuteen pisteeseen.

b) Muuta ohjelmaa vielä siten, että olio jättää jäljen vain piirtämistään ympyröistä.

Ohjailtava kilpikonna

Alla olevalla ohjelmalla oliota voi ohjailla näppäimillä W (ylös), A (vasen), S (alas) ja D(oikea) ja antamalla kuljettava matka. Kokeile ohjelmaa ja mieti, mikä on minkäkin komennon tarkoitus.

import turtle
kilppari = turtle.Turtle()




while True:

[[$ \ \ \ \ \ $]] suunta = input ("Anna suunta.")
[[$ \ \ \ \ \ $]] matka = int(input ("Anna matka."))

[[$ \ \ \ \ \ $]] if suunta == "a":
[[$ \ \ \ \ \ $]] [[$ \ \ \ \ \ $]] kilppari.setheading(180)
[[$ \ \ \ \ \ $]] [[$ \ \ \ \ \ $]] kilppari.fd(matka)

[[$ \ \ \ \ \ $]] if suunta == "d":
[[$ \ \ \ \ \ $]] [[$ \ \ \ \ \ $]] kilppari.setheading(0)
[[$ \ \ \ \ \ $]] [[$ \ \ \ \ \ $]] kilppari.fd(matka)

[[$ \ \ \ \ \ $]] if suunta == "w":
[[$ \ \ \ \ \ $]] [[$ \ \ \ \ \ $]] kilppari.setheading(90)
[[$ \ \ \ \ \ $]] [[$ \ \ \ \ \ $]] kilppari.fd(matka)

[[$ \ \ \ \ \ $]] if suunta == "s":
[[$ \ \ \ \ \ $]] [[$ \ \ \ \ \ $]] kilppari.setheading(270)
[[$ \ \ \ \ \ $]] [[$ \ \ \ \ \ $]] kilppari.fd(matka)