Menu
CoddyTech

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.

challenge icon

Görev

Kolay

Ortadaki gri yayıcıdan bir kıvılcım fırlat:

  1. Boşluk tuşuna basıldığında, {"x": 240, "y": 180, "vx": 2, "vy": -3, "life": 30} öğesini particles listesine ekle.
  2. Her karede, her parçacığı vx ve vy değerleri kadar hareket ettir ve life değerini 1 azalt.
  3. 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

Kendi başına pratik yap: Pygame playground