среда, 3 июля 2013 г.

Рисуем простую графику с помощью Python 3(turtle)

Добрый день.

Начал изучать Python и увидел замечательную встроенную библиотеку turtle (черепашка), в которой можно рисовать простые рисунки, работа с ней очень похожа на то, как можно рисовать в Paint.

Хочу привести пару примеров, того что можно нарисовать, с небольшим пояснением.

Были использованы такие методы как:
turtle.color(color) - Задаем цвет курсора color ;
turtle.penup() - Поднимаем курсор, что бы при перемещении курсора не происходило рисование линий;
turtle.pendown() - Опускаем курсор, что бы при перемещении курсора происходило рисование линий;
turtle.goto(x, y) - Перейти в точку с координатами x и y;
turtle.circle(radius) - Нарисовать круг с радиусом = radius;
turtle.right(degrees) - Повернуть курсор на право на degrees градусов;
turtle.left(degrees) - Повернуть курсор на лево на degrees градусов;
turtle.forward(length) - Нарисовать линий длиной = length;
turtle.done() - Этим методом должны завершаться все программы использующие turtle.

Для начала нарисуем символ олимпиады, вот что мы получим в конце:
Алгоритм рисования довольно прост:

  1.  Задаем цвет, которым будем рисовать;
  2.  Поднимаем черепашку (курсор), что бы во время перехода не рисовались линии;
  3.  Переходим на интересующие нас координаты x и y;
  4.  Опускаем черепашку (курсор);
  5.  Рисуем круг с радиусом 45.


И так выполняем для каждого круга. Вот небольшой исходный код программы:
import turtle # Импортируем библиотеку turtle

turtle.color("blue") # Устанавливаем цвет черепашки
turtle.penup() # Поднимаем курсор
turtle.goto(-110, -25) # Переходим по нужным координатам
turtle.pendown() # Опускаем курсор
turtle.circle(45) # Рисуем круг с радиусом 45

turtle.color("black")
turtle.penup()
turtle.goto(0, -25)
turtle.pendown()
turtle.circle(45)

turtle.color("red")
turtle.penup()
turtle.goto(110, -25)
turtle.pendown()
turtle.circle(45)

turtle.color("yellow")
turtle.penup()
turtle.goto(-55, -75)
turtle.pendown()
turtle.circle(45)

turtle.color("green")
turtle.penup()
turtle.goto(55, -75)
turtle.pendown()
turtle.circle(45)

turtle.color("black")
turtle.penup()
turtle.goto(0, 80)
turtle.pendown()
turtle.write("Olympic Symbol") # Вместо еще одного круга выводим надпись "Olympic Symbol"

turtle.done()


Теперь нарисуем домик (я очень плохо рисую, кстати :) ):
Тут я использовал еще несколько новых функций:
import turtle

turtle.penup()
turtle.goto(35, 35)
turtle.right(90) # Повернуть курсор на 90 градусов вправо
turtle.pendown()
turtle.forward(70) # Пройти вперед расстояние 70, если курсор опущен, то будет нарисована линия по пути слоедования

turtle.right(90)
turtle.forward(70)

turtle.right(90)
turtle.forward(70)

turtle.right(90)
turtle.forward(70)

turtle.penup()
turtle.goto(45, 35)
turtle.right(225)
turtle.pendown()
turtle.forward(70)

turtle.left(90)
turtle.forward(70)

turtle.left(135) # Повернуть курсор влево на 135 градусов
turtle.forward(100)

turtle.done()


Ссылки:
Обожаю Python за его мега крутую документацию, вот по turtle: тыц

13 комментариев:

  1. Отличная статья!
    Все коды запускаются без проблем. Часто бывает так, что автор приводит пример кода, но при попытке его реализации постоянно происходят ошибки, здесь же все четко. Сейчас буду пытаться из этого всего сделать Hello World в графике.

    ОтветитьУдалить
  2. Можете показать конечный код без объяснений

    ОтветитьУдалить
    Ответы
    1. То уже и есть конечный код!! Там есть хєштег єто закоментировано оно не читаеться програмой) ви можете єто скопировать и вставить в строку дейсвий!

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

    ОтветитьУдалить
    Ответы
    1. Создаёшь функции для рисования каждой из фигур, потом проверяешь input и в зависимости от того, что ввел пользователь, вызываешь какую-то из этих функций.

      Удалить
  4. а как круги если одного цвета в повтор загнать, что бы 4 раза не писать одно и то же?..

    ОтветитьУдалить
  5. Во-первых, нихрена не запускается, во вторых про pep8 автор вообще ничего не слышал!

    ОтветитьУдалить
  6. яяяяяяяяяяя не вижу нужные команды!!!!!!!!!!

    ОтветитьУдалить
  7. можете помочь
    я не знаю как сделать чтобы круг рисовался в правую сторону

    ОтветитьУдалить
  8. можете подсказать? Как сделать так чтобы когда Пользователь вводит название фигуры: «Квадрат, Прямоугольник или Треугольник». В зависимости от пользовательского ввода с помощью черепашки рисуется данная фигура.

    ОтветитьУдалить