Desenarea simplă utilizând țestoasa

Introducere

Țestoasa este ca o planșetă de desen.

Are funcții ca turtle.forward(...) și turtle.left(...), care pot mișca țestoasa.

Înainte de a utiliza țestoasa, aceasta trebuie importată. Îți recomandăm sa te joci cu ea în mod interactiv pentru început, deoarece va fi nevoie de cateva lucruri suplimentare pentru a o face să funcționeze din fișiere. Deschide un terminal și scrie:

import turtle
_images/default.png

Note

Nu vezi nimic în MacOS? Încearcă să dai o comandă ca turtle.forward(0)` și să verifici dacă s-a deschis o fereastră nouă în spatele liniei de comandă.

Note

Utilizezi Ubuntu și primești mesajul “No module named _tkinter”? Instaleaza modulul lipsă cu sudo apt-get install python3-tk

Note

Deși ai putea fi tentat să copiezi pur și simplu ce este scris în această pagină în terminal, te încurajăm să scrii fiecare comandă. Scrierea îți aduce controlul sintaxei (construind memoria musculară!) și poate chiar să evite erori exotice de sintaxă.

turtle.forward(25)
_images/forward.png
turtle.left(30)
_images/left.png

Funcția turtle.forward(...) îi spune țestoasei să înainteze distanța specificată. turtle.left(...) primește un număr de grade cu care vrei să se rotească la stânga. Există de asemenea turtle.backward(...) și turtle.right(...).

Note

Vrei să începi din nou? Poți să scrii turtle.reset() pentru șterge ce a făcut până acum turtle``(țestoasa). O intrăm în detalii despre ``turtle.reset() în scurt timp.

Țestoasa standard este un triunghi. Nu e prea drăguț! Hai să o transformăm într-o țestoasă cu comanda turtle.shape():

turtle.shape("turtle")

Mult mai drăguț!

Dacă pui comenzile într-un fișier, poate ai observat că fereastra cu țestoasa dispare după ce țestoasa și-a terminat mișcarea. (Asta deoarece Python se închide după ce țestoasa și-a terminat mișcarea. De vreme ce fereastra țestoasei aparține Pyhon, și aceasta se închide.) Pentru a evita asta, adaugă turtle.exitonclick() la sfârșitul fișierului tău. Acum fereastra rămâne deschisă pâna cand apeși un buton în ea:

import turtle

turtle.shape("turtle")

turtle.forward(25)

turtle.exitonclick()

Note

Python este un limbaj de programare în care indentarea textului este importantă. O să învățăm despre asta în continuare în capitolul Funcții, dar pentru acum trebuie să reții că spațiile suplimentare sau caracterele tab în fața oricărei linii de cod Python pot genera erori.

Desenarea unui pătrat

Note

Nu trebuie neapărat să știi de fiecare dată răspunsul din prima! Învață prin încercări repetate! Experimentează, vezi cum reaționează python la diverse comenzi, ce generează rezultate frumoase (deși uneori neașteptate) și ce generează erori. Dacă vrei să te joci în continuare cu ceva ce ai învățat și dă rezultate interesante, este în regulă. Să nu îți fie frică să încerci și să greșești și să înveți din asta!

Exercițiu

Desenează un pătrat ca în figura următoare:

_images/square.png

Pentru un pătrat probabil vei avea nevoie de un unghi drept, care este de 90 de grade.

Soluția

turtle.forward(50)
turtle.left(90)
turtle.forward(50)
turtle.left(90)
turtle.forward(50)
turtle.left(90)
turtle.forward(50)
turtle.left(90)

Note

Observă cum țestoasa începe și termină în același loc și cu aceeași orientare la desenarea fiecărui pătrat. Aceasta este o convenție utilă, care ușurează desenarea mai multor forme consecutive.

Supliment

Dacă vrei să fii creativ, poți modifica forma cu funcțiile turtle.width(...) și turtle.color(...). Cum utilizezi aceste funcții? Înainte de a utiliza o funcție trebuie să îi cunoști semnătura (de exemplu numărul de parametri și semnificația lor). Pentru a putea afla asta poți să scrii help(turtle.color) în consola interactivă Python. Dacă este prea mult text, Python o să pună documentația într-un pager, care îți permite să derulezi pagini sus si jos. Apasă tasta q pentru a ieși din pager.

Tip

Primești o eroare ca:

NameError: name 'turtle' is not defined

atunci când vrei să vezi documentația? În Python trebuie să imporți numele înainte de a le utiliza, așa că într-o consolă interactivă nouă va trebui să dai comanda import turtle înainte ca help(turtle.color) să funcționeze.

O altă cale pentru a învăța despre funcții este consultarea online documentation.

Caution

Dacă ai desenat ceva greșit, poți să îi spui țestoasei să șteargă desenul cu directiva turtle.reset() sau să anulezi ultimul pas cu turtle.undo().

Tip

După cum e posibil să fi citit în documentație, poți modifica culoarea cu turtle.color(colorstring). Valorile includ dar nu sunt limitate la “red” (roșu), “green”(verde), și “violet”(violet).

Desenarea unui dreptunghi

Exercițiu

Poți să desenezi un dreptunghi?

_images/rectangle.png

Soluția

turtle.forward(100)
turtle.left(90)
turtle.forward(50)
turtle.left(90)
turtle.forward(100)
turtle.left(90)
turtle.forward(50)
turtle.left(90)

Supliment

Dar un triunghi? Într-un triunghi echilateral (un triunghi cu laturile egale) fiecare colț are un unghi de 60 de grade.

Mai multe pătrate

Exercițiu

Acum, desenează un pătrat înclinat. Și încă unul, și încă unul. Poți experimenta cu unghiurile între pătrate.

_images/tiltedsquares.png

În imagine sunt trei întoarceri de 20 de grade. Poți încerca, de exemplu, 20, 30 și 40.

Soluția

turtle.left(20)

turtle.forward(50)
turtle.left(90)
turtle.forward(50)
turtle.left(90)
turtle.forward(50)
turtle.left(90)
turtle.forward(50)
turtle.left(90)

turtle.left(30)

turtle.forward(50)
turtle.left(90)
turtle.forward(50)
turtle.left(90)
turtle.forward(50)
turtle.left(90)
turtle.forward(50)
turtle.left(90)

turtle.left(40)

turtle.forward(50)
turtle.left(90)
turtle.forward(50)
turtle.left(90)
turtle.forward(50)
turtle.left(90)
turtle.forward(50)
turtle.left(90)