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

Штампы и другие приёмы

stamp() — новая идея: отпечаток формы черепашки без движения и без линии.

Штамп — это не линия и не курсор

stamp() оставляет отпечаток текущей формы черепашки на экране, не рисуя линию — важное отличие от обычного движения. Полезно для множества одинаковых объектов на экране (звёзд неба, врагов в игре, отметок на графике).

shtampy.py
import turtle

screen = turtle.Screen()
screen.setup(width=460, height=200)
artist = turtle.Turtle()
artist.shape("circle")
artist.color("#5B24F9")
artist.penup()

for _ in range(6):
    artist.stamp()
    artist.forward(60)

screen.exitonclick()
Результат выполнения
Шесть одинаковых фиолетовых кружков-штампов в ряд, без соединяющей их линии
stamp() шесть раз подряд — оставляет отпечаток формы, не рисуя линию между ними
shtampy_kod.py
artist.shape("circle")
artist.color("#5B24F9")
artist.penup()

for _ in range(6):
    artist.stamp()
    artist.forward(60)
stamp() возвращает номер — запомните его
Каждый вызов stamp() возвращает целое число — идентификатор именно этого штампа. Без него нельзя удалить конкретный штамп позже.

Удаляем конкретные штампы

clearstamp.py
import turtle

screen = turtle.Screen()
screen.setup(width=460, height=200)
artist = turtle.Turtle()
artist.shape("circle")
artist.color("#5B24F9")
artist.penup()

stamp_ids = []
for _ in range(6):
    stamp_ids.append(artist.stamp())
    artist.forward(60)

artist.clearstamp(stamp_ids[0])
artist.clearstamp(stamp_ids[2])
artist.clearstamp(stamp_ids[4])

screen.exitonclick()
Результат выполнения
Три оставшихся фиолетовых кружка-штампа из первоначальных шести, промежутки между удалёнными штампами пустые
Те же шесть штампов, но три из них удалены через clearstamp(id)
clearstamp_kod.py
stamp_ids = []
for _ in range(6):
    stamp_ids.append(artist.stamp())
    artist.forward(60)

artist.clearstamp(stamp_ids[0])
artist.clearstamp(stamp_ids[2])
artist.clearstamp(stamp_ids[4])
КомандаЧто делает
clearstamp(id)удаляет ОДИН конкретный штамп по его номеру
clearstamps(n)удаляет первые n штампов (или последние n, если n отрицательное)
clearstamps()удаляет ВСЕ штампы черепашки

Скрыть и показать черепашку

skryt.py
artist.hideturtle()   # спрятать указатель черепашки (сама линия останется)
artist.showturtle()   # показать обратно
Зачем прятать черепашку?
В готовых рисунках указатель черепашки может визуально мешать. hideturtle() в конце программы делает финальный результат чище — мы используем это во всех мини-проектах главы.

Отмена последнего действия: undo()

undo.py
artist.forward(100)
artist.undo()   # отменяет последнее движение, как Ctrl+Z
Практика: включает штампы и другие приёмы
Тот же ноутбук, что и в разделе «Фигуры, окружности, точки» — он охватывает и эту тему
Практика выполняется локально
Открыть практику →