Rozdział 7 · Głębokie zanurzenie w Turtle
Mini-projekt — emotikon
Zbieramy wszystkie techniki rozdziału w jednym przyjaznym rysunku, etapami — i podsumowujemy wyniki.
Co zbudujemy
Ostateczny mini-projekt rozdziału — i całego bloku o Turtle.. Złożymy przyjazną twarz z prymitywów, które omawialiśmy przez cały rozdział: wypełnienie, punkty, łuk.
smajlik.py
import turtle
screen = turtle.Screen()
screen.setup(width=340, height=340)
artist = turtle.Turtle()
artist.speed(0)
artist.penup()
artist.goto(0, -100)
artist.pendown()
artist.fillcolor("yellow")
artist.pencolor("#0D0230")
artist.pensize(2)
artist.begin_fill()
artist.circle(100)
artist.end_fill()
artist.penup()
artist.goto(-35, 35)
artist.pendown()
artist.dot(20, "black")
artist.penup()
artist.goto(35, 35)
artist.pendown()
artist.dot(20, "black")
artist.penup()
artist.goto(-45, -25)
artist.setheading(-60)
artist.pendown()
artist.pensize(4)
artist.circle(55, 120)
artist.hideturtle()
screen.exitonclick()
Rezultat
Rozłożymy twarz na prymitywy
| Szczegóły | Z czego się składa? | Tool |
|---|---|---|
| Face | zacienionym okręgu o promieniu 100 | fillcolor() + circle() + begin_fill()/end_fill() |
| Oczy | dwa punkty | dot() |
| Uśmiech | łuk okręgu o promieniu 60, extent 120° | circle(radius, extent) |
Plan współrzędnych
| Szczegóły | Współrzędna/Kąt |
|---|---|
| Lewe Oko | (-35, 120) |
| Prawe oko | (35, 120) |
| Smile Start | (-50, 60), kurs -60° |
Etap 1: Twarz
smajlik_lico.py
import turtle
screen = turtle.Screen()
screen.setup(width=340, height=340)
artist = turtle.Turtle()
artist.speed(0)
# circle(100) centruje okrąg w 100 px PO LEWEJ od kursora — zaczynamy na
# 100 poniżej (0, -100), aby twarz znalazła się dokładnie w centrum okna (0, 0)
artist.penup()
artist.goto(0, -100)
artist.pendown()
artist.fillcolor("yellow")
artist.pencolor("#0D0230")
artist.pensize(2)
artist.begin_fill()
artist.circle(100)
artist.end_fill()
screen.exitonclick()
Rezultat
smajlik_lico_kod.py
artist.fillcolor("yellow")
artist.pencolor("#0D0230")
artist.pensize(2)
artist.begin_fill()
artist.circle(100)
artist.end_fill()
Etap 2: oczy
smajlik_glaza.py
import turtle
screen = turtle.Screen()
screen.setup(width=340, height=340)
artist = turtle.Turtle()
artist.speed(0)
artist.penup()
artist.goto(0, -100)
artist.pendown()
artist.fillcolor("yellow")
artist.pencolor("#0D0230")
artist.pensize(2)
artist.begin_fill()
artist.circle(100)
artist.end_fill()
artist.penup()
artist.goto(-35, 35)
artist.pendown()
artist.dot(20, "black")
artist.penup()
artist.goto(35, 35)
artist.pendown()
artist.dot(20, "black")
screen.exitonclick()
Rezultat
smajlik_glaza_kod.py
artist.penup()
artist.goto(-35, 120)
artist.pendown()
artist.dot(20, "black")
artist.penup()
artist.goto(35, 120)
artist.pendown()
artist.dot(20, "black")
Krok 3: Uśmiechnij się i po wszystkim
smajlik_ulybka_kod.py
artist.penup()
artist.goto(-50, 60)
artist.setheading(-60)
artist.pendown()
artist.pensize(4)
artist.circle(60, 120)
artist.hideturtle()
smajlik.py
import turtle
screen = turtle.Screen()
screen.setup(width=340, height=340)
artist = turtle.Turtle()
artist.speed(0)
artist.penup()
artist.goto(0, -100)
artist.pendown()
artist.fillcolor("yellow")
artist.pencolor("#0D0230")
artist.pensize(2)
artist.begin_fill()
artist.circle(100)
artist.end_fill()
artist.penup()
artist.goto(-35, 35)
artist.pendown()
artist.dot(20, "black")
artist.penup()
artist.goto(35, 35)
artist.pendown()
artist.dot(20, "black")
artist.penup()
artist.goto(-45, -25)
artist.setheading(-60)
artist.pendown()
artist.pensize(4)
artist.circle(55, 120)
artist.hideturtle()
screen.exitonclick()
Rezultat
Podstawowa praktyka
Inny nastrój
Zmień łuk uśmiechu na łuk zmarszczonych brwi – odwróć kierunek extent.
★★ Zadanie samodzielne
Kolorowy emotikon
Zmień fillcolor twarzy na dowolny inny kolor.
Challenge
Policzki
Dodaj dwa małe różowe dot() pod oczami, aby uzyskać różowe policzki.
Praktyka: Rysowanie uśmiechniętej buźki
Moduł turtle otwiera natywne okno Python – uruchamiane lokalnie w VS Code, PyCharm lub Jupyter
Praktyka kursuje lokalnie
Podsumowanie rozdziału
Czego nauczyliśmy się w tym rozdziale
- Okno, płótno i świat współrzędnych — trzy różne rzeczy, które Turtle pozwala konfigurować osobno.
- colormode(1.0) i colormode(255) to dwa sposoby nagrywania tego samego RGB-colora.
- pencolor() koloruje kontur, fillcolor() — wypełnienie; color() ustawia oba naraz.
- speed() wpływa tylko na animację, a nie na ostateczną geometrię; tracer(0) + update() przyspieszają złożone grafiki, rysując je jako partię.
- circle() rysuje wpisany wielokąt — center znajduje się po lewej stronie żółwia, znak promienia określa kierunek, a steps steruje liczbą boków jawnie.
- stamp() pozostawia odcisk formy bez ruchu i bez linii.
- write() wyświetla tekst z konfigurowalnym align i font, zaczynając od bieżącej pozycji.
- Wiele turtle.Turtle() obiektów żyje niezależnie na tym samym ekranie, każdy w swoim własnym stanie; clone() kopiuje stan początkowy, a następnie obiekty się rozchodzą.
- clear(), reset() i home() usuwają i przesuwają różne kombinacje wzoru i pozycji.
co dalej
Turtle- grafika nie kończy się na tym na zawsze, ale wtedy trasa idzie nie tak nowe narzędzia językowe. W rozdziale 8 zaczniemy pracować z tekstem na poważnie—z łańcuch znakówe i słowa, które dotąd pojawiały się jedynie jako podpisy na ekranie.