Turtle
Turtle
Черепашья графика
Графический интерфейс в языке программирования Python может быть реализован различными способами — от простой черепашьей графики до полноценных 2D-приложений и сложных GUI-систем. Сначала поговорим о простой графике.
В жизни каждого специалиста возникают ситуации-конфузы. Так вот, после многих лет разработки на языках C#, Java, JavaScript, Python я встречаю некую "черепашью графику" в Python, причём в курсе программирования для детей. У меня конфуз - что за черепашья графика? Почему графика? Что имеется в виду? GUI? 2D/3D? Вектор/растр?
Потом ещё веселее - объекты в "черепашьей графике". Объектно-ориентированное программирование? Да? Или нет?
Оказалось, что есть такое необычное изобретение в истории обучения программированию. Профессионалы учатся немного иначе, тогда как новичков и детей учат совсем простым вещам, о которых мы даже не задумываемся.
Так вот, черепашья графика (Turtle Graphics) - это визуальный способ программирования, при котором мы управляем виртуальной черепашкой, которая ползёт по экрану и рисует линии. Она как художник с карандашом: куда она ползёт — там остаётся след. Это простая 2D-графика, где учатся программировать через наглядные действия вроде "иди вперёд", "поверни налево", "подними карандаш" и т.д.
Play ITЗагрузка интерактивного демо…
Название происходит от языка Logo, который был разработан в 1960-х годах для обучения детей программированию. В нём была физическая игрушечная черепаха на полу, которая двигалась по командам и рисовала мелом. Потом эта идея перешла в виртуальную черепашку на экране.
В российских школах ту же модель "вперёд и поворот" часто проходят в среде Кумир (исполнитель Черепаха) — команды вперед, влево, опустить хвост на русском языке. Готовые алгоритмы с разбором — Lab / 1115.
В Python модуль turtle — это современная реализация этой идеи. Он встроен в стандартную библиотеку, то есть не нужно ничего устанавливать — просто пишем:
import turtle
Разбор:
import turtleподключает модуль черепашьей графики из стандартной библиотеки.- После импорта доступны классы
ScreenиTurtle. - Через них создают окно, объект-черепаху и команды рисования.
И начинаем рисовать.
Базовая структура скрипта включает импорт, создание объектов, выполнение команд и завершение работы.
Код ITЗагрузка примера кода…
Разбор:
turtle.Screen()создаёт графическое окно и холст.turtle.Turtle()создаёт исполнитель, которым управляет программа.pen.forward(100)двигает черепаху на 100 пикселей вперёд.- При опущенном пере движение оставляет линию на холсте.
turtle.done()запускает цикл событий и удерживает окно открытым.
Модуль turtle входит в стандартную библиотеку Python и предоставляет простую, но мощную систему для работы с двумерной графикой. Основная идея заключается в концепции "черепахи" — абстрактного исполнителя, перемещающегося по координатной плоскости и оставляющего за собой след. Через последовательность команд можно управлять направлением движения, положением, цветом линии и другими параметрами.
Задумка следующая - на экране появляется маленькая стрелочка (или черепашка, если включить соответствующую форму). У неё есть:
- Позиция (x, y) — где она находится.
- Направление — куда смотрит (например, вверх, вправо).
- Ручка (pen) — опущена (рисует) или поднята (не рисует).
- Цвет линии, цвет заливки, толщина линии, скорость движения.
Задача как раз в управлении "черепашкой" при помощи команд.
Чтобы окно не закрывалось сразу, нужно добавлять в конец кода:
turtle.done()
Функция turtle.done() запускает главный цикл обработки событий. Окно остаётся открытым до момента закрытия пользователем. Отсутствие этого вызова приводит к мгновенному закрытию окна после выполнения скрипта.
Команды там следующие:
- forward(100) - Черепашка идёт вперёд на 100 пикселей;
- backward(50) - Назад на 50 пикселей;
- left(90) - Поворачивает налево на 90 градусов;
- right(45) - Направо на 45°;
- penup() - Поднимает ручку — больше не рисует;
- pendown() - Опускает ручку — снова рисует;
- goto(x, y) - Мгновенно перемещается в точку (x, y);
- color("red") - Устанавливает цвет ручки и заливки;
- pencolor("blue") - Только цвет линии;
- fillcolor("yellow") - Цвет заливки фигур;
- begin_fill() / end_fill() - Начинает и заканчивает заливку области;
- speed(5) - Скорость от 1 (медленно) до 10 (быстро), 0 — мгновенно;
- shape("turtle") - Меняет внешний вид — "arrow", "circle", "turtle" и др.
Пример: рисование квадрата.

Это как цикл for в C#, только вместо изменения переменной мы меняем состояние объекта.
Хотя это не GUI с кнопками, это графика в математическом смысле — работа с координатной плоскостью, углами, фигурами, цветами, траекториями. Экран является координатной плоскостью, где центр (0,0) - середина экрана, X вправо, Y вверх, как в базовой математике.
Так рисуют геометрические фигуры, используя циклы и функции, можно даже фракталы, узоры, анимации. Готовая подборка скриптов с иллюстрациями и встроенным симулятором — в Примеры фигур Turtle на Python. Те же идеи (квадрат, цветок, снежинка) в браузере на JavaScript — Примеры фигур на Processing/p5.js и теория Canvas 2D. Векторная разметка в HTML (<svg>) без Python и без Canvas — SVG — рисунки кодом. Когда нужны интерактивные мини-игры (окно, клавиши, счёт), переходите к Pygame — мини-игры на Python и теории в Разработка игр на Python. Для подготовки к ЕГЭ и олимпиадам по информатике — Алгоритмы на Python — ЕГЭ и олимпиадка. Для графиков функций (sin, парабола, столбцы по данным) — Matplotlib — графики. Для форм и кнопок без игровой логики — Tkinter — окна и виджеты.
Здесь каждая черепашка — объект класса Turtle.
t1 = turtle.Turtle()
t2 = turtle.Turtle()
t1.color("red")
t2.color("blue")
t1.goto(-100, 0)
t2.goto(100, 0)
Технически, модуль turtle содержит в себе класс Turtle и при помощи конструктора Turtle() создаётся черепашка как объект, имеющий свойства и поведение. Концепция как раз в том, чтобы использовать методы черепашки для управления и рисования фигур.
t1 и t2 образуют две независимые "кисти", которые могут двигаться параллельно, рисовать разными цветами, иметь разную скорость и выполнять разные программы. Это отличный способ показать детям (и напомнить взрослым), что объекты — это экземпляры класса с собственным состоянием и поведением.
Чтобы не писать 360 строк для круга, можно использовать цикл, и получить почти круг (технически это 360-угольник). Можно делать розетки, спирали, снежинки Коха — всё через повторение простых действий.
for _ in range(360):
t.forward(1)
t.left(1)
Разбор:
range(360)задаёт 360 повторений цикла.- На каждом шаге выполняется короткое движение
forward(1). - Затем идёт поворот
left(1)на один градус. - Суммарный поворот на 360 градусов замыкает траекторию.
- Визуально получается окружность или близкий к ней 360-угольник.
Пример - две черепахи навстречу.
Код ITЗагрузка примера кода…
Разбор:
- Создаются два независимых объекта
Turtle:t1иt2. penup()иgoto(...)размещают их в стартовых точках без рисования.setheading(180)разворачивает вторую черепаху влево.- В цикле обе двигаются вперёд на одинаковый шаг.
- Пример показывает, что каждый объект хранит собственное состояние.
Так можно наглядно увидеть, что каждый объект живёт своей жизнью.
В объектно-ориентированной парадигме turtle представляет собой класс Turtle, экземпляры которого обладают состоянием (позиция, угол поворота, цвет пера, видимость) и поведением (методы перемещения, рисования, изменения стиля). Каждая черепаха работает в рамках общего холста — экземпляра класса Screen, который управляет окном вывода, фоном и событиями.
Черепаха может быть склонирована, переопределена или инкапсулирована в пользовательские классы, что позволяет строить более сложные графические системы.
Система координат в turtle — прямоугольная, с началом в центре окна. Положительное направление оси X — вправо, оси Y — вверх. Размеры окна задаются явно через метод setup(width, height) класса Screen. Координаты могут быть абсолютными (например, goto(x, y)) или относительными (например, forward(distance)).
Ориентация угла измеряется в градусах против часовой стрелки от положительного направления оси X. Поворот осуществляется командами left(angle) и right(angle).
Модуль поддерживает широкий спектр способов задания цветов:
- Строковые имена — "red", "blue", "green" и др.
- RGB-значения в формате кортежа (r, g, b), где каждое значение — число от 0 до 1 (или от 0 до 255 при активации режима colormode(255)).
- HEX-коды: "#FF5733".
Для заливки фигур используется комбинация методов begin_fill() и end_fill(), которые фиксируют контур и применяют текущий цвет заполнения.
Например, можно нарисовать сердечко:
Код ITЗагрузка примера кода…
Разбор:
- Код комбинирует прямые линии и дуги
circle(radius, extent)для контура сердца. - Пара
begin_fill()иend_fill()включает заливку внутренней области фигуры. speed(0)ставит максимально быструю отрисовку.penup()иhideturtle()скрывают служебные движения и курсор.turtle.done()фиксирует результат в открытом окне.
Анимация в turtle реализуется через последовательное изменение состояния черепахи с контролем скорости выполнения. Метод speed(n) позволяет установить скорость от 0 (мгновенно) до 10 (медленно). Для плавной анимации используются циклы с задержками, хотя сам модуль не является реалтайм-движком.
Обработка событий (например, нажатия клавиш, кликов мыши) осуществляется через регистрацию обработчиков:
def move_forward():
t.forward(10)
screen.onkey(move_forward, "Up")
screen.listen()
Разбор:
onkey(move_forward, "Up")связывает обработчик с клавишей стрелки вверх.screen.listen()включает обработку клавиатурных событий.- При нажатии
Upвызывается функцияmove_forward. - Внутри обработчика черепаха двигается на 10 пикселей.
Здесь важно понимать, что turtle использует внутренний event loop, запускаемый вызовом screen.mainloop() — без него события не будут обрабатываться.
Поэтому всегда нужно добавлять в код следующее:
screen.listen() # ← ВАЖНО! Без этого не будет работать
Разбор:
screen.listen()активирует фокус окна на приём клавиатуры.- Без этого вызова обработчики
onkeyиonkeypressне срабатывают. - Команду обычно вызывают один раз после регистрации клавиш.
К примеру, так можно реализовать управление:
Код ITЗагрузка примера кода…
Разбор:
- Функции
go_up/go_down/go_left/go_rightзадают направление черезsetheading(...). - После задания угла каждая функция выполняет шаг
forward(20). screen.onkey(...)связывает обработчики со стрелками клавиатуры.screen.onkey(screen.bye, "q")добавляет горячую клавишу выхода.- Получается минимальная интерактивная схема управления объектом.
turtle — однопоточная система; длительные операции блокируют интерфейс, и этот модуль не предназначен для производительных графических задач. Использует Tkinter в качестве бэкенда, что делает его зависимым от наличия GUI-среды. Подходит для обучения, прототипирования и демонстрации алгоритмов, но не для промышленных приложений.
Класс Screen
Объект Screen управляет окном приложения. Через него задаются размеры, цвет фона, заголовок и обработчики событий.
| Метод | Параметры | Описание |
|---|---|---|
turtle.Screen() | — | Создаёт объект главного окна |
setup(width, height) | числа | Устанавливает размеры окна в пикселях |
title(string) | строка | Задаёт заголовок окна |
bgcolor(color) | цвет | Устанавливает цвет фона |
bgpic(picname) | путь к файлу | Устанавливает изображение фона |
mode(mode) | "standard", "logo", "parent" | Выбирает режим координат и углов |
tracer(n) | число | Управляет анимацией отрисовки (0 выключает) |
update() | — | Обновляет экран при выключенном трассировщике |
exitonclick() | — | Закрывает окно по клику |
bye() | — | Закрывает окно программно |
Экран регистрирует нажатия клавиш и клики мыши. Обработчики событий представляют собой функции, вызываемые при наступлении события.
def move():
pen.forward(50)
screen.onkey(move, "space")
screen.listen()
Разбор:
move()содержит прикладное действие: шаг пера вперёд.onkey(move, "space")вешает этот обработчик на пробел.- Логика запускается только при событии от пользователя.
- Это классическая событийная модель управления интерфейсом.
Вызов screen.listen() активирует прослушивание событий клавиатуры. Без этого вызова обработчики не срабатывают.
Класс Turtle
Объект Turtle представляет собой исполнителя. Каждый экземпляр класса обладает собственным состоянием — координатами, углом поворота, цветом пера, видимостью.
Движение и положение:
| Метод | Параметры | Описание |
|---|---|---|
forward(distance) | число | Движение вперёд на указанное расстояние |
backward(distance) | число | Движение назад |
right(angle) | число | Поворот направо на угол в градусах |
left(angle) | число | Поворот налево на угол в градусах |
goto(x, y) | числа | Перемещение в точку с координатами (x, y) |
setx(x) | число | Установка координаты X |
sety(y) | число | Установка координаты Y |
setheading(angle) | число | Установка абсолютного угла направления |
home() | — | Возврат в центр (0, 0) и направление вверх |
circle(radius) | число | Рисование круга заданного радиуса |
dot(size, color) | число, цвет | Рисование точки |
stamp() | — | Оставляет отпечаток черепахи на холсте |
clearstamp(id) | число | Удаляет отпечаток по идентификатору |
position() | — | Возвращает текущие координаты (x, y) |
heading() | — | Возвращает текущий угол поворота |
distance(obj) | объект | Возвращает расстояние до другого объекта |
Управление пером:
| Метод | Параметры | Описание |
|---|---|---|
pendown() | — | Опускает перо (рисует при движении) |
penup() | — | Поднимает перо (не рисует при движении) |
pensize(width) | число | Устанавливает толщину линии |
pencolor(color) | цвет | Устанавливает цвет линии |
fillcolor(color) | цвет | Устанавливает цвет заливки |
color(color) | цвет | Устанавливает цвет пера и заливки |
begin_fill() | — | Начинает запись контура для заливки |
end_fill() | — | Завершает заливку замкнутого контура |
filling() | — | Возвращает статус заливки (True/False) |
reset() | — | Сбрасывает состояние черепахи и очищает экран |
clear() | — | Очищает рисунки, сохраняет положение |
undo() | — | Отменяет последнее действие |
speed(value) | 0-10 | Устанавливает скорость (0 — мгновенно) |
hideturtle() | — | Скрывает курсор черепахи |
showturtle() | — | Показывает курсор черепахи |
isvisible() | — | Возвращает видимость курсора |
Координатная система
По умолчанию используется декартова система координат. Начало отсчёта (0, 0) находится в центре окна. Ось X направлена вправо, ось Y направлена вверх. Углы измеряются в градусах. Нулевой угол направлен вправо (восток), отсчёт идёт против часовой стрелки.
Режим standard устанавливает направление 0 градусов вправо.
Режим logo устанавливает направление 0 градусов вверх.
Координаты принимают целые и дробные значения. Метод goto() перемещает объект в указанную точку. Методы setx() и sety() меняют одну из координат.
Обработка ввода и событий
Система событий реагирует на действия пользователя. Регистрация обработчиков происходит через объект Screen.
Метод onkey(fun, key) связывает функцию с клавишей. Срабатывание происходит при отпускании клавиши. Метод onkeypress(fun, key) срабатывает при нажатии и удержании (требует вызова listen()).
Регистр символов имеет значение. Клавиша "A" и клавиша "a" представляют собой разные события. Для букв нижнего регистра используется строчное обозначение. Для специальных клавиш используются строковые константы.
| Клавиша | Обозначение в коде |
|---|---|
| Пробел | "space" |
| Вверх | "Up" |
| Вниз | "Down" |
| Влево | "Left" |
| Вправо | "Right" |
| Enter | "Return" |
| Esc | "Escape" |
| Tab | "Tab" |
| Backspace | "BackSpace" |
| Delete | "Delete" |
| Home | "Home" |
| End | "End" |
| Page Up | "Page_Up" |
| Page Down | "Page_Down" |
| F1 - F12 | "F1" ... "F12" |
| Буквы | "a" ... "z", "A" ... "Z" |
| Цифры | "0" ... "9" |
| Плюс | "plus" |
| Минус | "minus" |
| Точка | "period" |
Пример регистрации клавиш:
def move_up():
pen.setheading(90)
pen.forward(20)
screen.onkey(move_up, "Up")
screen.onkey(move_up, "w")
screen.listen()
Разбор:
- Один обработчик
move_upназначается на клавишиUpиw. - Это позволяет поддерживать сразу несколько схем управления.
- Основная логика не дублируется в отдельных функциях.
- Подход упрощает поддержку и расширение кода.
Обработка мыши позволяет реагировать на клики в любом месте экрана или на объектах.
| Метод | Описание |
|---|---|
onclick(fun) | Вызывает функцию при клике на черепаху |
onrelease(fun) | Вызывает функцию при отпускании кнопки на черепахе |
ondrag(fun) | Вызывает функцию при перетаскивании черепахи |
onscreenclick(fun) | Вызывает функцию при клике по экрану |
Функция обработчика клика получает координаты события x и y.
def go_to(x, y):
pen.goto(x, y)
screen.onscreenclick(go_to)
Разбор:
onscreenclick(go_to)подписывает функцию на клики по холсту.- В обработчик автоматически передаются координаты
xиy. pen.goto(x, y)переносит черепаху в точку клика.- Визуально курсор начинает следовать за действиями мыши.
Графика и внешний вид
Система поддерживает несколько форматов задания цвета.
- Строковые имена:
"red","green","blue","yellow","black","white","purple","orange"и другие стандартные названия. - RGB кортеж:
(r, g, b). Значения находятся в диапазоне от 0 до 1 по умолчанию. - RGB 255: Требуется вызов
screen.colormode(255). Значения находятся в диапазоне от 0 до 255. - HEX: Строки вида
"#FF5733".
Пример настройки цвета:
screen.colormode(255)
pen.pencolor((255, 0, 0)) # Красный
pen.fillcolor("#00FF00") # Зелёный
Разбор:
screen.colormode(255)переключает диапазон RGB на формат 0-255.- После этого
pencolor(...)иfillcolor(...)принимают RGB-кортежи. - Дополнительно поддерживаются HEX-значения вида
#RRGGBB. - Такой режим удобен при переносе палитр из дизайн-макетов.
Курсор черепахи имеет форму. Доступны встроенные формы и пользовательские изображения.
| Форма | Обозначение |
|---|---|
| Стрелка | "arrow" |
| Черепаха | "turtle" |
| Круг | "circle" |
| Квадрат | "square" |
| Треугольник | "triangle" |
| Классическая | "classic" |
Метод shape(name) меняет внешний вид курсора.
Использование собственных изображений требует регистрации формы в объекте экрана. Файл изображения должен находиться в рабочей директории или путь должен быть указан полностью. Поддерживаются форматы GIF, PNG (зависит от версии Tkinter).
screen.register_shape("ship.gif")
pen.shape("ship.gif")
Разбор:
register_shape("ship.gif")регистрирует пользовательскую форму в окне.shape("ship.gif")применяет эту форму к текущей черепахе.- После этого стандартный курсор заменяется на изображение-спрайт.
- Приём полезен для учебных мини-игр и визуальных демонстраций.
Изображение становится доступным для всех черепах после регистрации. Центр изображения совпадает с координатами черепахи.
Модуль позволяет выводить текст на холст через метод write().
| Параметр | Описание |
|---|---|
arg | Текст для вывода |
move | Boolean. Перемещает ли черепаху после вывода |
align | Выравнивание: "left", "center", "right" |
font | Кортеж (шрифт, размер, стиль) |
Пример вывода текста:
pen.write("Старт", align="center", font=("Arial", 16, "bold"))
Разбор:
write(...)выводит текст прямо на холст в текущей позиции пера.align="center"задаёт выравнивание подписи по центру.- Параметр
font=(...)определяет шрифт, размер и стиль. - Метод подходит для подписей осей, статусов и заголовков.
Стили шрифта — "normal", "bold", "italic", "bold italic".
Логика и циклы
Использование циклов позволяет создавать повторяющиеся узоры и фигуры. Конструкция for i in range() задаёт количество повторений.
Сумма внешних углов любого замкнутого многоугольника равна 360 градусам. Угол поворота для правильного многоугольника вычисляется как 360, делённое на количество сторон.
sides = 6
angle = 360 / sides
for i in range(sides):
pen.forward(100)
pen.right(angle)
Разбор:
sides = 6задаёт количество сторон будущей фигуры.angle = 360 / sidesвычисляет угол поворота между сторонами.- В цикле рисуется сторона фиксированной длины.
- После каждой стороны выполняется поворот на рассчитанный угол.
- В результате получается правильный шестиугольник.
Изменение расстояния или угла внутри цикла создаёт спираль.
for i in range(100):
pen.forward(i * 2)
pen.right(90)
Разбор:
forward(i * 2)увеличивает длину шага с каждой итерацией.right(90)поворачивает направление на прямой угол.- Повторение этих двух действий создаёт закручивающуюся траекторию.
- Фигура растёт наружу и визуально даёт квадратную спираль.
Модуль random генерирует случайные числа для вариативности рисунка.
import random
colors = ["red", "blue", "green", "yellow"]
for i in range(50):
pen.pencolor(random.choice(colors))
pen.forward(random.randint(50, 100))
pen.right(random.randint(0, 360))
Разбор:
random.choice(colors)выбирает случайный цвет пера на каждом шаге.random.randint(50, 100)задаёт случайную длину отрезка.random.randint(0, 360)задаёт случайный угол поворота.- Комбинация случайных параметров создаёт новый узор при каждом запуске.
Скрипт реализует движение объекта стрелками клавиатуры.
Код ITЗагрузка примера кода…
Разбор:
- Скрипт создаёт окно и объект
playerдля управления. - Функции движения задают направление через
setheading(...). - После смены направления выполняется шаг
forward(20). onkey(...)привязывает каждую функцию к соответствующей стрелке.screen.listen()включает обработку клавиатуры.turtle.done()запускает и удерживает графический цикл.
Пример создания закрашенного круга.
import turtle
screen = turtle.Screen()
pen = turtle.Turtle()
pen.fillcolor("blue")
pen.begin_fill()
pen.circle(50)
pen.end_fill()
turtle.done()
Разбор:
fillcolor("blue")задаёт цвет заливки будущей фигуры.begin_fill()включает запись контура для заполнения.circle(50)рисует окружность радиусом 50 пикселей.end_fill()замыкает контур и закрашивает внутреннюю область.
Программа рисует линии вслед за курсором мыши при нажатой кнопке.
Код ITЗагрузка примера кода…
Разбор:
ondrag(drag)регистрирует обработчик движения при зажатой кнопке мыши.- Внутри функции
dragвызываетсяgoto(x, y)для следования за курсором. ondrag(None)временно отключает событие перед перемещением.- Повторная подписка
ondrag(drag)предотвращает рекурсивный зацикленный вызов.
Метод ontimer(fun, delay) запускает функцию через указанный интервал времени в миллисекундах. Это создаёт эффект анимации без блокировки цикла.
Код ITЗагрузка примера кода…
Разбор:
rotate()обновляет состояние рисунка на каждом кадре.clear()очищает предыдущую отрисовку.setheading(angle)меняет направление,forward(50)рисует новый луч.stamp()оставляет отпечаток текущего положения черепахи.ontimer(rotate, 100)планирует следующий вызов через 100 мс.- Такой цикл создаёт анимацию без блокирующего
sleep.
Проверка расстояния между объектами позволяет реализовать простую коллизию.
Код ITЗагрузка примера кода…
Разбор:
- Клавиша
spaceзапускает функциюmove. - Игрок смещается вперёд через
player.forward(20). player.distance(target)считает расстояние до цели.- При расстоянии меньше 20 срабатывает условие "столкновения".
- Цель переносится в новую случайную точку через
target.goto(...).
Отрисовка каждого кадра анимации может замедлять работу программы. Метод tracer(0) отключает автоматическое обновление экрана. Обновление происходит только при вызове screen.update().
screen.tracer(0)
for i in range(100):
pen.forward(1)
# Экран не обновляется здесь
screen.update() # Обновление один раз в конце
Разбор:
tracer(0)отключает автоматическое обновление экрана после каждой команды.- Цикл выполняет серию операций рисования без промежуточного рендера.
screen.update()вручную показывает накопленный результат.- Такой режим уменьшает мерцание и ускоряет сложную отрисовку.
Этот подход устраняет мерцание и повышает производительность при большом количестве объектов.
Работа с несколькими черепахами
Создание нескольких экземпляров класса Turtle позволяет управлять независимыми объектами.
t1 = turtle.Turtle()
t2 = turtle.Turtle()
t1.color("red")
t2.color("blue")
t1.goto(-50, 0)
t2.goto(50, 0)
t1.circle(30)
t2.circle(30)
Разбор:
t1иt2— два независимых экземпляра классаTurtle.- Для каждого задаются собственные цвет и позиция.
- Вызов
circle(30)выполняется отдельно для каждого объекта. - На холсте появляются две фигуры, управляемые разными состояниями.
Каждая черепаха хранит своё состояние независимо. Команды, отправленные одному объекту, не влияют на другие.
Сохранение и экспорт
Модуль turtle не имеет встроенной функции сохранения холста в файл изображения напрямую через стандартный API. Для сохранения результата используется скриншот операционной системы или сторонние библиотеки захвата экрана. Состояние программы (позиции, переменные) сохраняется через стандартные средства Python (модуль pickle или запись в файл).
Ограничения среды
Библиотека зависит от Tkinter. Запуск скрипта требует наличия графической среды. На серверах без графического интерфейса (headless) выполнение кода вызовет ошибку. Производительность ограничена возможностями интерпретатора Python и скоростью отрисовки Tkinter. Обработка большого количества объектов (более 100-200 активных спрайтов) приводит к снижению частоты кадров. Для сложных игр рекомендуется использовать специализированные движки.
См. также
- Справочник по модулю Turtle — методы, параметры, типовые паттерны
- Примеры фигур Turtle на Python — галерея готовых скриптов: от квадрата и треугольника до узоров и фракталов
- Примеры фигур на Processing/p5.js — те же фигуры в браузере (JavaScript, без установки Python)
- SVG — рисунки кодом — векторные фигуры в HTML: иконки, масштаб без потерь
- Tkinter — окна и виджеты — формы, кнопки, меню (Turtle использует Tkinter как бэкенд)
- Pygame — мини-игры на Python — змейка, Pong, Breakout с разбором кода
- Matplotlib — графики — графики функций и диаграммы по числам (sin, столбцы, scatter)
- Разработка игр на Python — теория игрового цикла