Parçacık Patlaması
Coddy'nin Pygame Journey'sinin Ses ve Oyun Hissi bölümünün bir parçası. Ders 9 / 23.
Tek bir parçacık bir noktadır. Bir patlama, aynı karede aynı noktada oluşturulan ve her biri kendi yönünde uçan birçok parçacıktan oluşur. Bunları bir for döngüsüyle oluşturun ve her birine rastgele bir hız verin:
for i in range(20):
particles.append({
"x": x,
"y": y,
"vx": random.uniform(-3, 3),
"vy": random.uniform(-3, 3),
"life": random.randint(20, 40),
})random.uniform(-3, 3), -3 ile 3 arasında rastgele bir ondalık sayıdır; bu nedenle parçacık yavaş ya da hızlı şekilde herhangi bir yönde hareket edebilir. randint yalnızca tam sayılar verir ve patlama birkaç düz çizgi boyunca dışarı doğru uçar.
Rastgele değer üreten çağrılar döngünün içinde olmalıdır. Döngüden önce bir kez vx seçerseniz 20 parçacığın tamamı aynı hıza sahip olur: tek bir nokta hâlinde birlikte uçarlar.
Rastgele bir ömür, patlamanın eşit olmayan biçimde sönmesini sağlar ve bu doğal görünür: merkeze yakın yavaş parçacıklar ve kenardaki hızlı parçacıklar farklı zamanlarda söner.
Fare tıklaması bir pygame.MOUSEBUTTONDOWN olayıdır ve event.pos tıklanan noktadır.
Görev
OrtaBir tıklama, yükselen bir parçacık oluşturur. Bunu bir patlamaya dönüştür:
- Tıklama anında, tıklanan noktaya 20 parçacık ekle.
- Her birine
random.uniform(-3, 3)değerindenvxvevy,random.randint(20, 40)değerinden de birlifever.
Kendin dene
import random
import pygame
pygame.init()
screen = pygame.display.set_mode((480, 360))
pygame.display.set_caption("Fireworks")
clock = pygame.time.Clock()
particles = []
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
elif event.type == pygame.MOUSEBUTTONDOWN:
x, y = event.pos
particles.append({"x": x, "y": y, "vx": 0, "vy": -2, "life": 30})
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, 160, 60), (p["x"], p["y"]), 3)
pygame.display.flip()
clock.tick(60)
pygame.quit()
Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
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