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
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
| Warstwa | Z czego się składa? | Co już jest znane |
|---|---|---|
| Pierścienie Celowe | 4 zacienione okręgi o malejącym promieniu | begin_fill()/circle()/end_fill() |
| Rozdroża | dwie linie przez środek | goto() z rozdziału 6 |
| Punkty trafień | współrzędne losowe | random + dot() z rozdziału 6 |
| Podpis | tekst w rogu | write() 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