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.
Thử thách
DễLàm cho hình tròn phát sáng từ màu đỏ sang màu vàng.
- Trước vòng lặp, đặt
glow = 0. - Trong vòng lặp, trước khi vẽ, cộng 3 vào
glowvà giữ giá trị trong khoảng từ 0 đến 255 bằng% 256. - 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()
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
1Di chuyển hình vuông
Mở cửa sổTô nền4Di chuyển theo thời gian
Thời gian deltaPixel mỗi giâyVector2Gia tốc và ma sátDi chuyển vòng quanh màn hình2Hình dạng và màu sắc
Hình tròn, đường thẳng và đa giácĐường viền và gócMột khung cảnh với các hìnhMàu sắc thay đổiTự luyện tập: Playground Pygame