Архив рубрики ~Лента новостей~

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

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

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

Делиться

NOVOSTI

Введение и история планшета 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()

Функция 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». Давайте нарисуем круг на клавиатуре!

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

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

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

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

Заключение

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

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

Оцените материал:

Поделиться
Понравилась статья? Расскажите другим
ВКонтакте
Читайте также
Новости робототехники Почему искусственный интеллект является безопасностью рабочей площадки Новости робототехники Сегодня ночью украинские БЭКи атаковали район Геленджика, рядом с Новороссийском Архив рубрики ~Обо всем~ Лидеры в области качества предостерегают от оцифровки неэффективных процессов. Архив рубрики ~Обо всем~ Огромный декагон сформировался вокруг южного полюса Сатурна. Атмосферная волна появилась недавно Новости робототехники Датчики давления могут повысить точность захвата роботов. Новости робототехники Компания Poseidon Aerospace привлекла 60 миллионов долларов перед первым испытательным полетом без пилота. Архив рубрики ~Коротко из Telegram~ Телевизоры LG могут следить за тем, что происходит у вас… Архив рубрики ~Коротко из Telegram~ Крошечная open‑source‑модель MiniCPM5-2B обошла конкурентов до 4B параметров ⚡ Канал… Архив рубрики ~Коротко из Telegram~ Бесплатная обработка голоса в аудио Если записываешь голос на встроенный… Архив рубрики ~Обо всем~ Конец универсального диагноза болезни Паркинсона: почему 2026 год станет годом, когда неврология перейдет на высокоточное исследование. Архив рубрики ~Коротко из Telegram~ Дата-центр Stargate в Абилине назвали «местом рождения AGI» Глава Crusoe… Архив рубрики ~Коротко из Telegram~ Небольшой дайджест — коротко о найденных новостях 1️⃣ Российский облачный… Архив рубрики ~Коротко из Telegram~ Офлайн-ИИ на вашем телефоне В новых айфонах и топовых Android-флагманах… Архив рубрики ~Коротко из Telegram~ Почему видео от нейросети выглядит «мёртво» — и как это… Новости робототехники Почему искусственный интеллект является безопасностью рабочей площадки Новости робототехники Сегодня ночью украинские БЭКи атаковали район Геленджика, рядом с Новороссийском Архив рубрики ~Обо всем~ Лидеры в области качества предостерегают от оцифровки неэффективных процессов. Архив рубрики ~Обо всем~ Огромный декагон сформировался вокруг южного полюса Сатурна. Атмосферная волна появилась недавно Новости робототехники Датчики давления могут повысить точность захвата роботов. Новости робототехники Компания Poseidon Aerospace привлекла 60 миллионов долларов перед первым испытательным полетом без пилота. Архив рубрики ~Коротко из Telegram~ Телевизоры LG могут следить за тем, что происходит у вас… Архив рубрики ~Коротко из Telegram~ Крошечная open‑source‑модель MiniCPM5-2B обошла конкурентов до 4B параметров ⚡ Канал… Архив рубрики ~Коротко из Telegram~ Бесплатная обработка голоса в аудио Если записываешь голос на встроенный… Архив рубрики ~Обо всем~ Конец универсального диагноза болезни Паркинсона: почему 2026 год станет годом, когда неврология перейдет на высокоточное исследование. Архив рубрики ~Коротко из Telegram~ Дата-центр Stargate в Абилине назвали «местом рождения AGI» Глава Crusoe… Архив рубрики ~Коротко из Telegram~ Небольшой дайджест — коротко о найденных новостях 1️⃣ Российский облачный… Архив рубрики ~Коротко из Telegram~ Офлайн-ИИ на вашем телефоне В новых айфонах и топовых Android-флагманах… Архив рубрики ~Коротко из Telegram~ Почему видео от нейросети выглядит «мёртво» — и как это…