V této lekci si vyzkoušíš želví kreslení.
Spusť Python v interaktivním módu (bez souboru .py).
$ python
>>>
(Znaky >
a $
píše počítač, ne ty.
Na Windows bude místo $
znak
>
a před $
nebo
>
může být ještě něco dalšího.)
Pak napiš:
from turtle import forward
forward(50)
Ukáže se okýnko se šipkou, které nezavírej. Dej ho tak, abys viděla i příkazovou řádku i nové okýnko.
Želva je zrovna převlečená za šipku.
Ale funkce shape
ji umí odmaskovat:
from turtle import shape
shape('turtle')
Modul turtle
obsahuje spoustu dalších funkcí, kterými můžeš želvu ovládat.
Pojďme se na ně kouknout zblízka.
Želva se umí otáčet (doleva – left
a doprava – right
) a lézt po papíře
(dopředu – forward
).
Na ocase má připevněný štětec, kterým při pohybu kreslí čáru.
from turtle import forward, left, right
forward(50)
left(60)
forward(50)
right(60)
forward(50)
Zkus chvíli dávat želvě příkazy.
Když se ti výsledek nelíbí, můžeš zavřít kreslící okno a zkusit to znovu.
(Nebo místo zavření okna můžeš naimportovat a použít funkci clear()
.)
Pokud je pro tebe těžké představit si kam se želva pomocí left
a right
otáčí
můžeš zkusit používat funkci setheading
, které předáš absolutní úhel vůči "papíru":
0° je doprava, 90° nahoru, 180° doleva, 270° dolu.
Interaktivní mód je skvělý na hraní, ale teď přejdeme zase na soubory.
Vytvoř si v editoru nový soubor.
Ulož ho do adresáře pro dnešní lekci pod jménem zelva.py
.
Jestli adresář pro dnešní lekci ještě nemáš, vytvoř si ho!
Pojmenuj ho třeba 02
.
Soubor nepojmenovávej turtle.py
– z modulu turtle
budeš importovat.
Jestli chceš pro soubor použít jiné jméno, můžeš, ale
nepojmenovávej ho turtle.py
.
Do souboru napiš příkazy na nakreslení obrázku
a – pozor! – na konci programu zavolej funkci exitonclick
(naimportovanou z modulu turtle
).
Otázka
Co dělá funkce exitonclick
, kterou voláš na konci programu?
Funkce penup
řekne želvě, aby zvedla ocásek se štětcem: bude se tak hýbat
aniž by za sebou nechávala stopu.
Funkcí pendown
můžeš želvě říct, aby kreslit zase začala.
Zkus si to:
from turtle import forward, penup, pendown, exitonclick
forward(30)
penup() # od teď želva nekreslí
forward(5)
pendown() # od teď želva zase kreslí
forward(30)
exitonclick()
Až to budeš mít hotové, zkus začít kreslit trochu složitější obrázky:
Nakresli čtverec.
Čtverec má čtyři rovné strany a čtyři rohy po 90°.
Nakresli obdélník.
Zkus zařídit, aby se po nakreslení „dívala” želva doprava (tak jako na začátku).
Nakresli tři čtverce, každý otočený třeba o 20°.
Tolik kódu! Tohle musí jít nějak zjednodušit!
Jde.
Přesně proto jsme se učili for
cyklus!
Už víš, že pomocí penup
a pendown
lze nakreslit přerušenou čáru:
from turtle import forward, penup, pendown, exitonclick
forward(30)
penup() # od teď želva nekreslí
forward(5)
pendown() # od teď želva zase kreslí
forward(30)
exitonclick()
Zkus nakreslit dlouhou přerušovanou čáru.
Pak zkus zařídit, aby jednotlivé čárky byly postupně větší a větší.
Nápověda
První čárka je dlouhá 1 jednotku, druhá 2 jednotky, třetí 3, atd.
Dokonce můžeš na začátek dát prázdnou čárku (0 jednotek) a mít tak délky 0, 1, 2, 3, 4, …
V jaké proměnné máš při prvním průchodu cyklem 0, ve druhém 1, atd.?
A teď znovu nakresli čtverec, tentokrát lépe – s použitím cyklu!
Čtverec se kreslí následovně:
Nakonec nakresli 3 čtverce, každý otočený o 20°.
Tentokrát už víš, jak to dělat chytře: opakuj pomocí příkazu
for
, ne kopírováním kódu.
Máš-li hotovo, zkus nakreslit schody:
A máš-li i schody, zkus nakreslit těchto šest (nebo sedm?) šestiúhelníků: