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

Создание приложения 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

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

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

галерея

ИИ почти всех обгонит? Прогнозы звучат громко, но есть нюансы…
Компания Anthropic получила от Amazon 5 миллиардов долларов и в обмен пообещала инвестировать 100 миллиардов долларов в облачные сервисы.
dummy-img
Загрузка: обход банковских систем кибермошенниками и проблемы с удалением углерода.
Загрузка: обход банковских систем кибермошенниками и проблемы с удалением углерода.
dummy-img
dummy-img
Взаимодействие человека и машины погружается под воду.
Взаимодействие человека и машины погружается под воду.
Image Not Found
Компания Anthropic получила от Amazon 5 миллиардов долларов и в обмен пообещала инвестировать 100 миллиардов долларов в облачные сервисы.

Компания Anthropic получила от Amazon 5 миллиардов долларов и в обмен пообещала инвестировать 100 миллиардов долларов в облачные сервисы.

Вкратце Опубликовано: Изображение предоставлено: Thos Robinson/Getty Images для The New York Times (откроется в новом окне) Джули Борт Компания Anthropic получила от Amazon 5 миллиардов долларов и в обмен пообещала инвестировать 100 миллиардов долларов в облачные сервисы.…

Апр 21, 2026
dummy-img

Как почистить виниловые пластинки (2026): пылесос, ультразвук, чистящий раствор, щетка.

Эти щелчки и треск недопустимы. Приведите свою музыку в порядок с помощью этого удобного руководства. Источник: www.wired.com

Апр 21, 2026
Загрузка: обход банковских систем кибермошенниками и проблемы с удалением углерода.

Загрузка: обход банковских систем кибермошенниками и проблемы с удалением углерода.

Это сегодняшний выпуск The Download, нашей ежедневной новостной рассылки, которая предоставляет вам ежедневную порцию событий в мире технологий. Кибермошенники обходят системы безопасности банков с помощью незаконных инструментов, продаваемых в Telegram. В центре по отмыванию денег в Камбодже…

Апр 21, 2026
Загрузка: обход банковских систем кибермошенниками и проблемы с удалением углерода.

Загрузка: обход банковских систем кибермошенниками и проблемы с удалением углерода.

Это сегодняшний выпуск The Download, нашей ежедневной новостной рассылки, которая предоставляет вам ежедневную порцию событий в мире технологий. Кибермошенники обходят системы безопасности банков с помощью незаконных инструментов, продаваемых в Telegram. В центре по отмыванию денег в Камбодже…

Апр 21, 2026

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