Глава 7 · Глубокое погружение в Turtle

Несколько черепашек

Один экран может держать сколько угодно черепашек — и у каждой будет своё, полностью независимое состояние.

Мы создавали одну черепашку на весь скрипт. Но ничто не мешает создать сразу несколько — у каждой будет своё, полностью независимое состояние.

Один экран, разные черепашки

dve_cherepashki.py
import turtle

screen = turtle.Screen()
screen.setup(width=420, height=320)

alice = turtle.Turtle()
alice.color("#5B24F9")
alice.shape("turtle")
alice.penup()
alice.goto(-100, -80)
alice.pendown()
alice.setheading(70)
alice.forward(140)

bob = turtle.Turtle()
bob.color("#DB2777")
bob.shape("turtle")
bob.penup()
bob.goto(100, -80)
bob.pendown()
bob.setheading(110)
bob.forward(140)

screen.exitonclick()
Результат выполнения
Два отрезка разного цвета из разных точек — фиолетовый от Alice и розовый от Bob
alice и bob — два независимых объекта Turtle на одном экране
dve_cherepashki_kod.py
alice = turtle.Turtle()
alice.color("#5B24F9")
alice.penup(); alice.goto(-100, -80); alice.pendown()
alice.setheading(70)
alice.forward(140)

bob = turtle.Turtle()
bob.color("#DB2777")
bob.penup(); bob.goto(100, -80); bob.pendown()
bob.setheading(110)
bob.forward(140)
SCREEN
├── alice
│    ├ position
│    ├ heading
│    └ color

└── bob
     ├ position
     ├ heading
     └ color
Своё состояние — значит, независимое поведение
Изменение курса или цвета alice НИКАК не влияет на bob — они существуют на одном экране, но живут полностью раздельно. Это и есть суть того, что turtle.Turtle() — не просто функция, а фабрика самостоятельных объектов.
sravnenie_sostoyaniya.py
print(alice.position(), alice.heading())
print(bob.position(), bob.heading())
Название для этого — впереди
Позже, в главе про объектно-ориентированное программирование, мы дадим этому явлению формальное имя и разберём его гораздо глубже. Пока достаточно самого наблюдения: каждый Turtle() — отдельный, независимый объект со своим состоянием.
Практика: несколько черепашек
Модуль turtle открывает нативное окно Python — выполните локально в VS Code, PyCharm или Jupyter
Практика выполняется локально
Открыть практику →