Menu
CoddyTech

Màu sắc thay đổi

Thuộc phần Vòng lặp trò chơi trong hành trình Pygame của Coddy. Bài học 12 trên 35.

Một màu gồm ba số, nên một biến có thể là một trong số đó. Thay đổi biến ở mỗi khung hình thì màu trên màn hình cũng thay đổi.

glow = 0

while running:
    # sự kiện
    glow = (glow + 3) % 256
    pygame.draw.circle(screen, (255, glow, 0), (240, 180), 60)

Mỗi khung hình làm phần màu xanh lá tăng thêm 3, nên hình tròn chuyển từ đỏ qua cam sang vàng.

Mỗi thành phần màu phải luôn nằm trong khoảng từ 0 đến 255. Khi đạt 256, pygame sẽ dừng và báo ValueError: invalid color. Toán tử % cho kết quả là số dư của phép chia: 256 % 256 bằng 0 và 258 % 256 bằng 2. Vì vậy, (glow + 3) % 256 bắt đầu lại gần 0 thay vì vượt quá 255, khiến hình tròn phát sáng từ đỏ đến vàng hết lần này đến lần khác.

challenge icon

Thử thách

Dễ

Làm cho hình tròn phát sáng từ màu đỏ sang màu vàng.

  1. Trước vòng lặp, đặt glow = 0.
  2. Trong vòng lặp, trước khi vẽ, cộng 3 vào glow và giữ giá trị trong khoảng từ 0 đến 255 bằng % 256.
  3. Vẽ hình tròn bằng (255, glow, 0).

Nhấn "Chơi": hình tròn phát sáng từ màu đỏ sang màu vàng, lặp đi lặp lại. Sau đó nhấn "Kiểm tra".

Tự làm thử

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 iconTự kiểm tra

Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.

Tất cả bài học trong Vòng lặp trò chơi

Tự luyện tập: Playground Pygame