Метод pencolor ‒ установка цвета пера в модуле turtle языка Python. Кодирование цвета

Словарь урока

из модуля turtle:
  • teleport ‒ телепорт
  • write ‒ писать, записывать
  • forward ‒ вперед
  • backward ‒ назад
  • left ‒ налево
  • right ‒ направо
  • pensize ‒ размер (size) пера (pen)
  • pencolor ‒ цвет (color) пера (pen)
  • colormode ‒ режим (mode) цвета (color), цветовой режим
из информатики:
  • RGB ‒ цветовая модель, чье название составляют первые буквы слов red (красный), green (зеленый), blue (голубой)
  • HEX ‒ сокращение от слова hexadecimal (шестнадцатеричный)

Как вы уже могли понять, черепаха может менять не только толщину пера, но и цвет. Для этого используется метод pencolor. В качестве аргумента ему передается цвет. В программировании сам цвет может обозначаться или кодироваться по-разному. Самый простой вариант ‒ использовать английские названия цветов. При этом слово берется в кавычки.

teleport(-200, 0)
pensize(4)

write(pencolor())
forward(100)
pencolor('brown')
forward(100)
pencolor('dark orange')
forward(100)
pencolor('PaleGreen')
forward(100)

Если функция pencolor вызывается с пустыми скобками, то она возвращает текущий цвет. Так по-умолчанию он черный.

Модуль turtle языка Python использует цвета пакета tkinter. Посмотреть список всех допустимых названий можно на веб-странице https://www.tcl.tk/man/tcl8.4/TkCmd/colors.htm.

На скрине выше показано начало этой страницы. Напротив каждого цвета указаны три числа. Первое из них обозначает насыщенность в этом цвете красного (red), второе ‒ зеленого (green), третье ‒ синего (blue). Такая модель кодирования цвета называется RGB. Подразумевается, что, по-разному комбинируя концентрацию трех базовых цветов, можно получить любой другой.

В команде pencolor вместо названий можно использовать коды цветов. Причем не только те комбинации, которые соответствуют допустимым названиям. При указании цвета через RGB-код используются числа от 0 до 255 для каждого компонента (красного, зеленого и синего).

Однако в turtle по-умолчанию используется особый цветовой режим, в котором концентрация каждого компонента обозначается как доля от единицы. Чтобы переключиться на RGB-кодирование, надо выполнить команду colormode, передав ей число 255.

teleport(-200, 0)
pensize(5)

pencolor(0, 0.9, 0.2)
forward(100)

colormode(255)

pencolor(50, 200, 80)
forward(100)
pencolor(190, 30, 100)
forward(100)

colormode(1)

pencolor(0.8, 0.1, 0.4)
forward(100)

В примере выше первые два отрезка имеют зеленый цвет, так как его значение больше, чем у красного и синего. В первом случае цвет задан в долях единицы, во втором ‒ через 255-код. Третий и четвертый отрезок также почти одинакового цвета. В обоих случаях доминирует красный компонент.

Обратите внимание, как записываются десятичные дроби в Python, да и вообще ‒ в программировании. Дробная часть отделяется от целой точкой, а не запятой.

Часто цвет указывают в формате шестнадцатеричных чисел (hex-код). В начале такого кода ставится знак решетки. После нее идет обычно шесть цифр, иногда их может быть восемь, если кодируется еще и прозрачность цвета. Например, #4cd0a8.

В шестнадцатеричной системе счисления используются не только цифры от 0 до 9, также английские буквы от a до f включительно. Так число 10 ‒ это a. Число 15 ‒ это f.

Числа в шестнадцатеричной записи цвета обозначают те же числа, что в десятичном RGB-коде. Первые две цифры ‒ это количество красного цвета, вторые две цифры ‒ зеленого, последние две ‒ синего. Так #00ff00 ‒ это чистый зеленый цвет. Число ff в шестнадцатеричной ‒ это 255 в десятичной системе счисления. Поэтому десятичная запись абсолютно зеленого будет такой: 0, 255, 0. Самостоятельно делать расчеты для более сложных цветов не обязательно. Пользуясь веб-поиском или графическими редакторами, легко перевести цвет из одной системы в другую. Например, наберите в Google запрос rgb to hex, и вам сразу на странице выдачи будет выведен инструмент для такого преобразования.

В turtle если в метод pencolor передается шестнадцатеричный код цвета, он должен браться в кавычки, то есть быть строкой.

left(90)
pensize(5)

teleport(-50, 50)
pencolor('#64ff8c')
backward(100)

teleport(50, 50)
colormode(255)
pencolor(100, 255, 140)
backward(100)

Задания для самостоятельной работы

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

Turtle. Программирование на Python для школьников




Все разделы сайта