HTML Diff
0 added 0 removed
Original 2026-01-01
Modified 2026-02-21
1 <p><a>#статьи</a></p>
1 <p><a>#статьи</a></p>
2 <ul><li>20 июн 2025</li>
2 <ul><li>20 июн 2025</li>
3 <li>0</li>
3 <li>0</li>
4 </ul><p>Учимся программировать вместе с виртуальной черепахой.</p>
4 </ul><p>Учимся программировать вместе с виртуальной черепахой.</p>
5 <p>Иллюстрация: Оля Ежак для Skillbox Media</p>
5 <p>Иллюстрация: Оля Ежак для Skillbox Media</p>
6 <p>Программист, консультант, специалист по документированию. Легко и доступно рассказывает о сложных вещах в программировании и дизайне.</p>
6 <p>Программист, консультант, специалист по документированию. Легко и доступно рассказывает о сложных вещах в программировании и дизайне.</p>
7 <p>Модуль turtle - это библиотека Python, которая помогает новичкам изучать программирование с помощью визуального рисования. В ней вы можете управлять виртуальной черепашкой и заставить её проползти на 100 шагов вперёд, повернуть на 90 градусов вправо и выполнить другие команды. Комбинирование таких простых действий позволяет создавать различные геометрические фигуры и сразу видеть результат на экране. Давайте подключим этот модуль и попробуем с ним поработать.</p>
7 <p>Модуль turtle - это библиотека Python, которая помогает новичкам изучать программирование с помощью визуального рисования. В ней вы можете управлять виртуальной черепашкой и заставить её проползти на 100 шагов вперёд, повернуть на 90 градусов вправо и выполнить другие команды. Комбинирование таких простых действий позволяет создавать различные геометрические фигуры и сразу видеть результат на экране. Давайте подключим этот модуль и попробуем с ним поработать.</p>
8 <p><strong>Содержание</strong></p>
8 <p><strong>Содержание</strong></p>
9 <ul><li><a>Установка и настройка Turtle</a></li>
9 <ul><li><a>Установка и настройка Turtle</a></li>
10 <li><a>Как управлять движением черепашки</a></li>
10 <li><a>Как управлять движением черепашки</a></li>
11 <li><a>Расширенные функции Turtle</a></li>
11 <li><a>Расширенные функции Turtle</a></li>
12 <li><a>Примеры применения</a></li>
12 <li><a>Примеры применения</a></li>
13 <li><a>Что дальше</a></li>
13 <li><a>Что дальше</a></li>
14 </ul><p>Модуль turtle входит в стандартную библиотеку Python и относится к категории<a>Program Frameworks</a>. Такие модули задают базовую структуру кода с помощью набора готовых инструментов и правил. Например, в turtle нельзя просто нарисовать прямую линию. Для этого черепашке нужно доползти до начальной точки, повернуться в нужную сторону и только после этого проползти вперёд, оставляя за собой след.</p>
14 </ul><p>Модуль turtle входит в стандартную библиотеку Python и относится к категории<a>Program Frameworks</a>. Такие модули задают базовую структуру кода с помощью набора готовых инструментов и правил. Например, в turtle нельзя просто нарисовать прямую линию. Для этого черепашке нужно доползти до начальной точки, повернуться в нужную сторону и только после этого проползти вперёд, оставляя за собой след.</p>
15 <p>Чтобы работать со стандартной библиотекой, сначала<a>установите Python для своей операционной системы</a>и выберите редактор кода. Подойдут PyCharm, Visual Studio Code, IDLE или любой другой редактор с графическим интерфейсом. Однако учтите, что модуль turtle не поддерживается на мобильных платформах и работает с ограничениями во многих онлайн-интерпретаторах вроде Jupyter Notebook или Replit.</p>
15 <p>Чтобы работать со стандартной библиотекой, сначала<a>установите Python для своей операционной системы</a>и выберите редактор кода. Подойдут PyCharm, Visual Studio Code, IDLE или любой другой редактор с графическим интерфейсом. Однако учтите, что модуль turtle не поддерживается на мобильных платформах и работает с ограничениями во многих онлайн-интерпретаторах вроде Jupyter Notebook или Replit.</p>
16 <p>После установки редактора создайте новый файл с расширением .py, задайте ему имя (например, drawing.py) и добавьте следующую строку:</p>
16 <p>После установки редактора создайте новый файл с расширением .py, задайте ему имя (например, drawing.py) и добавьте следующую строку:</p>
17 import turtle<p>С этого момента модуль turtle подключён и готов к работе. Для проверки вы можете вставить в файл следующий код и запустить его, - если всё настроено правильно, черепашка нарисует звезду в отдельном окне:</p>
17 import turtle<p>С этого момента модуль turtle подключён и готов к работе. Для проверки вы можете вставить в файл следующий код и запустить его, - если всё настроено правильно, черепашка нарисует звезду в отдельном окне:</p>
18 import turtle turtle.color('red', 'yellow') turtle.begin_fill() while True: turtle.forward(200) turtle.left(170) if abs(turtle.pos()) &lt; 1: break turtle.end_fill() turtle.done()Для запуска кода через терминал VS Code выполните команду py имя_файла.py<em>Скриншот: Visual Studio Code / Skillbox Media</em><p>Черепашку можно перемещать двумя способами: с помощью простых команд (вперёд, назад, поворот) или через указание координат (X, Y). В этом разделе мы кратко рассмотрим оба подхода, а затем перейдём к дополнительным функциям. Для более глубокого изучения советуем добавить в закладки<a>официальную документацию Turtle graphics</a> - в ней подробно описаны все команды и особенности работы с модулем turtle.</p>
18 import turtle turtle.color('red', 'yellow') turtle.begin_fill() while True: turtle.forward(200) turtle.left(170) if abs(turtle.pos()) &lt; 1: break turtle.end_fill() turtle.done()Для запуска кода через терминал VS Code выполните команду py имя_файла.py<em>Скриншот: Visual Studio Code / Skillbox Media</em><p>Черепашку можно перемещать двумя способами: с помощью простых команд (вперёд, назад, поворот) или через указание координат (X, Y). В этом разделе мы кратко рассмотрим оба подхода, а затем перейдём к дополнительным функциям. Для более глубокого изучения советуем добавить в закладки<a>официальную документацию Turtle graphics</a> - в ней подробно описаны все команды и особенности работы с модулем turtle.</p>
19 <p>Начнём с основных команд, которыми вы будете пользоваться чаще всего:</p>
19 <p>Начнём с основных команд, которыми вы будете пользоваться чаще всего:</p>
20 <ul><li>forward(длина) - двигает черепашку вперёд. Например, по команде forward (50) та продвинется на 50 пикселей и оставит за собой линию.</li>
20 <ul><li>forward(длина) - двигает черепашку вперёд. Например, по команде forward (50) та продвинется на 50 пикселей и оставит за собой линию.</li>
21 <li>backward(длина) - двигает назад на заданное расстояние.</li>
21 <li>backward(длина) - двигает назад на заданное расстояние.</li>
22 <li>right(угол) - поворачивает вправо на указанный угол. Так, команда right(90) развернёт черепашку на 90 градусов по часовой стрелке.</li>
22 <li>right(угол) - поворачивает вправо на указанный угол. Так, команда right(90) развернёт черепашку на 90 градусов по часовой стрелке.</li>
23 <li>left(угол) - поворачивает влево на указанный угол.</li>
23 <li>left(угол) - поворачивает влево на указанный угол.</li>
24 <li>penup() - поднимает виртуальное перо, чтобы черепашка не оставляла след на экране.</li>
24 <li>penup() - поднимает виртуальное перо, чтобы черепашка не оставляла след на экране.</li>
25 <li>pendown() - опускает перо, чтобы снова появлялась линия.</li>
25 <li>pendown() - опускает перо, чтобы снова появлялась линия.</li>
26 <li>circle (радиус) - рисует окружность заданного радиуса.</li>
26 <li>circle (радиус) - рисует окружность заданного радиуса.</li>
27 <li>exitonclick() - оставляет окно с рисунком открытым до тех пор, пока вы не кликнете мышью.</li>
27 <li>exitonclick() - оставляет окно с рисунком открытым до тех пор, пока вы не кликнете мышью.</li>
28 <li>done() - завершает выполнение программы и оставляет окно с рисунком открытым.</li>
28 <li>done() - завершает выполнение программы и оставляет окно с рисунком открытым.</li>
29 </ul><p>Новички часто забывают добавить в конце программы команду done() или exitonclick(). Без них окно с рисунком быстро откроется и закроется сразу после выполнения кода, - вы не успеете ничего увидеть:</p>
29 </ul><p>Новички часто забывают добавить в конце программы команду done() или exitonclick(). Без них окно с рисунком быстро откроется и закроется сразу после выполнения кода, - вы не успеете ничего увидеть:</p>
30 import turtle # Cоздаём объект черепашки t = turtle.Turtle() # Рисуем линию длиной 100 пикселей t.forward(100)<p>А теперь добавим в конце команду, и окно никуда не денется:</p>
30 import turtle # Cоздаём объект черепашки t = turtle.Turtle() # Рисуем линию длиной 100 пикселей t.forward(100)<p>А теперь добавим в конце команду, и окно никуда не денется:</p>
31 turtle.done()<p>Рабочее поле черепашки - это обычная координатная плоскость. По горизонтали идёт ось X (слева направо), по вертикали - ось Y (снизу вверх). В центре находится точка (0, 0), откуда черепашка начинает путь:</p>
31 turtle.done()<p>Рабочее поле черепашки - это обычная координатная плоскость. По горизонтали идёт ось X (слева направо), по вертикали - ось Y (снизу вверх). В центре находится точка (0, 0), откуда черепашка начинает путь:</p>
32 <ul><li>goto(x, y) - перемещает в указанную точку с координатами (X, Y). Например, goto (100, 50) переместит вас в точку, где x = 100, y = 50.</li>
32 <ul><li>goto(x, y) - перемещает в указанную точку с координатами (X, Y). Например, goto (100, 50) переместит вас в точку, где x = 100, y = 50.</li>
33 <li>setx(x) - меняет координату X для перемещения по горизонтали.</li>
33 <li>setx(x) - меняет координату X для перемещения по горизонтали.</li>
34 <li>sety(y) - меняет координату Y для перемещения по вертикали.</li>
34 <li>sety(y) - меняет координату Y для перемещения по вертикали.</li>
35 <li>setheading(угол) - задаёт направление движения: 0 - вправо, 90 - вверх, 180 - влево, 270 - вниз.</li>
35 <li>setheading(угол) - задаёт направление движения: 0 - вправо, 90 - вверх, 180 - влево, 270 - вниз.</li>
36 <li>home() - возвращает черепашку в центр поля (0, 0) и устанавливает направление вправо.</li>
36 <li>home() - возвращает черепашку в центр поля (0, 0) и устанавливает направление вправо.</li>
37 </ul><p>Теперь объединим оба способа управления черепашкой. Сначала нарисуем квадрат с помощью базовых команд движения, а затем переместимся в новую позицию по координатам и нарисуем круг:</p>
37 </ul><p>Теперь объединим оба способа управления черепашкой. Сначала нарисуем квадрат с помощью базовых команд движения, а затем переместимся в новую позицию по координатам и нарисуем круг:</p>
38 import turtle # Cоздаём объект черепашки t = turtle.Turtle() # Рисуем квадрат for _ in range(4): t.forward(100) t.left(90) # Перемещаем черепашку для нового рисунка t.penup() t.goto(-150, 0) t.pendown() # Рисуем окружность радиусом 50 пикселей t.circle(50) turtle.done()<p>В результате вы должны увидеть две фигуры на одном поле:</p>
38 import turtle # Cоздаём объект черепашки t = turtle.Turtle() # Рисуем квадрат for _ in range(4): t.forward(100) t.left(90) # Перемещаем черепашку для нового рисунка t.penup() t.goto(-150, 0) t.pendown() # Рисуем окружность радиусом 50 пикселей t.circle(50) turtle.done()<p>В результате вы должны увидеть две фигуры на одном поле:</p>
39 <em>Скриншот: Visual Studio Code / Skillbox Media</em><p>До этого мы использовали только базовые возможности модуля turtle, которые заданы по умолчанию. Для создания более сложных узоров вы можете настраивать различные параметры отрисовки: цвет, размер, скорость и другие характеристики. Рассмотрим некоторые из них.</p>
39 <em>Скриншот: Visual Studio Code / Skillbox Media</em><p>До этого мы использовали только базовые возможности модуля turtle, которые заданы по умолчанию. Для создания более сложных узоров вы можете настраивать различные параметры отрисовки: цвет, размер, скорость и другие характеристики. Рассмотрим некоторые из них.</p>
40 <p><strong>Цвет и заливка.</strong>Вы можете отдельно настраивать цвет пера (линии) и цвет заливки фигуры. Для этого можно использовать имена цветов на английском языке (red, blue, green) или их значения в <a>HEX-формате</a> - например, #FF0000 (красный), #00FF00 (зелёный), #0000FF (синий).</p>
40 <p><strong>Цвет и заливка.</strong>Вы можете отдельно настраивать цвет пера (линии) и цвет заливки фигуры. Для этого можно использовать имена цветов на английском языке (red, blue, green) или их значения в <a>HEX-формате</a> - например, #FF0000 (красный), #00FF00 (зелёный), #0000FF (синий).</p>
41 <p>Обратите внимание: заливка работает только с замкнутыми фигурами: кругами, квадратами и многоугольниками. Она не применяется к незамкнутым линиям, спиралям и также не сработает, если между командами begin_fill() и end_fill() у вас появится разрыв в линии.</p>
41 <p>Обратите внимание: заливка работает только с замкнутыми фигурами: кругами, квадратами и многоугольниками. Она не применяется к незамкнутым линиям, спиралям и также не сработает, если между командами begin_fill() и end_fill() у вас появится разрыв в линии.</p>
42 import turtle t = turtle.Turtle() t.pencolor("blue") # Цвет линии t.fillcolor("lightblue") # Цвет заливки t.begin_fill() # Начинаем заливку t.circle(80) t.end_fill() # Завершаем заливку turtle.done()<em>Скриншот: Visual Studio Code / Skillbox Media</em><p><strong>Скорость, форма и отображение.</strong>Благодаря этим параметрам вы можете управлять тем, как черепашка рисует фигуры на экране:</p>
42 import turtle t = turtle.Turtle() t.pencolor("blue") # Цвет линии t.fillcolor("lightblue") # Цвет заливки t.begin_fill() # Начинаем заливку t.circle(80) t.end_fill() # Завершаем заливку turtle.done()<em>Скриншот: Visual Studio Code / Skillbox Media</em><p><strong>Скорость, форма и отображение.</strong>Благодаря этим параметрам вы можете управлять тем, как черепашка рисует фигуры на экране:</p>
43 <ul><li>t.speed(n) задаёт скорость движения черепахи. Можно указать значения от 1 (очень медленно) до 10 (максимально быстро). При значении 0 рисунок появляется мгновенно, без анимации.</li>
43 <ul><li>t.speed(n) задаёт скорость движения черепахи. Можно указать значения от 1 (очень медленно) до 10 (максимально быстро). При значении 0 рисунок появляется мгновенно, без анимации.</li>
44 <li>t.shape("turtle") меняет форму курсора. Вот доступные варианты: turtle (черепашка), arrow (стрелка), circle (круг), square (квадрат), triangle (треугольник) и classic (классический).</li>
44 <li>t.shape("turtle") меняет форму курсора. Вот доступные варианты: turtle (черепашка), arrow (стрелка), circle (круг), square (квадрат), triangle (треугольник) и classic (классический).</li>
45 <li>Команда t.hideturtle() позволяет временно скрыть черепашку во время рисования, что ускоряет процесс. Затем вы можете использовать t.showturtle(), чтобы она снова появилась.</li>
45 <li>Команда t.hideturtle() позволяет временно скрыть черепашку во время рисования, что ускоряет процесс. Затем вы можете использовать t.showturtle(), чтобы она снова появилась.</li>
46 <li>Для сложных фигур можно отключить анимацию командой turtle.tracer(0), а после завершения всех действий вызвать turtle.update(). Это ещё один способ ускорить процесс отрисовки.</li>
46 <li>Для сложных фигур можно отключить анимацию командой turtle.tracer(0), а после завершения всех действий вызвать turtle.update(). Это ещё один способ ускорить процесс отрисовки.</li>
47 </ul><p>Поэкспериментируем с настройками и нарисуем две новые фигуры:</p>
47 </ul><p>Поэкспериментируем с настройками и нарисуем две новые фигуры:</p>
48 import turtle t = turtle.Turtle() # Меняем форму курсора со "стрелки" на "черепашку" t.shape("turtle") t.speed(7) t.color("green", "yellow") t.begin_fill() for _ in range(6): # Рисуем правильный жёлтый шестиугольник t.forward(100) t.left(60) t.end_fill() t.penup() t.goto(-150, 0) t.pendown() # Скрываем черепашку и создаём красный треугольник t.hideturtle() t.color("red", "orange") t.begin_fill() for _ in range(3): t.forward(80) t.left(120) t.end_fill() t.showturtle() turtle.done()Вместо стрелки по умолчанию у нас появилась настоящая "черепашка". Теперь наконец понятно, почему модуль называется "черепашьей графикой"<em>Скриншот: Visual Studio Code / Skillbox Media</em><p><strong>Отслеживание событий.</strong>Вы можете настроить черепашку так, чтобы она реагировала на нажатия клавиш и клики мыши:</p>
48 import turtle t = turtle.Turtle() # Меняем форму курсора со "стрелки" на "черепашку" t.shape("turtle") t.speed(7) t.color("green", "yellow") t.begin_fill() for _ in range(6): # Рисуем правильный жёлтый шестиугольник t.forward(100) t.left(60) t.end_fill() t.penup() t.goto(-150, 0) t.pendown() # Скрываем черепашку и создаём красный треугольник t.hideturtle() t.color("red", "orange") t.begin_fill() for _ in range(3): t.forward(80) t.left(120) t.end_fill() t.showturtle() turtle.done()Вместо стрелки по умолчанию у нас появилась настоящая "черепашка". Теперь наконец понятно, почему модуль называется "черепашьей графикой"<em>Скриншот: Visual Studio Code / Skillbox Media</em><p><strong>Отслеживание событий.</strong>Вы можете настроить черепашку так, чтобы она реагировала на нажатия клавиш и клики мыши:</p>
49 <ul><li>turtle.listen() - эта команда включает прослушивание событий от клавиатуры и мыши.</li>
49 <ul><li>turtle.listen() - эта команда включает прослушивание событий от клавиатуры и мыши.</li>
50 <li>turtle.onkeypress(func, key) - привязывает функцию к нажатию определённой клавиши.</li>
50 <li>turtle.onkeypress(func, key) - привязывает функцию к нажатию определённой клавиши.</li>
51 <li>turtle.onclick(func) - позволяет обрабатывать щелчок мыши по самой черепашке.</li>
51 <li>turtle.onclick(func) - позволяет обрабатывать щелчок мыши по самой черепашке.</li>
52 <li>turtle.onscreenclick(func) - реагирует на щелчок мыши в любой точке экрана и передаёт координаты точки в функцию-обработчик.</li>
52 <li>turtle.onscreenclick(func) - реагирует на щелчок мыши в любой точке экрана и передаёт координаты точки в функцию-обработчик.</li>
53 </ul><p>Для закрепления изученных команд ниже мы создадим программу, которая позволит управлять черепахой с помощью клавиш-стрелок:</p>
53 </ul><p>Для закрепления изученных команд ниже мы создадим программу, которая позволит управлять черепахой с помощью клавиш-стрелок:</p>
54 import turtle # Создаём объект черепашки и настраиваем её внешний вид t = turtle.Turtle() t.shape("turtle") t.speed(0) # Настраиваем функции управления def move_forward(): t.forward(30) # Двигаемся вперёд на 30 пикселей def move_backward(): t.backward(30) # Двигаемся назад на 30 пикселей def turn_left(): t.left(30) # Поворачиваем влево на 30° def turn_right(): t.right(30) # Поворачиваем вправо на 30° def reset_position(): t.penup() t.home() t.pendown() # Включаем прослушивание событий клавиатуры turtle.listen() # Назначаем действия на определённые клавиши: turtle.onkeypress(move_forward, "Up") # Стрелка вверх - вперёд turtle.onkeypress(move_backward, "Down") # Стрелка вниз - назад turtle.onkeypress(turn_left, "Left") # Стрелка влево - повернуть влево turtle.onkeypress(turn_right, "Right") # Стрелка вправо - повернуть вправо turtle.onkeypress(reset_position, "space") # Пробел - вернуться в центр turtle.done()Теперь черепашка полностью под нашим управлением:<em>Скриншот: Visual Studio Code / Skillbox Media</em><p><strong>Работа с несколькими объектами.</strong>Вы можете создать несколько черепашек и управлять каждой из них по отдельности. Это пригодится при разработке анимаций или простых игр, где различные элементы (например, игрок или мяч) представлены отдельными объектами.</p>
54 import turtle # Создаём объект черепашки и настраиваем её внешний вид t = turtle.Turtle() t.shape("turtle") t.speed(0) # Настраиваем функции управления def move_forward(): t.forward(30) # Двигаемся вперёд на 30 пикселей def move_backward(): t.backward(30) # Двигаемся назад на 30 пикселей def turn_left(): t.left(30) # Поворачиваем влево на 30° def turn_right(): t.right(30) # Поворачиваем вправо на 30° def reset_position(): t.penup() t.home() t.pendown() # Включаем прослушивание событий клавиатуры turtle.listen() # Назначаем действия на определённые клавиши: turtle.onkeypress(move_forward, "Up") # Стрелка вверх - вперёд turtle.onkeypress(move_backward, "Down") # Стрелка вниз - назад turtle.onkeypress(turn_left, "Left") # Стрелка влево - повернуть влево turtle.onkeypress(turn_right, "Right") # Стрелка вправо - повернуть вправо turtle.onkeypress(reset_position, "space") # Пробел - вернуться в центр turtle.done()Теперь черепашка полностью под нашим управлением:<em>Скриншот: Visual Studio Code / Skillbox Media</em><p><strong>Работа с несколькими объектами.</strong>Вы можете создать несколько черепашек и управлять каждой из них по отдельности. Это пригодится при разработке анимаций или простых игр, где различные элементы (например, игрок или мяч) представлены отдельными объектами.</p>
55 <p>Для примера ниже мы создадим красную и синюю черепашек, которые будут двигаться по разным траекториям:</p>
55 <p>Для примера ниже мы создадим красную и синюю черепашек, которые будут двигаться по разным траекториям:</p>
56 import turtle # Создаём первую черепашку (красная) t1 = turtle.Turtle() t1.color("red") t1.shape("turtle") # Создаём вторую черепашку (синяя) t2 = turtle.Turtle() t2.color("blue") t2.shape("turtle") # Первая черепашка движется вправо на 100 пикселей t1.forward(100) # Вторая черепашка поворачивает вверх и двигается на 100 пикселей t2.left(90) t2.forward(100) # Перемещаем первую черепашку в точку (-100, -100) без линии t1.penup() t1.goto(-100, -100) t1.pendown() # Перемещаем вторую черепашку в точку (100, -100) без линии t2.penup() t2.goto(100, -100) t2.pendown() # Первая черепашка рисует круг радиусом 50 пикселей t1.circle(50) # Вторая черепашка поворачивает и движется ещё на 70 пикселей t2.right(45) t2.forward(70) turtle.done()<em>Скриншот: Visual Studio Code / Skillbox Media</em><p><strong>Алгоритмические узоры и фракталы.</strong>С помощью циклов, функций и вложенных фигур вы можете визуализировать разные математические закономерности. Например, модуль random позволяет создать фрактал "<a>папоротник Барнсли</a>", который напоминает настоящее растение.</p>
56 import turtle # Создаём первую черепашку (красная) t1 = turtle.Turtle() t1.color("red") t1.shape("turtle") # Создаём вторую черепашку (синяя) t2 = turtle.Turtle() t2.color("blue") t2.shape("turtle") # Первая черепашка движется вправо на 100 пикселей t1.forward(100) # Вторая черепашка поворачивает вверх и двигается на 100 пикселей t2.left(90) t2.forward(100) # Перемещаем первую черепашку в точку (-100, -100) без линии t1.penup() t1.goto(-100, -100) t1.pendown() # Перемещаем вторую черепашку в точку (100, -100) без линии t2.penup() t2.goto(100, -100) t2.pendown() # Первая черепашка рисует круг радиусом 50 пикселей t1.circle(50) # Вторая черепашка поворачивает и движется ещё на 70 пикселей t2.right(45) t2.forward(70) turtle.done()<em>Скриншот: Visual Studio Code / Skillbox Media</em><p><strong>Алгоритмические узоры и фракталы.</strong>С помощью циклов, функций и вложенных фигур вы можете визуализировать разные математические закономерности. Например, модуль random позволяет создать фрактал "<a>папоротник Барнсли</a>", который напоминает настоящее растение.</p>
57 <p>В этом фрактале каждая новая точка вычисляется на основе положения предыдущей - как будто мы рисуем картинку по точкам. Одни точки образуют стебель, другие - листочки. Постепенно из тысяч таких точек складывается красивый рисунок, похожий на папоротник. Попробуйте:</p>
57 <p>В этом фрактале каждая новая точка вычисляется на основе положения предыдущей - как будто мы рисуем картинку по точкам. Одни точки образуют стебель, другие - листочки. Постепенно из тысяч таких точек складывается красивый рисунок, похожий на папоротник. Попробуйте:</p>
58 import turtle import random # Создаём функцию для построения фрактала def barnsley_fern(t, iterations): x, y = 0, 0 # Начальные координаты for _ in range(iterations): r = random.random() # Генерируем случайное число от 0 до 1 # В зависимости от значения r выбираем одну из четырёх формул для новой точки if r &lt; 0.01: x, y = 0, 0.16 * y # Стебель папоротника elif r &lt; 0.86: x, y = 0.85 * x + 0.04 * y, -0.04 * x + 0.85 * y + 1.6 # Основная масса листьев elif r &lt; 0.93: x, y = 0.2 * x - 0.26 * y, 0.23 * x + 0.22 * y + 1.6 # Левые листики else: x, y = -0.15 * x + 0.28 * y, 0.26 * x + 0.24 * y + 0.44 # Правые листики # Перемещаемся к новой точке t.goto(x * 50, y * 50 - 200) t.dot(2, "yellow") # Ставим точку диаметром 2 пикселя жёлтым цветом screen = turtle.Screen() screen.bgcolor("black") t = turtle.Turtle() t.speed(0) turtle.tracer(0) t.hideturtle() t.penup() barnsley_fern(t, 50000) # Используем 50 000 точек для красивого результата turtle.update() turtle.done()<em>Скриншот: Visual Studio Code / Skillbox Media</em><p>В предыдущих разделах вы познакомились с базовыми и расширенными возможностями модуля turtle: управлением, событиями, работой с несколькими объектами и случайными числами. Теперь попробуйте объединить эти возможности и реализовать игру "Поймай черепашку".</p>
58 import turtle import random # Создаём функцию для построения фрактала def barnsley_fern(t, iterations): x, y = 0, 0 # Начальные координаты for _ in range(iterations): r = random.random() # Генерируем случайное число от 0 до 1 # В зависимости от значения r выбираем одну из четырёх формул для новой точки if r &lt; 0.01: x, y = 0, 0.16 * y # Стебель папоротника elif r &lt; 0.86: x, y = 0.85 * x + 0.04 * y, -0.04 * x + 0.85 * y + 1.6 # Основная масса листьев elif r &lt; 0.93: x, y = 0.2 * x - 0.26 * y, 0.23 * x + 0.22 * y + 1.6 # Левые листики else: x, y = -0.15 * x + 0.28 * y, 0.26 * x + 0.24 * y + 0.44 # Правые листики # Перемещаемся к новой точке t.goto(x * 50, y * 50 - 200) t.dot(2, "yellow") # Ставим точку диаметром 2 пикселя жёлтым цветом screen = turtle.Screen() screen.bgcolor("black") t = turtle.Turtle() t.speed(0) turtle.tracer(0) t.hideturtle() t.penup() barnsley_fern(t, 50000) # Используем 50 000 точек для красивого результата turtle.update() turtle.done()<em>Скриншот: Visual Studio Code / Skillbox Media</em><p>В предыдущих разделах вы познакомились с базовыми и расширенными возможностями модуля turtle: управлением, событиями, работой с несколькими объектами и случайными числами. Теперь попробуйте объединить эти возможности и реализовать игру "Поймай черепашку".</p>
59 <p>Вам нужно создать на игровом поле двух черепашек. Первая будет вашей - настройте для неё управление с помощью клавиш и мышки. Второй черепашкой пусть управляет компьютер - она должна случайно перемещаться по экрану и убегать от вас. Цель игры - догнать убегающую черепашку, вывести сообщение о победе и завершить программу.</p>
59 <p>Вам нужно создать на игровом поле двух черепашек. Первая будет вашей - настройте для неё управление с помощью клавиш и мышки. Второй черепашкой пусть управляет компьютер - она должна случайно перемещаться по экрану и убегать от вас. Цель игры - догнать убегающую черепашку, вывести сообщение о победе и завершить программу.</p>
60 <em>Скриншот: Visual Studio Code / Skillbox Media</em><p><strong>Подсказки</strong></p>
60 <em>Скриншот: Visual Studio Code / Skillbox Media</em><p><strong>Подсказки</strong></p>
61 <ul><li>Чтобы убегающая черепашка перемещалась по полю, создайте функцию, которая будет раз в несколько сотен миллисекунд случайным образом выбирать новую позицию и переносить черепашку туда. Для генерации случайных координат вы можете использовать модуль random (например, функцию random.randint), а чтобы задавать паузу между прыжками - функцию ontimer.</li>
61 <ul><li>Чтобы убегающая черепашка перемещалась по полю, создайте функцию, которая будет раз в несколько сотен миллисекунд случайным образом выбирать новую позицию и переносить черепашку туда. Для генерации случайных координат вы можете использовать модуль random (например, функцию random.randint), а чтобы задавать паузу между прыжками - функцию ontimer.</li>
62 <li>Проверяйте расстояние между черепахами с помощью метода .distance(). Если оно становится меньше заданного порога (например, 20 пикселей), считайте, что вы поймали черепашку. После скройте обеих черепашек и не давайте им больше двигаться.</li>
62 <li>Проверяйте расстояние между черепахами с помощью метода .distance(). Если оно становится меньше заданного порога (например, 20 пикселей), считайте, что вы поймали черепашку. После скройте обеих черепашек и не давайте им больше двигаться.</li>
63 <li>Для вывода сообщения создайте отдельную "невидимую" черепашку или воспользуйтесь методом .write() у одной из уже созданных.</li>
63 <li>Для вывода сообщения создайте отдельную "невидимую" черепашку или воспользуйтесь методом .write() у одной из уже созданных.</li>
64 </ul><p><strong>Код игры</strong></p>
64 </ul><p><strong>Код игры</strong></p>
65 import turtle import random FIELD_SIZE = 300 JUMP_INTERVAL = 500 CATCH_DISTANCE = 20 # Создаём игровое окно screen = turtle.Screen() screen.title("Поймай черепашку!") screen.bgcolor("#f0f0f0") screen.setup(width=700, height=700) # Создаём черепашку-игрока (красная) player = turtle.Turtle() player.shape("turtle") player.color("red") player.penup() player.speed(0) player.goto(0, -100) # Создаём убегающую черепашку (синяя) runner = turtle.Turtle() runner.shape("turtle") runner.color("blue") runner.penup() runner.speed(0) runner.goto(0, 100) game_active = True # Добавляем управление клавишами с клавиатуры def move_forward(): if game_active: player.forward(20) check_catch() def move_backward(): if game_active: player.backward(20) check_catch() def turn_left(): if game_active: player.left(30) def turn_right(): if game_active: player.right(30) # Добавляем управление мышкой def go_to_click(x, y): if game_active: player.setheading(player.towards(x, y)) player.goto(x, y) check_catch() # Настраиваем перемещение убегающей черепахи def runner_jump(): if not game_active: return # Генерируем случайные координаты в пределах игрового поля new_x = random.randint(-FIELD_SIZE, FIELD_SIZE) new_y = random.randint(-FIELD_SIZE, FIELD_SIZE) runner.goto(new_x, new_y) check_catch() # Планируем следующий прыжок через JUMP_INTERVAL миллисекунд screen.ontimer(runner_jump, JUMP_INTERVAL) # Проверяем, получилось ли поймать убегающую черепаху def check_catch(): # Сравниваем расстояние между черепахами if player.distance(runner) &lt; CATCH_DISTANCE and game_active: end_game() # Планируем действия после окончания игры def end_game(): global game_active game_active = False runner.hideturtle() # Скрываем обеих черепашек player.hideturtle() # Создаём черепашку для вывода сообщения message = turtle.Turtle() message.hideturtle() message.penup() message.goto(0, 0) message.color("green") message.write("Поймано! Победа!", align="center", font=("Arial", 24, "bold")) # Привязываем управление к клавишам и мышке screen.listen() screen.onkeypress(move_forward, "Up") screen.onkeypress(move_backward, "Down") screen.onkeypress(turn_left, "Left") screen.onkeypress(turn_right, "Right") screen.onclick(go_to_click) runner_jump() turtle.done()<p>Модуль turtle - отличный способ познакомиться с основами программирования на Python. После его освоения вы будете готовы перейти к более сложным инструментам и попробовать следующие:</p>
65 import turtle import random FIELD_SIZE = 300 JUMP_INTERVAL = 500 CATCH_DISTANCE = 20 # Создаём игровое окно screen = turtle.Screen() screen.title("Поймай черепашку!") screen.bgcolor("#f0f0f0") screen.setup(width=700, height=700) # Создаём черепашку-игрока (красная) player = turtle.Turtle() player.shape("turtle") player.color("red") player.penup() player.speed(0) player.goto(0, -100) # Создаём убегающую черепашку (синяя) runner = turtle.Turtle() runner.shape("turtle") runner.color("blue") runner.penup() runner.speed(0) runner.goto(0, 100) game_active = True # Добавляем управление клавишами с клавиатуры def move_forward(): if game_active: player.forward(20) check_catch() def move_backward(): if game_active: player.backward(20) check_catch() def turn_left(): if game_active: player.left(30) def turn_right(): if game_active: player.right(30) # Добавляем управление мышкой def go_to_click(x, y): if game_active: player.setheading(player.towards(x, y)) player.goto(x, y) check_catch() # Настраиваем перемещение убегающей черепахи def runner_jump(): if not game_active: return # Генерируем случайные координаты в пределах игрового поля new_x = random.randint(-FIELD_SIZE, FIELD_SIZE) new_y = random.randint(-FIELD_SIZE, FIELD_SIZE) runner.goto(new_x, new_y) check_catch() # Планируем следующий прыжок через JUMP_INTERVAL миллисекунд screen.ontimer(runner_jump, JUMP_INTERVAL) # Проверяем, получилось ли поймать убегающую черепаху def check_catch(): # Сравниваем расстояние между черепахами if player.distance(runner) &lt; CATCH_DISTANCE and game_active: end_game() # Планируем действия после окончания игры def end_game(): global game_active game_active = False runner.hideturtle() # Скрываем обеих черепашек player.hideturtle() # Создаём черепашку для вывода сообщения message = turtle.Turtle() message.hideturtle() message.penup() message.goto(0, 0) message.color("green") message.write("Поймано! Победа!", align="center", font=("Arial", 24, "bold")) # Привязываем управление к клавишам и мышке screen.listen() screen.onkeypress(move_forward, "Up") screen.onkeypress(move_backward, "Down") screen.onkeypress(turn_left, "Left") screen.onkeypress(turn_right, "Right") screen.onclick(go_to_click) runner_jump() turtle.done()<p>Модуль turtle - отличный способ познакомиться с основами программирования на Python. После его освоения вы будете готовы перейти к более сложным инструментам и попробовать следующие:</p>
66 <ul><li><a>Pygame</a> - библиотека для создания 2D-игр на Python. Она позволяет работать с графикой, добавлять звуковые эффекты, а также обрабатывать действия игрока - нажатия клавиш, движения мыши и прочее. Например, вы можете написать на Pygame<a>игру "Змейка"</a>.</li>
66 <ul><li><a>Pygame</a> - библиотека для создания 2D-игр на Python. Она позволяет работать с графикой, добавлять звуковые эффекты, а также обрабатывать действия игрока - нажатия клавиш, движения мыши и прочее. Например, вы можете написать на Pygame<a>игру "Змейка"</a>.</li>
67 <li><a>Tkinter</a> - стандартная библиотека Python для создания графического интерфейса. С её помощью можно создавать окна, кнопки, текстовые поля и другие элементы интерфейса. Например, на Tkinter легко реализовать<a>калькулятор индекса массы тела</a>.</li>
67 <li><a>Tkinter</a> - стандартная библиотека Python для создания графического интерфейса. С её помощью можно создавать окна, кнопки, текстовые поля и другие элементы интерфейса. Например, на Tkinter легко реализовать<a>калькулятор индекса массы тела</a>.</li>
68 <li><a>Matplotlib</a> - библиотека для построения графиков, диаграмм и визуализации данных. Например, вы можете создать<a>столбчатую диаграмму с накоплением</a>и отследить, как со временем изменялось соотношение Android- и iOS-устройств на рынке смартфонов.</li>
68 <li><a>Matplotlib</a> - библиотека для построения графиков, диаграмм и визуализации данных. Например, вы можете создать<a>столбчатую диаграмму с накоплением</a>и отследить, как со временем изменялось соотношение Android- и iOS-устройств на рынке смартфонов.</li>
69 </ul><p>Python для всех</p>
69 </ul><p>Python для всех</p>
70 <p>Вы освоите Python на практике и создадите проекты для портфолио - телеграм-бот, веб-парсер и сайт с нуля. А ещё получите готовый план выхода на удалёнку и фриланс. Спикер - руководитель отдела разработки в "Сбере".</p>
70 <p>Вы освоите Python на практике и создадите проекты для портфолио - телеграм-бот, веб-парсер и сайт с нуля. А ещё получите готовый план выхода на удалёнку и фриланс. Спикер - руководитель отдела разработки в "Сбере".</p>
71 <p><a>Пройти бесплатно</a></p>
71 <p><a>Пройти бесплатно</a></p>
72 <a><b>Бесплатный курс по разработке на Python ➞</b>Пройдите бесплатный курс по Python и создайте с нуля телеграм-бот, веб-парсер и сайт. Спикер - руководитель отдела разработки в "Сбере". Пройти курс</a>
72 <a><b>Бесплатный курс по разработке на Python ➞</b>Пройдите бесплатный курс по Python и создайте с нуля телеграм-бот, веб-парсер и сайт. Спикер - руководитель отдела разработки в "Сбере". Пройти курс</a>