Menu
CoddyTech

Меняющиеся цвета

Часть раздела Игровой цикл путешествия по Pygame на Coddy. Урок 12 из 32.

Цвет состоит из трёх чисел, поэтому переменная может содержать одно из них. Меняй значение переменной в каждом кадре, и цвет на экране будет меняться.

glow = 0

while running:
    # события
    glow = (glow + 3) % 256
    pygame.draw.circle(screen, (255, glow, 0), (240, 180), 60)

В каждом кадре к зелёной составляющей прибавляется 3, поэтому круг меняет цвет с красного через оранжевый на жёлтый.

Каждая составляющая цвета должна оставаться в диапазоне от 0 до 255. При значении 256 pygame выдаёт ошибку ValueError: invalid color. Оператор % возвращает остаток от деления: 256 % 256 равно 0, а 258 % 256 равно 2. Поэтому (glow + 3) % 256 снова принимает значение около 0, а не превышает 255, и круг снова и снова светится от красного до жёлтого.

challenge icon

Задание

Легко
  1. Перед циклом задайте glow = 0.
  2. В цикле перед рисованием прибавьте 3 к glow и удерживайте его в диапазоне от 0 до 255 с помощью % 256.
  3. Нарисуйте круг цветом (255, glow, 0).

Попробуйте сами

import pygame

pygame.init()
screen = pygame.display.set_mode((480, 360))
pygame.display.set_caption("Glow")
clock = pygame.time.Clock()

running = True
while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False

    screen.fill((30, 30, 46))
    pygame.draw.circle(screen, (255, 120, 0), (240, 180), 60)
    pygame.display.flip()
    clock.tick(60)

pygame.quit()
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Игровой цикл

Потренируйтесь самостоятельно: Песочница Pygame