Menu
CoddyTech

Delta Zamanı

Coddy'nin Pygame Journey'sinin Oyun Döngüsü bölümünün bir parçası. Ders 18 / 32.

clock.tick(60) beklemekten fazlasını yapar. Son çağrısından bu yana kaç milisaniye geçtiğini döndürür: saniyede 60 karede yaklaşık 17, geride kalan yavaş bir bilgisayarda ise daha fazla. 1000'e böldüğünüzde dt'yi, yani bir karenin saniye cinsinden süresini elde edersiniz:

dt = 0

while running:
    # olaylar, güncelleme, çizim, ekranı yenileme
    dt = clock.tick(60) / 1000

dt ilk karede 0'dır ve sonrasında bir önceki karenin süresini gösterir. Bunları topladığınızda oyunun başlamasından bu yana geçen süreyi elde edersiniz:

elapsed += dt

Gem Hunt'ta olduğu gibi kareleri saymak, zamanı yalnızca oyun saniyede tam 60 kare hızında çalışırken doğru ölçer. dt ile ölçülen süre her bilgisayarda doğrudur. Bu bölümün geri kalanında nesneler zamana göre hareket ettirilecek.

challenge icon

Görev

Kolay

Fitil, kare başına 1 piksel yanar. Zamana göre yanmasını sağlayın:

  1. Döngüden önce elapsed = 0 ve dt = 0 değerlerini ayarlayın.
  2. clock.tick(60) ifadesini dt = clock.tick(60) / 1000 ile değiştirin.
  3. Döngüde dt değerini elapsed değerine ekleyin ve fitilin genişliğini max(0, 480 - elapsed * 40) olarak ayarlayın; böylece saniyede 40 piksel yanar.

Kendin dene

import pygame

pygame.init()
screen = pygame.display.set_mode((480, 360))
pygame.display.set_caption("Fuse")
clock = pygame.time.Clock()

width = 480

running = True
while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False

    width = max(0, width - 1)

    screen.fill((30, 30, 46))
    pygame.draw.rect(screen, (255, 150, 40), (0, 170, width, 20))
    pygame.display.flip()
    clock.tick(60)

pygame.quit()

Oyun Döngüsü bölümündeki tüm dersler

Kendi başına pratik yap: Pygame playground