Мужчина с детьми в пижамах на диване, открывает коробку с игрушками.

Создание приложения Etch A Sketch с использованием Python и Turtle

Урок по Python для начинающих

Делиться

84ede74296338110b7efa1dd08bb3be9

Введение и история планшета Etch-a-Sketch

Планшет Etch-a-Sketch был одним из самых интересных изобретений среди игрушек конца 1950-х годов. Etch-a-Sketch по сути представлял собой планшет, похожий на настольную игрушку; красная рамка содержала встроенный экран и две ручки. Эти ручки управляли горизонтальным и вертикальным движением стилуса, расположенного за экраном. Этот продукт быстро стал невероятно популярным, за первый год было продано более 1 миллиона единиц. Это было одно из изобретений, которое занимало детей рисованием и развлечением, а также способствовало когнитивному развитию, улучшая мелкую моторику, координацию движений и пространственное мышление благодаря рисованию с помощью ручек. Он стал настолько популярен, что даже попал в такие фильмы, как «История игрушек».

Понимание проекта

В этой статье мы будем использовать модуль Python Turtle для разработки собственной цифровой версии Etch-a-Sketch. Это учебное пособие для начинающих и среднего уровня, требующее базового понимания основ Python, таких как функции, циклы и т. д. В процессе работы над этим проектом мы изучим обработку событий Python, координаты и перемещения, функции и циклы, а также, как следствие, визуальную обратную связь. Кроме того, мы также поймем концепцию экземпляров в объектно-ориентированном программировании. Это интересная реализация основной концепции Python и увлекательный способ изучения программирования с помощью визуального проекта. Давайте начнем!

Модуль Turtle в Python для визуального кодирования

Для создания приложения, имитирующего игру «Этч-а-Скетч», нам потребуется визуальное представление нашего кода. Именно здесь на помощь приходит модуль Turtle из Python. Модуль Turtle является частью стандартной библиотеки Python и позволяет рисовать в двумерной системе координат с помощью простых команд. Модуль также поддерживает ввод с клавиатуры, работая как цифровое перо, что делает его идеальным для имитации игры «Этч-а-Скетч».

Модуль «Черепаха» основан на роботизированной черепахе, которая получает команды, выполняет их и, соответственно, создает рисунки. Для использования этой функциональности достаточно импортировать модуль в код и использовать определенные функции, которые можно изучить в официальной документации здесь.

Ниже приведены несколько строк кода, которые импортируют модуль и используют наиболее полезную функцию для отрисовки на экране:

import turtle turtle.forward(100) turtle.right(90) turtle.forward(100) turtle.right(45) turtle.forward(100) turtle.exitonclick()

80df47d542be571eb954c781a8c844c1

Функция forward используется для перемещения курсора вперед и принимает расстояние в качестве аргумента, тогда как функция right поворачивает голову черепашки вправо на угол, заданный в качестве аргумента. Более подробную информацию о каждой функции можно найти в официальной документации.

Модуль Turtle также обладает возможностями объектно-ориентированного программирования, что означает, что мы можем создавать объекты на основе заданного шаблона. Классы Turtle и Screen можно использовать для создания экземпляров объектов, которые будут использоваться в нашем коде. Давайте создадим их:

my_pen = Turtle() my_pen.width(3) my_pen.speed(0) screen = Screen() screen.title(«Etch A Sketch»)

Посмотрите, как мы создали объект черепахи и назвали его my_pen из класса Turtle, который является частью модуля Python Turtle. Мы также создали объект экрана, который позволит нам визуализировать движение пера, а также настраивать его в соответствии с нашими потребностями. Мы также настроили ширину и скорость пера, а также присвоили экрану имя.

Определение двигательных функций

Далее необходимо определить функции для перемещения пера. Подобно физическому планшету Etch-a-Sketch, у которого есть 2 регулятора: один для вертикального перемещения вверх и вниз, а второй для горизонтального перемещения влево и вправо, мы определим в общей сложности 4 функции:

  1. Перемещение вперед: Эта функция перемещает перо вверх, аналогично движению вверх в оригинальном планшете.
  2. Движение назад: Эта функция перемещает перо вниз, аналогично движению вниз в оригинальном планшете.
  3. Поворот влево: это переместит ручку влево на определенный угол.
  4. Поворот вправо: это переместит ручку вправо на определённый угол.

Давайте закодируем вышеприведенный код в виде функций:

def move_forwards(): my_pen.forward(50) def move_backwards(): my_pen.backward(50) def turn_left(): new_heading = my_pen.heading() + 10 my_pen.setheading(new_heading) def turn_rigth(): new_heading = my_pen.heading() — 10 my_pen.setheading(new_heading)

В первых двух функциях мы использовали стандартные функции черепашки для движения вперед и назад. В функциях горизонтального движения, turn_left и turn_right, мы определили новую переменную new_heading, которая, по сути, представляет собой угол поворота пера. Переменная new_heading принимает текущий угол поворота пера и добавляет 10 градусов при повороте влево и вычитает 10 градусов при повороте вправо. Этот угол будет сохранен как new_heading, который будет выступать в качестве аргумента функции setheading, устанавливающей ориентацию пера на основе заданного в качестве аргумента угла.

Мы также определим функцию, которая будет очищать экран. Эта функция использует функцию очистки черепашки, которая удаляет рисунок черепашки с экрана, не влияя на ее состояние и положение. Она также вернет положение пера в исходное положение, используя функции penup, home и pendown:

def clear_screen(): my_pen.clear() my_pen.penup() my_pen.home() my_pen.pendown()

Прослушивание экрана

Одна из возможностей модуля turtle заключается в поддержке событий прослушивания экрана. В программировании прослушивание событий — это концепция, которая обнаруживает действия пользователя и реагирует на них. В нашем случае действия пользователя будут осуществляться с помощью клавиатуры, используя клавиши WASD для перемещения пера. Мы будем использовать эту функциональность в нашем коде. Этого можно добиться с помощью методов listen и onkey для объекта screen. Метод listen используется для сбора событий нажатия клавиш, а метод onkey определяет функцию, которая будет вызвана в зависимости от нажатой клавиши.

screen.listen() screen.onkey(move_forwards, «w») screen.onkey(move_backwards, «s») screen.onkey(turn_left, «a») screen.onkey(turn_rigth, «d») screen.onkey(clear_screen, «c»)

Наконец, поскольку мы хотим сохранить этот экран, мы воспользуемся методом exitonclick, который будет удерживать экран до тех пор, пока мы на него не нажмем.

screen.exitonclick()

Офорт и эскизы!

Теперь, когда наш код готов, мы запустим программу. Перед нами появится экран, который будет оставаться таким до тех пор, пока мы не щелкнем в любом месте на нем.

Для рисования будем использовать клавиши «W», «A», «S» и «D», а для очистки экрана — клавишу «C». Давайте нарисуем круг на клавиатуре!

125cf8277d87b738a5b514f6f64a5295

Также можно нарисовать круг, просто перемещая клавишу «W» вперед, а затем дважды поворачивая левую клавишу «A» и продолжая делать это, пока перо не вернется в исходное положение. Кроме того, с помощью этой программы можно практиковаться в рисовании фигур и понимать геометрию.

Улучшение проекта

Теперь, когда базовая программа готова, мы можем добавить множество других функций, которые позволят еще больше настроить и улучшить наше творение, например:

  • Добавление клавиш и соответствующих функций для диагональных перемещений.
  • Изменение цвета ручки
  • Сохранение рисунков и экспорт холста в виде изображения.

Заключение

Мы успешно применили наши базовые знания Python и модуля Turtle для создания цифровой программы, похожей на Etch-a-Sketch. Это увлекательный способ изучения программирования, а также понимания координат, поскольку все отображается визуально. Это также позволяет легко выявлять ошибки в коде и своевременно проводить отладку. Несмотря на простоту кода, подобная программа закладывает основу для сложных графических программ и программного обеспечения в будущем, поэтому базовое понимание графического интерфейса имеет решающее значение для понимания основ цифровой графики.

Источник: towardsdatascience.com

✅ Найденные теги: Etch A Sketch, Python, Turtle, новости, Приложение, Создание

ОСТАВЬТЕ СВОЙ КОММЕНТАРИЙ

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Каталог бесплатных опенсорс-решений, которые можно развернуть локально и забыть о подписках

галерея

Фото сгенерированных лиц: исследование показывает, что люди не могут отличить настоящие лица от сгенерированных
Нейросети построили капитализм за трое суток: 100 агентов Claude заперли…
Скетч: цифровой осьминог и виртуальный мир внутри компьютера с человечком.
Сцена с жестами пальцами, где один жест символизирует "VPN", а другой "KHP".
‼️Paramount купила Warner Bros. Discovery — сумма сделки составила безумные…
Скриншот репозитория GitHub "Claude Scientific Skills" AI для научных исследований.
Структура эффективного запроса Claude с элементами задачи, контекста и референса.
Эскиз и готовая веб-страница платформы для AI-дизайна в современном темном режиме.
ideipro logotyp
Image Not Found
Звёздное небо с галактиками и туманностями, космос, Вселенная, астрофотография.

Система оповещения обсерватории Рубина отправила 800 000 сигналов в первую ночь наблюдений.

Астрономы будут получать оповещения о небесных явлениях в течение нескольких минут после их обнаружения. Теренс О'Брайен, редактор раздела «Выходные». Публикации этого автора будут добавляться в вашу ежедневную рассылку по электронной почте и в ленту новостей на главной…

Мар 2, 2026
Женщина с длинными тёмными волосами в синем свете, нейтральный фон.

Расследование в отношении 61-фунтовой машины, которая «пожирает» пластик и выплевывает кирпичи.

Обзор компактного пресса для мягкого пластика Clear Drop — и что будет дальше. Шон Холлистер, старший редактор Публикации этого автора будут добавляться в вашу ежедневную рассылку по электронной почте и в ленту новостей на главной странице вашего…

Мар 2, 2026
Черный углеродное волокно с текстурой плетения, отражающий свет.

Материал будущего: как работает «бессмертный» композит

Учёные из Университета штата Северная Каролина представили композит нового поколения, способный самостоятельно восстанавливаться после серьёзных повреждений.  Речь идёт о модифицированном армированном волокном полимере (FRP), который не просто сохраняет прочность при малом весе, но и способен «залечивать» внутренние…

Мар 2, 2026
Круглый экран с изображением замка и горы, рядом электронная плата.

Круглый дисплей Waveshare для креативных проектов

Круглый 7-дюймовый сенсорный дисплей от Waveshare создан для разработчиков и дизайнеров, которым нужен нестандартный экран.  Это IPS-панель с разрешением 1 080×1 080 пикселей, поддержкой 10-точечного ёмкостного сенсора, оптической склейкой и защитным закалённым стеклом, выполненная в круглом форм-факторе.…

Мар 2, 2026

Впишите свой почтовый адрес и мы будем присылать вам на почту самые свежие новости в числе самых первых