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 🙂

Python Turtle