speed, tracer i update
Szybkość animacji i ostateczna geometria rysunku to zupełnie różne rzeczy. A dla naprawdę złożonych wzorów istnieje technika znacznie potężniejsza niż tylko speed(0).
speed() zmienia animację, a nie efekt
artist.speed() kontroluje, co jak szybko
możesz zobaczyć rysunek, nie z tym, co ostatecznie masz. Ostateczny rysunek w
speed(1) i na speed(0)
wyjdzie geometrycznie dokładnie to samo — różnica jest tylko taka,
czy widzisz sam proces, czy od razu gotowy wynik. Statyczny obraz fizycznie nie
może pokazać różnicy w szybkości — widać ją tylko na żywo, przy uruchamianiu kodu.
tracer() i update(): pobierają partie
Nawet przy naprawdę złożonych rysunkach (setki i tysiące zespołów)
speed(0) może wydawać się wolny — ekran odświeża się po
każdy drużyny. screen.tracer(0) wyłączenia
W ogóle aktualizacje pośrednie, oraz screen.update() aktualizuje
ekran raz, ręcznie, gdy rysunek jest gotowy:
→ ekran zaktualizowany
→ ekran zaktualizowany
drużyna, drużyna, drużyna, ...
update() → ekran odświeżył się RAZ
import turtle
screen = turtle.Screen()
screen.setup(width=420, height=420)
screen.tracer(0)
artist = turtle.Turtle()
artist.hideturtle()
artist.pencolor("#5B24F9")
for i in range(36):
artist.circle(80)
artist.right(10)
screen.update()
screen.exitonclick()
screen.tracer(0) # wyłącz aktualizacje pośrednie
for i in range(36):
artist.circle(80)
artist.right(10)
screen.update() # ostatnia aktualizacja i cały wzór pojawia się naraz
tracer(0) + update() może sprawić, że rysowanie będzie wielokrotnie szybsze — ekran po prostu nie traci czasu na przerysowywanie po każdym kroku.delay() - Samodzielne otoczenie
screen.delay() ustawia opóźnienie w milisekundach między
Klatki animacji — koncepcyjnie podobne do speed(), ale
Działa na poziomie ekranu, a nie pojedynczego żółwia:
screen.delay(15) # milisekundy między klatkami animacji
print(screen.delay()) # bez argumentu zwróci aktualną wartość
Klasyczna pułapka debugująca
tracer(0) coś narysować, ale zapomnieć update() — ekran pozostanie pusty! To jeden z najczęstszych i nieoczywistych błędów z Turtle — kod wykonuje się bez żadnego błędu, a na ekranie nic nie ma. Szczegółowo omówimy to w rozdziale o debugowaniu grafiki.