Mờ dần và thu nhỏ
Thuộc phần Âm thanh và cảm giác chơi trong hành trình Pygame của Coddy. Bài học 10 trên 23.
Một tia lửa giữ nguyên cho đến khi biến mất trông như một chấm vừa tắt. Tia lửa thật nguội dần: chúng co lại và đổi màu khi tắt. Bạn đã có con số thể hiện điều đó, life của hạt. Hãy tính kích thước và màu sắc từ giá trị này khi vẽ.
Bán kính có thể thay đổi trực tiếp theo giá trị life:
radius = p["life"] // 10 + 1Khi còn 40 khung hình, bán kính là 5; khi còn 9 khung hình trở xuống, bán kính là 1. + 1 giữ bán kính ở mức 1 trở lên: đường tròn có bán kính 0 sẽ không vẽ gì cả, và tia lửa sẽ biến mất sớm.
Để chọn màu, hãy chọn trong một vài mức, từ nóng đến lạnh:
if p["life"] > 25:
color = (255, 220, 80)
elif p["life"] > 10:
color = (255, 140, 40)
else:
color = (180, 50, 40)Hãy kiểm tra số lớn nhất trước. Nếu viết theo thứ tự ngược lại, life > 10 cũng sẽ nhận giá trị life là 30, và nhánh màu vàng sẽ không bao giờ chạy.
Thử thách
Trung bìnhKhi bay đi, hãy để các tia lửa nguội dần.
- Vẽ mỗi tia lửa với bán kính
life // 10 + 1. - Tô màu vàng
(255, 220, 80)khi thời gian sống của tia lửa còn trên 25, màu cam(255, 140, 40)khi còn trên 10 và màu đỏ sẫm(180, 50, 40)sau đó.
Nhấn Chơi rồi nhấn Space: vòng tròn thu nhỏ và chuyển từ vàng sang đỏ. 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("Ring of Sparks")
clock = pygame.time.Clock()
DIRECTIONS = [(3, 0), (2, 2), (0, 3), (-2, 2), (-3, 0), (-2, -2), (0, -3), (2, -2)]
particles = []
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
elif event.type == pygame.KEYDOWN and event.key == pygame.K_SPACE:
for vx, vy in DIRECTIONS:
particles.append({"x": 240, "y": 180, "vx": vx, "vy": vy, "life": 40})
for p in particles:
p["x"] += p["vx"]
p["y"] += p["vy"]
p["life"] -= 1
screen.fill((20, 20, 36))
for p in particles:
if p["life"] > 0:
pygame.draw.circle(screen, (255, 220, 80), (p["x"], p["y"]), 4)
pygame.display.flip()
clock.tick(60)
pygame.quit()
Tất cả bài học trong Âm thanh và cảm giác chơi
4Rung màn hình và chớp sáng khi trúng đòn
Rung màn hìnhChớp sáng khi trúng đònKhựng hình khi trúng đònGiữ hiệu ứng tinh tế6Hoàn thiện đội tuần tra sao
Âm thanh đội tuần tra saoTia lửa mỗi lần va chạmTự luyện tập: Playground Pygame