Bir Parçacık
Coddy'nin Pygame Journey'sinin Ses ve Oyun Hissi bölümünün bir parçası. Ders 8 / 23.
Kıvılcımlar, toz, duman ve konfeti parçacıklardan oluşur: dışarı uçuşan, kısa süre yaşayan ve kaybolan pek çok küçük şeyden. Bir parçacık için yalnızca birkaç sayı gerekir: nerede olduğu, her karede ne kadar hareket ettiği ve yaşamak için kaç karesinin kaldığı. Bunları bir sözlük tutar:
{"x": 240, "y": 180, "vx": 2, "vy": -3, "life": 30}vx ve vy onun hızıdır: her karede 2 piksel sağa ve 3 piksel yukarı. Her parçacığı tek bir listede tut ve her karede hepsini hareket ettirip ömürlerinden bir kare düş:
for p in particles:
p["x"] += p["vx"]
p["y"] += p["vy"]
p["life"] -= 1Ömrü 0'dan büyük olduğu sürece her parçacığı küçük bir daire olarak çiz:
for p in particles:
if p["life"] > 0:
pygame.draw.circle(screen, (255, 160, 60), (p["x"], p["y"]), 3)Bir parçacığın görseli ve sınıfı yoktur. Maliyeti düşüktür; bu nedenle bir oyunda aynı anda yüzlercesi bulunabilir.
Görev
KolayOrtadaki gri yayıcıdan bir kıvılcım fırlat:
- Boşluk tuşuna basıldığında,
{"x": 240, "y": 180, "vx": 2, "vy": -3, "life": 30}öğesiniparticleslistesine ekle. - Her karede, her parçacığı
vxvevydeğerleri kadar hareket ettir velifedeğerini 1 azalt. - Yaşam süresi 0'dan büyük olan her parçacığı, yarıçapı 3 olan turuncu bir
(255, 160, 60)daire olarak çiz.
Kendin dene
import pygame
pygame.init()
screen = pygame.display.set_mode((480, 360))
pygame.display.set_caption("Sparks")
clock = pygame.time.Clock()
particles = []
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, (120, 120, 140), (240, 180), 8)
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