Soluklaşma ve Küçülme
Coddy'nin Pygame Journey'sinin Ses ve Oyun Hissi bölümünün bir parçası. Ders 10 / 23.
Sönene kadar aynı kalan bir kıvılcım, söndürülmüş bir nokta gibi görünür. Gerçek kıvılcımlar soğur: sönerken küçülür ve renk değiştirir. Bunun için gereken sayı zaten sende var: parçacığın life değeri. Çizerken boyutu ve rengi bu değerden hesapla.
Yarıçap doğrudan yaşam süresine bağlı olabilir:
radius = p["life"] // 10 + 1Kalan 40 kare için yarıçap 5 olur; 9 veya daha az kare kaldığında ise 1 olur. + 1, yarıçapı 1 veya daha fazla tutar: yarıçapı 0 olan bir daire çizilmez ve kıvılcım erken söner.
Renk için sıcaktan soğuğa doğru birkaç adımdan seçim yap:
if p["life"] > 25:
color = (255, 220, 80)
elif p["life"] > 10:
color = (255, 140, 40)
else:
color = (180, 50, 40)Önce en büyük sayıyı kontrol et. Ters sırayla yazıldığında life > 10, 30 yaşam süresini de yakalar ve sarı dalı hiçbir zaman çalışamaz.
Görev
OrtaBoşluk tuşu, her biri 40 kare yaşayan 8 kıvılcımdan oluşan bir halka oluşturur. Uçarken renklerinin giderek soğumasını sağla:
- Her kıvılcımı
life // 10 + 1yarıçapıyla çiz. - Ömrü 25'in üzerindeyken sarı
(255, 220, 80), 10'un üzerindeyken turuncu(255, 140, 40), daha sonra koyu kırmızı(180, 50, 40)renkte çiz.
Kendin dene
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()
Ses ve Oyun Hissi bölümündeki tüm dersler
4Ekran Sarsıntısı ve Darbe Parlaması
Ekran SarsıntısıDarbe ParlamasıDarbe DurdurmasıAbartıdan Kaçının6Yıldız Devriyesini Geliştir
Yıldız Devriyesi SesleriHer Vuruşta KıvılcımlarKendi başına pratik yap: Pygame playground