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) / 1000dt 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 += dtGem 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.
Görev
KolayFitil, kare başına 1 piksel yanar. Zamana göre yanmasını sağlayın:
- Döngüden önce
elapsed = 0vedt = 0değerlerini ayarlayın. clock.tick(60)ifadesinidt = clock.tick(60) / 1000ile değiştirin.- Döngüde
dtdeğerinielapseddeğerine ekleyin ve fitilin genişliğinimax(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
1Bir Kareyi Hareket Ettir
Bir Pencere AçArka Planı Doldur4Zamana Göre Hareket
Delta ZamanıSaniyedeki Piksel SayısıVector2İvme ve SürtünmeEkranın Bir Kenarından Çıkıp Diğerinden GirmeKendi başına pratik yap: Pygame playground