Wstęp
W Pythonie za pomocą modułu turtle możemy w łatwy sposób stworzyć rysunki i grafiki. Wydając wirtualnemu "żółwiowi" polecenia takie jak: idź naprzód, skręć w prawo lub wypełnij kolorem, możemy narysować na cyfrowej kartce nawet bardzo rozbudowane rysunki.
W tym artykule poznamy podstawowe instrukcje oferowane przez moduł 'turtle' i nauczymy się jak za ich pomocą tworzyć pierwsze rysunki w Pythonie.
Pierwsze kroki
Przed rozpoczęciem pracy z modułem turtle musimy zaimportować go do naszego programu w Pythonie. W tym celu na początku programu powinniśmy umieścić następującą linię.
from turtle import *
Od tego momentu w naszym programie możemy już tworzyć pierwsze rysunki, wydając polecenia wirtualnemu żółwiowi. Każde z poleceń ma postać wywołania funkcji o nazwie odpowiadającej ruchowi, który powinien wykonać żółw. W dalszej części lekcji poznamy jakie instrukcje możemy wydawać żółwiowi. Na początku przeanalizujmy krótki program, który za pomocą polecenia forward(100) narysuje pionową linię o długości 100 pikseli.
# Przykład 1.
from turtle import *
forward(100)
Po uruchomieniu programu otworzy się dodatkowe okno z białą planszą - cyfrową kartką, po której porusza się strzałka (symbolizująca żółwia). Żółw zawsze zaczyna rysowanie skierowany w prawą stronę, z pozycji na środku kartki, po czym wykonuje kolejne polecenia, które umieściliśmy w naszym programie.
|
W tym przykładzie, żółw poruszy się do przodu w prawą stronę, tworząc poziomą linię o długości 100 pikseli.
Poruszanie się
Żółw może poruszać się zarówno do przodu, jak i do tyłu względem strony, w którą jest zwrócony. Za pomocą polecenia forward(odległość) możemy przesunąć żółwia do przodu o podaną odległość.
# Przykład 2.
from turtle import *
forward(100)
Aby żółw cofnął się o podaną odległość, powinniśmy użyć polecenia backward(odległość).
# Przykład 3.
from turtle import *
forward(100)
backward(200)
Obracanie się
Żółw może również obracać się w prawo i lewo o podany kąt. Możemy w ten sposób zmienić kierunek, w który zwrócony jest żółw.
Za pomocą polecenia right(kąt) możemy obrócić żółwia w prawo o podany kąt, zaś za pomocą instrukcji left(kąt) możemy obrócić żółwia w lewo o podany kąt.
# Przykład 4.
from turtle import *
right(90)
forward(100)
left(45)
forward(50)
Rysowanie okręgów
Używając instrukcji circle(promień) możemy narysować okrąg o podanym promieniu. Jeżeli jako drugi argument podamy dodatkowo kąt - circle(promień, kąt), będziemy mogli zamiast pełnego okręgu narysować pewien jego fragment. Na przykład polecenie circle(100, 180) narysuje półkole o promieniu 100.
Przykład - kwadrat
Wykorzystując poznane przed chwilą polecenia, narysujmy prosty rysunek przedstawiający kwadrat o boku długości 120 pikseli. W tym celu czterokrotnie poruszymy się do przodu, rysując kolejny bok kwadratu, po czym obrócimy się w prawo o 90 stopni.
# Przykład 5.
from turtle import *
forward(120)
right(90)
forward(120)
right(90)
forward(120)
right(90)
forward(120)
right(90)
Pętle, funkcje i warunki
Podczas tworzenia rysunków za pomocą modułu turtle możemy z powodzeniem wykorzystywać poznane wcześniej instrukcje Pythona - takie jak instrukcje warunkowe, pętle, czy funkcje. Dzięki wykorzystaniu pętli możemy w prosty sposób uniknąć powtarzania kodu, zamieniając go przykładowo na pętlę for. Opis pętli for możesz znaleźć w artykule: Poznaj pętlę for w Pythonie. Funkcje pozwalają na lepszą organizację programu i łatwiejsze łączenie różnych elementów rysunku ze sobą. Pomagają również wykorzystać taki sam fragment rysunku w wielu miejscach. W przypadku bardziej skomplikowanych rysunków zawierających funkcje i pętle, warto pamiętać o ustawieniu żółwia po wykonaniu pętli lub funkcji w początkowej pozycji i kierunku. Przykładowo jeżeli nasza funkcja rysuje kwadrat i uruchomimy ją gdy żółw znajduje się na środku ekranu i jest skierowany w prawo, to po jej wykonaniu żółw powinien wrócić do punktu startowego na środku ekranu i powinien być skierowany w prawo. Dzięki temu, po użyciu funkcji, w dalszej części rysunku będziemy mogli łatwiej kontynuować rysowanie bez potrzeby dodatkowego ustawiania żółwia do prawidłowej pozycji.
Przykład - sześciokąt
Napiszmy program, który narysuje sześciokąt o długości boku podanej przez użytkownika. W tym celu użyjemy poznanych poleceń, pętli `for` oraz funkcji.
# Przykład 6.
from turtle import *
def szesciokat(bok):
kat = 60
for i in range(6):
forward(bok)
left(kat)
bok = int(input("Podaj dlugosc boku: "))
szesciokat(bok)
|
Przykład - spirala
Napiszmy program, który narysuje kwadratową spiralę. W tym celu wykorzystamy funkcję while, polecenia right oraz forward, przesuwając żółwia o coraz krótsze odcinki.
# Przykład 7.
from turtle import *
def spirala(bok):
kat = 90
while bok > 0:
forward(bok)
right(kat)
bok -= 5
bok = int(input("Podaj dlugosc boku: "))
spirala(bok)
Kolory i wypełnienia
Dzięki poznanym przed chwilą poleceniom możemy stworzyć rysunki składające się z czarnych linii, tworzących różnorodne kształty. Każdy narysowany kształt ma biały kolor - taki sam jak kolor cyfrowej kartki. Możemy jednak wprowadzić do naszych rysunków więcej kolorów zmieniając zarówno kolor linii, jak i wypełnienia. W naszych rysunkach możemy skorzystać z wielu kolorów oferowanych przez moduł turle. Są to m.in.: niebieski (blue), zielony (green), żółty (yellow), czerwony (red), pomarańczowy (orange), różowy (pink), fioletowy (purple), czarny (black), biały (white). Aby zmienić kolor rysowanych linii powinniśmy ustawić "kolor długopisu" używanego przez żółwia do rysowania na kartce. Służy do tego instrukcja pencolor(kolor), w której należy podać nazwę wybranego przez nas koloru. Żółw ma również możliwość wypełnienia kształtu wybranym przez nas kolorem. W tym celu przed rozpoczęciem rysowania danego kształtu powinniśmy ustalić kolor wypełniania za pomocą polecenia fillcolor(kolor), rozpocząć wypełnianie za pomocą instrukcji begin_fill(), a następnie narysować dany kształt i po jego zamknięciu zakończyć wypełnianie używając polecenia end_fill().
Przykład - kolorowy trójkąt
Napiszmy program, który narysuje trójkąt z czerwonym konturem oraz niebieskim wypełnieniem. W tym celu wykorzystamy funkcje fillcolor oraz pencolor.
# Przykład 8.
from turtle import *
bok = 100
pencolor("red") # kolor długopisu
fillcolor("blue") # kolor wypełnienia
begin_fill()
for i in range(3):
forward(bok)
left(120)
end_fill()
Poruszanie się bez rysowania
Żółw w czasie poruszania się zostawia ślad na kartce za pomocą wirtualnego "długopisu". Do tej pory każdy ruch, który wykonywaliśmy w ramach naszych programów powodował narysowanie na kartce linii odpowiadającej ruchowi żółwia.
Możemy jednak zmienić to zachowanie przy użyciu specjalnych funkcji, które wywołamy przed wykonaniem przez żółwia danego ruchu. Za pomocą polecenia penup() możemy podnieść długopis znad kartki, tak aby ruch żółwia nie zostawiał żadnych śladów. Kiedy będziemy chcieli ponownie zacząć rysowanie, możemy z powrotem opuścić długopis na kartkę przy użyciu polecania pendown()
Skoki
Gdy tworzymy bardziej skomplikowane rysunki, przemieszczenie żółwia z powrotem na początkową pozycję może być trudne do wykonania. W wielu przypadkach musielibyśmy odtworzyć ruchy wykonane przez żółwia w odwrotnej kolejności, aby mógł on powrócić do punktu startowego. Moduł turle oferuje możliwość zapamiętania pozycji żółwia w zmiennej przy użyciu funkcji pos(), a następnie skoku bezpośrednio do podanej pozycji za pomocą funkcji goto(pozycja). W czasie skoku żółw rysuje na kartce linię od punktu startowego do punktu końcowego, dlatego przed skokiem warto jest podnieść długopis znad kartki za pomocą funkcji penup().
# Przykład 9.
from turtle import *
start = pos() # zapamiętanie pozycji startowej
forward(100)
right(90)
forward(120)
goto(start) # powrót do pozycji startowej
# Przykład 10.
from turtle import *
start = pos()
bok = 80
kat = 90
while bok > 0:
forward(bok)
right(kat)
bok -= 5
penup()
goto(start)
Podsumowanie i ćwiczenia
Ważnym elementem nauki są zadania sprawdzające zdobytą wiedzę. Proponujemy rozwiązanie 10 ćwiczeń, które zostały opisane w artykule: 10 ćwiczeń sprawdzających umiejętność rysowania w Turtle (Python).
Więcej materiałów dotyczących Pythona znajdziesz na naszej innowacyjnej platformie do nauki programowania - Codeforia. W serwisie dostępne są materiały do czytania oraz ponad 200 interaktywnych zadań z możliwością automatycznej oceny (po chwili otrzymujemy informację, czy nasze rozwiązanie jest poprawne).
Zapraszamy również na nasze kursy grupowe, w szczególności kurs Python dla początkujących lub Python dla zaawansowanych.