Rozdział 6 · Rysujemy fajne rzeczy za pomocą Turtle

Mini-projekty

Cztery małe, ale naprawdę ukończone projekty — zbieramy wszystko, co zostało omówione w tym rozdziale, w gotowe obrazki.

Cztery małe, ale naprawdę ukończone projekty – każdy wykorzystujący tylko to, co robimy zostały już ukończone w tym rozdziale. Piąty projekt, mandala, czeka na samym końcu rozdziału — to jest finał.

Projekt A: Dom Kolorowych

Trzy oddzielne postacie (ściany, dach, drzwi), każda z własnym wypełnieniem, złożone w jedną Kompozycja z wykorzystaniem penup()/goto() pomiędzy:

cvetnoj_dom.py
import turtle

screen = turtle.Screen()
screen.setup(width=420, height=420)
artist = turtle.Turtle()
artist.pensize(3)
artist.speed(0)

# ściany
artist.penup(); artist.goto(-80, -80); artist.pendown()
artist.pencolor("#5B24F9"); artist.fillcolor("#EDE9FE")
artist.begin_fill()
for _ in range(4):
    artist.forward(160)
    artist.left(90)
artist.end_fill()

# dach
artist.penup(); artist.goto(-100, 80); artist.pendown()
artist.pencolor("#B91C1C"); artist.fillcolor("#FCA5A5")
artist.begin_fill()
artist.goto(0, 160)
artist.goto(100, 80)
artist.goto(-100, 80)
artist.end_fill()

# drzwi
Model
artist.penup(); artist.goto(-20, -80); artist.pendown()
artist.pencolor("#78350F"); artist.fillcolor("#92400E")
artist.begin_fill()
for _ in range(2):
    artist.forward(40)
    artist.left(90)
    artist.forward(70)
    artist.left(90)
artist.end_fill()

screen.exitonclick()
Rezultat
Dom o fioletowych ścianach, czerwonym trójkątnym dachu i brązowych, prostokątnych drzwiach
Projekt A: Kolorowy dom — ściany, dach i drzwi, trzy oddzielne wypełnienia
Podstawowa praktyka
Window

Dodaj kwadratowe okno w ścianie domu – kolejny mały begin_fill()/end_fill() blok.

Cel B: Projektu

Cztery okręgi jeden w drugim, o malejącym promieniu i naprzemiennych kolorach:

mishen.py
import turtle

screen = turtle.Screen()
screen.setup(width=380, height=380)
artist = turtle.Turtle()
artist.speed(0)
artist.hideturtle()

rings = [(90, "#DC2626"), (65, "#FAFAFC"), (40, "#DC2626"), (15, "#FAFAFC")]
for radius, color in rings:
    artist.penup()
    artist.goto(0, -radius)
    artist.pendown()
    artist.fillcolor(color)
    artist.pencolor("#0D0230")
    artist.begin_fill()
    artist.circle(radius)
    artist.end_fill()

screen.exitonclick()
Rezultat
Okrągły cel z naprzemiennie czerwonymi i białymi koncentrycznymi pierścieniami
Project B: Target – cztery koncentryczne koła z naprzemiennymi wypełnieniami
mishen_kod.py
rings = [(90, "#DC2626"), (65, "#FAFAFC"), (40, "#DC2626"), (15, "#FAFAFC")]
for radius, color in rings:
    artist.penup()
    artist.goto(0, -radius)
    artist.pendown()
    artist.fillcolor(color)
    artist.begin_fill()
    artist.circle(radius)
    artist.end_fill()
wyprzedzanie faktów
Pętla użyta tutaj for listę par (promień, kolor) — później szczegółowo rozłożymy listy i pętle. Na razie wystarczy zobaczyć ideę: powtarza się ta sama sekwencja działań dla każdej pary wartości.
★★ Zadanie samodzielne
Niestandardowe kolory

Zamień kolory pierścionków na własne, takie jak odcienie niebieskiego i żółtego.

Projekt C: Gwiaździstym Niebie

Ciemne tło, wiele punktów o losowym rozmiarze w losowych miejscach — ten sam zabieg, co w rozdziale o losowych punktach, ale w innym nastroju:

zvezdnoe_nebo.py
import turtle
import random

random.seed(11)
screen = turtle.Screen()
screen.setup(width=420, height=340)
screen.bgcolor("#0D0230")
artist = turtle.Turtle()
artist.hideturtle()
artist.penup()

for _ in range(35):
    x = random.randint(-200, 200)
    y = random.randint(-150, 150)
    size = random.choice([6, 8, 10])
    artist.goto(x, y)
    artist.dot(size, "#FDE68A")

screen.exitonclick()
Rezultat
Ciemnofioletowe niebo z rozsianymi po nim żółtymi punktami-gwiazdami różnej wielkości
Project C: Starry Sky – ciemne tło i losowo rozmieszczone gwiazdy
★★ Zadanie samodzielne
Moon

Dodaj jedną dużą białą kropkę w rogu ekranu — „księżyc”, narysowany wcześniej, przed przypadkowymi gwiazdami.

Projekt D: gwiazda geometryczna

Pięcioramienna gwiazda jest rysowana jedną linią, bez ani jednego oderwania pióra – sekret polega na tym, że Obrót o 144° (zamiast 72°) powoduje przecięcie się linii:

geometricheskaya_zvezda.py
import turtle

screen = turtle.Screen()
screen.setup(width=380, height=380)
artist = turtle.Turtle()
artist.pensize(3)
artist.pencolor("#5B24F9")
artist.speed(0)

artist.forward(150)
artist.right(144)
artist.forward(150)
artist.right(144)
artist.forward(150)
artist.right(144)
artist.forward(150)
artist.right(144)
artist.forward(150)
artist.right(144)

screen.exitonclick()
Rezultat
Pięcioramienna gwiazda narysowana jedną ciągłą fioletową linią
Projekt D: Gwiazda geometryczna — pięć odcinków po 150 pikseli, obrót o 144° za każdym razem
geometricheskaya_zvezda_kod.py
for _ in range(5):
    artist.forward(150)
    artist.right(144)
Skąd wzięła się liczba 144
144° — to 2 × 360 / 5: Aby gwiazda prawidłowo się „złożyła”
Challenge
Gwiazda Siedmiu Kończy

Zamień 5 na 7 i 144° pod odpowiednim kątem (podpowiedź: ta sama zasada to obracanie się dwa razy w siedmiu krokach). Co się stanie?

Praktyka: mini-projekty
Moduł turtle otwiera natywne okno Python – uruchamiane lokalnie w VS Code, PyCharm lub Jupyter
Praktyka kursuje lokalnie
Otwórz praktykę →