Палитра и заливка в черепашьей графике
Основные методы задания цветов
Наиболее часто используемый способ задания цвета в модуле turtle - это указание имени цвета в виде строки (например, "red", "blue") или передача кортежа из трёх целых чисел (красный, зелёный, синий) в диапазоне от 0 до 255. Для работы с последним вариантом необходимо предварительно установить цветовую модель через turtle.colormode(255).
import turtle
turtle.colormode(255)
turtle.pencolor((255, 0, 0)) # красный
Python turtle screen (работа с экраном в модуле turtle python)
Этот подход подходит для точного указания оттенков, когда нужно повторить цвет из графического редактора. Строковые имена удобны для быстрого прототипирования - turtle поддерживает около 140 стандартных названий (например, "light salmon").
Как задать цвет через шестнадцатеричный код?
Вместо строкового имени или кортежа можно использовать hex-строку, например "#FFA500" (оранжевый). Для этого также требуется colormode(255).
turtle.pencolor("#FFA500")
Python turtle codes (коды для turtle в python)
Цель: использование цветов, скопированных из веб-палитры или CSS.
Типичная ошибка: пропуск символа # или неверное количество символов. Turtle выдаст исключение turtle.TurtleGraphicsError.
Как задать цвет в диапазоне от 0 до 1?
Можно переключиться на модель, где компоненты RGB принимают значения от 0.0 до 1.0. Для этого вызывают turtle.colormode(1.0) (или 1).
turtle.colormode(1.0)
turtle.pencolor(0.5, 0.0, 0.5) # фиолетовый
Turtle python goto (команда goto в модуле turtle python)
Цель: математически вычислять цвета, например, при создании градиентов на основе тригонометрических функций.
Проблема: если забыть установить colormode, кортеж из целых чисел (0..255) будет интерпретирован как дробный, и цвета станут искажёнными (например, (255,0,0) превратится в почти белый).
Как получить случайный цвет для рисования?
Используйте модуль random для генерации случайного кортежа RGB. Предварительно установите colormode(255).
import random
random_color = (random.randint(0, 255), random.randint(0, 255), random.randint(0, 255))
turtle.pencolor(random_color)
графика turtle python (рисование с помощью модуля turtle в python)
Цель: создание разноцветных узоров, тестирование визуализации.
Ошибка: если генерировать только один канал (например, только красный), цвета будут лишь оттенками красного.
Как изменить цвет фона окна?
Фоновый цвет холста задаётся через turtle.bgcolor(). Принимает те же форматы, что и pencolor.
turtle.bgcolor("black")
# или
import turtle
turtle.Screen().bgcolor("#333333")
Цель: контрастный фон для светлых линий или имитация ночного режима.
Проблема: если фон устанавливается после рисования, уже нарисованные элементы останутся без изменений. Лучше устанавливать фон в начале скрипта.
Продвинутые примеры с цветами
Ниже приведены развёрнутые примеры, демонстрирующие использование цветов в различных сценариях.
Пример 1. Радуга с плавным переходом цветов
Пошагово рисуем дуги, меняя цвет через HSV преобразование. Цветовая модель HSV переводится в RGB с помощью модуля colorsys.
import turtle
import colorsys
turtle.speed(0)
turtle.colormode(1.0)
turtle.pensize(20)
for i in range(36):
h = i / 36.0
r, g, b = colorsys.hsv_to_rgb(h, 1.0, 1.0)
turtle.pencolor(r, g, b)
turtle.circle(100, 10) # рисуем дугу на 10 градусов
turtle.hideturtle()
turtle.done()
Результат: круг из 36 дуг разных цветов, образующий радужное кольцо.
Пример 2. Случайный залитый квадрат
Рисуем квадрат, заполненный случайным цветом. Используем turtle.begin_fill() и end_fill().
import turtle
import random
turtle.speed(1)
turtle.colormode(255)
for _ in range(5):
x = random.randint(-200, 200)
y = random.randint(-200, 200)
turtle.penup()
turtle.goto(x, y)
turtle.pendown()
r, g, b = random.randint(0,255), random.randint(0,255), random.randint(0,255)
turtle.fillcolor((r,g,b))
turtle.begin_fill()
for _ in range(4):
turtle.forward(50)
turtle.left(90)
turtle.end_fill()
turtle.done()
Результат: пять квадратов в случайных местах, каждый залит случайным цветом.
Пример 3. Градиентная линия
При перемещении черепашки по прямой цвет плавно меняется от красного к синему. Используем интерполяцию.
import turtle
turtle.speed(0)
turtle.colormode(255)
start_r, start_g, start_b = 255, 0, 0
end_r, end_g, end_b = 0, 0, 255
steps = 100
for i in range(steps + 1):
factor = i / steps
r = int(start_r * (1 - factor) + end_r * factor)
g = int(start_g * (1 - factor) + end_g * factor)
b = int(start_b * (1 - factor) + end_b * factor)
turtle.pencolor(r, g, b)
turtle.forward(5)
turtle.done()
Результат: линия длиной 505 пикселей, цвет которой плавно переходит из красного в синий.
Пример 4. Цветная спираль
Спираль, у которой с каждым витком увеличивается зелёная составляющая.
import turtle
turtle.speed(0)
turtle.colormode(255)
green = 0
for i in range(200):
turtle.pencolor(255, green, 0)
turtle.forward(i)
turtle.left(91)
if green < 255:
green += 1
turtle.done()
Результат: спираль, начинающаяся красной, затем переходящая в жёлтую (из-за увеличения зелёного).