Python Turtle, jest to bardzo popularny sposób nauki podstawowych operacji w Python. Pozwala ona w prosty sposób pisać aplikacje graficzne i mieć przy tej okazji, sporo radości. Włączając tworzenie ciekawych grafik, czy też bardzo prostych gier. Jak przykładowo:
Czy też bardzo popularna gra, którą często wykonuje się jako jeden z pierwszych projektów w Python, wyścig żółwi:
Instalacja oraz uruchomienie turtle
Standardowo biblioteka jest już dołączona do Python 3, tak więc wystarczy ją zaimportować:
import turtle
Pierwszy program w Python turtle
Stworzenie pierwszego programu, jest bardzo proste. Wystarczy utworzyć obiekt żółwia, a następnie uruchomi się okienko, natomiast na jego środku, będzie bohater biblioteki, czyli żółw. Domyślenie ma on kształt strzałki, jednak możemy w łatwy sposób nadać mu faktyczny kształt.
import turtle żółw = turtle.Turtle() żółw.shape('turtle') turtle.exitonclick()
a następnie, po uruchomieniu programu, zobaczymy natępujace okienko
funkcja exitonclick(), umieszczona na końcu, powoduje że okienko się nie zamknie, dopóki nie klikniemy.
Podstawowe ruchy turtle
Podstawowe operacje w turtle, to przemieszczanie się naszego żółwia. Mamy do dyspozycji dość sporą liczbę funkcji. Najważniejsze to:
forward(x) lub fr(x) | do przodu, o podany dystans |
backward(x) lub bc(x) | do tyłu, o podany dystans |
right(x) lub rt(x), left(x) lub lf(x) | obróć się w prawo / lewo, o podany kąt |
goto(x,y) | pójdź do konkretnego punktu |
home() | wróć na środek ekranu |
circle(x) | narysuj koło o podanym promieniu |
W rezultacie, po dodaniu następujących linijek do naszego programu:
import turtle t = turtle.Turtle() t.shape('turtle') t.forward(200) t.right(90) t.forward(150) t.right(90) t.forward(100) t.home() turtle.exitonclick()
Otrzymamy następującą figurę:
W analogiczny sposób, możemy rysować dowolnie złożone figury. Dodatkowo, warto zauważyć, że funkcje mają również swoje nazwy skrócone.
I jeszcze kilka kółek, aby pokazać co nasz żółw potrafi:
import turtle t = turtle.Turtle() t.shape('turtle') t.circle(50) t.right(45) t.circle(60) t.right(45) t.circle(70) t.right(45) t.circle(80) turtle.exitonclick()
Kolory, rozmiar oraz prędkość
Jeżeli umiemy już poruszać się naszym żółwiem, możemy uatrakcyjnić jego wygląd, za pomocą kilku prostych funkcji:
turtle.bgcolor(x) | zmienia kolor tła. Jak x możemy podać takie kolory jak 'red’,’blue’,’green’,’yellow’,’black’, 'white’ i wiele innych. Możemy również podać kolor w RGB (x,y,z) |
color(x) | zmienia kolor naszego żółwia i linii które rysuje |
pensize(x) | ustawia grubość linii |
penup() | powoduje że żółw przemieszcza się bez rysowania |
pendown() | żółw znowu rysuje |
hideturtle() oraz showturtle() | żółw znika / pojawia się |
speed(x) | ustawia prędkość żółwia |
write(tekst) | żółw pisze |
I jeżeli połączymy kilka tych funkcji w jeden program:
import turtle turtle.bgcolor('black') t = turtle.Turtle() t.shape('turtle') t.color('red') t.circle(50) t.penup() t.goto(-200,0) t.pendown() t.color('white') t.write('Cześć', font=("Arial",30,"bold")) t.hideturtle() turtle.exitonclick()
Otrzymamy następująca grafikę:
Wypełnianie kolorem w turtle
Biblioteke turtle, oferuje również prosty sposób wypełniania kształtów kolorem. Wystarczy, że przed rozpoczęciem rysowania figury, wywołamy funkcję begin_fill(), a po zakończeniu end_fill(), i narysowana przez nas figura się wypełni.
import turtle turtle.bgcolor('black') t = turtle.Turtle() t.shape('turtle') t.color('red') t.begin_fill() t.forward(100) t.right(90) t.forward(100) t.right(90) t.forward(100) t.right(90) t.forward(100) t.right(90) t.end_fill() turtle.exitonclick()
A w rezultacie otrzymamy:
Lokalizacja żółwia
Jak już mogliśmy zauważyć, nasz żółw startuje z punktu (0,0). Jest to środek planszy. Jeżeli chcemy go przemieszczać w różnych kierunkach, przy użyciu współrzędnych, to wykonujemy to w analogiczny sposób jak znany z geometrii:
Dodatkowo, w każdym momencie, możemy uzyskać położenie naszego żółwia, za pomocą funkcji position().
Wiele żółwi
Naszego żółwia, możemy skopiować, za pomocą funkcji clone(), jak i również możemy utworzyć kolejne żółwie za pomocą turtle.Turtle().
W ten sposób możemy tworzyć grafikę, w kilku miejscach planszy, niezależnie.
import turtle t = turtle.Turtle() t.shape('turtle') t.color('red') t.pensize(7) t.penup() t.goto(-200,100) t.pendown() t.forward(300) t2 = turtle.Turtle() t2.shape('turtle') t2.color('blue') t2.pensize(7) t2.penup() t2.goto(-200,-100) t2.pendown() t2.forward(150) turtle.exitonclick()
Pierwsza, bardziej złożona figura w Python turtle
Używając powyższej wiedzy, oraz odrobinę pętli, możemy rysować bardzo abstrakcyjne kształty. W poniższym kodzie, malujemy tło na czarno, następnie, ustawiamy prędkość żółwia na maksymalną i w pętli, rysujemy:
- losujemy kolor linii
- przemieszczamy żółwia o x
- obracamy żółwia o 91 stopni
- powtarzamy pętlę
import turtle import random turtle.bgcolor('black') t = turtle.Turtle() t.speed(0) for x in range(50, 300): t.color(random.choice(['white','red','blue','green','yellow'])) t.forward(x) t.right(91) turtle.exitonclick()
W rezultacie otrzymujemy:
Obsługa klawiszy w turtle
W turtle, mamy możliwość nasłuchiwania na zdarzenia, takie jak naciśnięcie klawisza, i jego obsłużenie. Czyli wykonanie odpowiedniej akcji. Pozwala to na pisanie interaktywnych programów.
Podstawową funkcją, którą trzeba użyć jest turtle.onkey(funkcja, zdarzenie). Pierwszy parametr, to funkcja która ma zostać wykonana, w momencie, kiedy nastąpi zdarzenie opisane przez drugi parametr.
Następnie na końcu naszego programu, należy poinformować Python turtle, że ma nasłuchiwać na zdarzenia, oraz całość ma być powtarzana.
turtle.listen() turtle.mainloop()
program zakończy się, w momencie kiedy zostanie uruchomiona funkcja turtle.bye()
Zdecydowanie prościej jest to pokazać, niż wytłumaczyć, tak więc przyjrzyjmy się prostemu programowi.
Jego zadaniem, jest nasłuchiwanie na 4 klawisze – strzałka do góry, w lewo, w prawo oraz klawisz 'q’:
- strzałka do góry, przemieszcza żółwia o 100
- strzałka w prawo, obraca go w prawo o 30 stopni
- strzałka w lewo, obraca go w lewo o 30 stopni
- ’q’ kończy działanie naszego programu
W tym celu, zdefiniowaliśmy 4 funkcje, które wykonują odpowiednie akcje. Aby program był atrakcyjniejszy, przy każdym ruchu, żółw losuje swój kolor.
import turtle t = turtle.Turtle() def up(): t.forward(100) def left(): t.left(30) def right(): t.right(30) def bye(): turtle.bye() turtle.onkey(up,'Up') turtle.onkey(left,'Left') turtle.onkey(right,'Right') turtle.onkey(bye,'q') turtle.listen() turtle.mainloop()
W rezultacie, otrzymaliśmy możliwość sterowania naszym żółwiem, co wykorzystaliśmy do próby napisania literki 'P’. 'P’ jak Python 🙂