Метод pencolor ‒ установка цвета пера в модуле turtle языка Python. Кодирование цвета
Словарь урока
из модуля turtle: |
|
---|---|
из информатики: |
|
Как вы уже могли понять, черепаха может менять не только толщину пера, но и цвет. Для этого используется метод 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)
Задания для самостоятельной работы
- Догадайтесь, как кодируются черный и белый цвет, оттенки серого. Практически проверьте ваши предположения, заставив черепаху что-нибудь нарисовать этими цветами.
- Запрограммируйте вывод на холсте квадрата, стороны которого имеют разные оттенки одного цвета.
- Подумайте, как была создана такая черепашья графика, как на рисунке ниже. Реализуйте что-нибудь подобное.