Grafika żółwia

Stronę tą wyświetlono już: 669 razy

Grafika żółwia została wymyślona na potrzeby edukacji najmłodszych programistów. W Pythonie istnieje cały moduł o nazwie turtle (żółw), który umożliwia tworzenie programów rysujących elementy grafiki 2W. Oto prosty przykład mojego autorstwa, pokazujący w jak prosty sposób można uzyskać dość ciekawy efekt:

Listing 1
  1. import turtle
  2. turtle.pensize(30)
  3. angle = 72
  4. iter = 100
  5. for i in range(iter):
  6. turtle.pencolor((i / iter, (iter - i) / iter, 0))
  7. turtle.forward(i)
  8. turtle.circle(i, angle)

W powyższym kodzie zmienna angle (kąt) określa kąt wycinka koła, jaki będzie rysowany, natomiast zmienna iter (skrót od iteracje) określa liczbę powtórzeń. Wywołanie funkcji turtle.pensize umożliwia określenie szerokości pióra, jaką będą rysowane linie tworzonej grafiki. Kolejna funkcja związana z piórem to turtle.pencolor ta z kolei przyjmuje jeden argument w postaci krotki składającej się z trzech elementów opisujących intensywność danej barwy w kolejności następującej (red, green, blue), gdzie każda składowa jest liczbą zmiennoprzecinkową z zakresu od 0 do 1. Funkcja turtle.forward określa ruch zgodny z kierunkiem wskazywanym przez żółwia o zadaną wartość. Ostatnia funkcja to i oraz kąt angle jego wycinka. Efektem działania powyższego kodu jest wygenerowanie grafiki pokazanej na poniższej ilustracji.

Przykład grafiki żółwia wygenerowanej w Pythonie
Rys. 1
Przykład grafiki żółwia wygenerowanej w Pythonie.

Dokładną dokumentację tego modułu można znaleźć na stronie docs.python.org, ja postaram się jedynie przybliżyć niektóre z podstawowych poleceń.

Polecania związane z kolorem pióra

Zmiana rozmiaru pędzla

Jak już wspomniałem wcześniej możliwe jest zmienienie szerokości pióra rysowanych linii za pomocą funkcji turtle.pensize:

Listing 2
  1. turtle.pensize(10)

Powyższy kod ustawia szerokość pióra na 10px.

Zmiana koloru pędzla

Kolor pędzla jest opisywany jako krotka, składająca się z trzech elementów opisujących kolejne składowe kolory liczbami zmiennoprzecinkowymi z zakresu od 0 do 1. Oto przykład użycia funkcji turtle.pencolor:

Listing 3
  1. turtle.pencolor((0.5, 0.5, 0.5))

Powyższy kod ustawia kolor pędzla na szary.

Funkcje sterujące kierunkiem rysowania:

Obrócenie żółwia w lewo

Funkcja turtle.left obraca żółwia o zadany kąt w lewo (czyli przeciwnie do ruchu wskazówek zegara), oto przykład użycia tejże funkcji:

Listing 4
  1. for i in range(4):
  2. turtle.forward(100)
  3. turtle.left(90)

Efektem działania powyższego kodu będzie narysowanie kwadratu.

Obrócenie żółwia w prawo

Funkcja turtle.right obraca żółwia o zadany kąt w prawo (czyli zgodnie z ruchem wskazówek zegara), oto przykład użycia tejże funkcji:

Listing 5
  1. for i in range(4):
  2. turtle.forward(100)
  3. turtle.right(90)

Efektem działania powyższego kodu będzie narysowanie kwadratu.

Instrukcje rysujące

Rysowanie linii prostej do przodu

Do przodu oznacza w kierunku wskazywanym przez żółwia. Funkcja wykonująca tą operację to turtle.forward, która jako jedyny argument przyjmuje długość rysowanej linii.

Rysowanie linii prostej do tyłu

Do tyłu oznacza w kierunku przeciwnym do wskazywanego przez żółwia. Funkcja wykonująca tą operację to turtle.back, która jako jedyny argument przyjmuje długość rysowanej linii.

Rysowanie linii do punktu o podanych współrzędnych bezwzględnych

Funkcją umożliwiającą rysowanie w współrzędnych bezwzględnych jest turtle.goto. Funkcja ta przyjmuje dwa argumenty: współrzędną x i współrzędną y.

Listing 6
  1. turtle.goto(100,0)
  2. turtle.goto(100,100)
  3. turtle.goto(0,100)
  4. turtle.goto(0,0)

Powyższy przykład również rysuje prostokąt.

Ustawienia rysowania

Bieżące współrzędne położenia żółwia

Za pomocą turtle.position można uzyskać informacje o bieżących współrzędnych żółwia:

Listing 7
  1. print(turtle.position())

Zwracana wartość to krotka w postaci (x, y).

Istnieje też możliwość pozyskania jednej ze składowych bieżącej pozycji żółwia za pomocą funkcji turtle.xcor oraz ycor.

Bieżący kąt położenia żółwia

Można również określić kąt położenia żółwia za pomocą funkcji turtle.heading().

Odległość bieżącego punktu od innego punktu

Obliczeniem odległości dzielącej bieżący punkt położenia żółwia od podanego punktu zajmuje się funkcja turtle.distance, która przyjmuje dwa argumenty: współrzędną x i y.

Czyszczenie okna rysowania

Obszar rysowania można z powodzeniem wyczyścić za pomocą funkcji turtle.clear.

Resetowanie ustawień rysowania z jednoczesnym czyszczeniem obszaru rysowania

Resetowanie ustawień odbywa się za pomocą funkcji turtle.reset.

Cofanie ostatnio wykonanej operacji rysowania

Cofanie ostatnio wykonanej operacji rysowania odbywa się za pomocą funkcji turtle.undo.

Przywracanie ostatnio cofniętej operacji rysowania

Przywracanie ostatnio cofniętej operacji rysowania odbywa się za pomocą funkcji turtle.redo.

Strony powiązane
strony powiązane
  1. python.org - dokladna dokumentacja omawianego moduł

Komentarze