Rozdział 7 · Głębokie zanurzenie w Turtle

Mini-projekt – koło wewnątrz kwadratu

Najpierw wynik, planuj później, krok po kroku – naucz się świadomie budować kompozycję postaci, a nie metodą wyboru.

Co zbudujemy

okruzhnost_v_kvadrate.py
import turtle

screen = turtle.Screen()
screen.setup(width=340, height=340)
artist = turtle.Turtle()
artist.pensize(3)

razmer = 150
artist.pencolor("#5B24F9")
artist.penup()
artist.goto(-razmer / 2, -razmer / 2)
artist.pendown()
for _ in range(4):
    artist.forward(razmer)
    artist.left(90)

artist.pencolor("#DB2777")
artist.penup()
artist.goto(0, -razmer / 2)
artist.setheading(0)
artist.pendown()
artist.circle(razmer / 2)

screen.exitonclick()
Rezultat
Niebieski kwadrat o boku 150 pikseli i różowe koło dokładnie w niego wpisane
Gotowy wynik: kwadrat o boku 150 i wpisane w niego koło

Rozłóżmy na części

Zanim napiszesz kod, podzielmy rysunek na proste kształty: kwadrat z bokiem razmeroraz okrąg o promieniu razmer / 2, wyryte dokładnie na środku.

Plan współrzędnych

Aby okrąg idealnie pasował do kwadratu, musisz zacząć rysować go od punktu na Do połowy dolnej strony kwadratu, nie od narożnika i nie od środka:

Co rysowaćOd czego zacząćKurs na początek
Squarelewym dolnym rogu: (-razmer/2, -razmer/2)0° (prawa)
Obwódśrodku dolnej strony: (0, -razmer/2)0° (prawa)

Krok 1: Tylko kwadrat

kvadrat_plan.py
import turtle

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

razmer = 150
artist.penup()
artist.goto(-razmer / 2, -razmer / 2)
artist.pendown()
for _ in range(4):
    artist.forward(razmer)
    artist.left(90)

screen.exitonclick()
Rezultat
Jeden niebieski kwadrat o bokach 150 pikseli, bez innych kształtów
Krok 1 – Na początku tylko kwadrat, bez koła
kvadrat_plan_kod.py
razmer = 150
artist.penup()
artist.goto(-razmer / 2, -razmer / 2)
artist.pendown()
for _ in range(4):
    artist.forward(razmer)
    artist.left(90)

Krok 2: Dodaj koło z inskrypcją

okruzhnost_v_kvadrate_kod.py
artist.pencolor("#DB2777")
artist.penup()
artist.goto(0, -razmer / 2)
artist.setheading(0)
artist.pendown()
artist.circle(razmer / 2)
Skąd wzięła się ta kropka
Promień wpisanego okręgu — dokładnie połowa boku kwadratu. A środek okręgu znajduje się po lewej stronie żółwia (patrz rozdział „Geometria okręgu”) — więc aby środek pokrywał się ze środkiem kwadratu, żółw musi zacząć rysować DOKŁADNIE z punktu na dolnej krawędzi, w odległości radius od środka.

Challenge

koncentricheskie.py
import turtle

screen = turtle.Screen()
screen.setup(width=340, height=340)
artist = turtle.Turtle()
artist.pensize(3)

razmer = 150
artist.pencolor("#5B24F9")
artist.penup()
artist.goto(-razmer / 2, -razmer / 2)
artist.pendown()
for _ in range(4):
    artist.forward(razmer)
    artist.left(90)

colors = ["#DB2777", "#059669", "#D97706"]
for i, color in enumerate(colors):
    radius = razmer / 2 - i * 20
    artist.pencolor(color)
    artist.penup()
    artist.goto(0, -radius)
    artist.setheading(0)
    artist.pendown()
    artist.circle(radius)

screen.exitonclick()
Rezultat
Ten sam kwadrat z trzema wielokolorowymi koncentrycznymi kółkami w środku zamiast jednego
Zadanie-wywołanie: kilka okręgów jeden w drugim zamiast jednego
★★ Zadanie samodzielne
Własny zestaw pierścionków

Zmień kod, aby uzyskać własny zestaw koncentrycznych okręgów — inne promienie, inne kolory.

★★ Zadanie samodzielne
Krąg w Heksagonie

Zamień kwadrat na sześciokąt z rozdziału 6 i wpisz w niego okrąg o odpowiednim promieniu.

Challenge
Gruby kontur

Zwiększ pensize() kwadratu i koła – jak zmienia się postrzeganie figury?

Praktyka: Koło z inskrypcją
Moduł turtle otwiera natywne okno Python – uruchamiane lokalnie w VS Code, PyCharm lub Jupyter
Praktyka kursuje lokalnie
Otwórz praktykę →