Rozdział 7 · Głębokie zanurzenie w Turtle

Mini-projekt – koordynować cel

Naprawdę mała infografika – cel, osiery, losowe kropki i podpis złożony ze znanych narzędzi.

Co zbudujemy

koordinatnaya_mishen.py
import turtle
import random

random.seed(4)
screen = turtle.Screen()
screen.setup(width=420, height=420)
artist = turtle.Turtle()
artist.speed(0)
artist.hideturtle()

rings = [(140, "#DC2626"), (100, "#FAFAFC"), (60, "#DC2626"), (20, "#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()

artist.penup()
artist.goto(-160, 0)
artist.pendown()
artist.goto(160, 0)
artist.penup()
artist.goto(0, -160)
artist.pendown()
artist.goto(0, 160)

artist.penup()
for _ in range(6):
    x = random.randint(-120, 120)
    y = random.randint(-120, 120)
    artist.goto(x, y)
    artist.dot(10, "#059669")

artist.goto(-190, 170)
artist.write(„Skoordynuj cel”, font=("Arial", 13, "bold"))

screen.exitonclick()
Rezultat
Cel z czerwono-białych koncentrycznych pierścieni z czarnym celownikiem, sześcioma zielonymi punktami życia i tytułem „Coordinate Target”
Gotowy wynik: koncentracyjna tarcza, krzyż osi, losowe trafienia i podpis

Pełnoprawna, mała infografika to nie tylko cel, ale cel z osiami współrzędnych, punktami „hits” goto(), losowe punkty z rozdziału 6 i Podpis przez write().

Rozłóżmy na warstwy

WarstwaZ czego się składa?Co już jest znane
Pierścienie Celowe4 zacienione okręgi o malejącym promieniubegin_fill()/circle()/end_fill()
Rozdrożadwie linie przez środekgoto() z rozdziału 6
Punkty trafieńwspółrzędne losowerandom + dot() z rozdziału 6
Podpistekst w roguwrite() z tego rozdziału

Cały kod

koordinatnaya_mishen_kod.py
import random

random.seed(4)   # stały seed — punkty są takie same przy każdym uruchomieniu

# pierścienie celu
rings = [(140, "#DC2626"), (100, "#FAFAFC"), (60, "#DC2626"), (20, "#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()

# Celownik na osi
artist.penup(); artist.goto(-160, 0); artist.pendown(); artist.goto(160, 0)
artist.penup(); artist.goto(0, -160); artist.pendown(); artist.goto(0, 160)

# losowe punkty życia
artist.penup()
for _ in range(6):
    x = random.randint(-120, 120)
    y = random.randint(-120, 120)
    artist.goto(x, y)
    artist.dot(10, "#059669")

# podpis
artist.goto(-190, 170)
artist.write(„Skoordynuj cel”, font=("Arial", 13, "bold"))
Dlaczego random.seed(4)
Jak w rozdziale 6, ustalony seed sprawia, że obraz jest powtarzalny — przy każdym uruchomieniu punkty będą dokładnie w tych samych miejscach. Usuń ten wiersz, aby otrzymać nowy zestaw punktów przy każdym uruchomieniu.
★★ Zadanie samodzielne
Oznaczanie współrzędnych

Obok każdego punktu życia dodaj write() z jego współrzędnymi.

Challenge
Bullseye

Policz (wpisz do konsoli), ile losowych punktów wpadło do centralnego czerwonego pierścienia (promień < 60) – będziesz potrzebować wzoru na odległość z rozdziału 5.

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