Menu
CoddyTech

Delta Waktu

Termasuk bagian Perulangan Game dalam perjalanan Pygame di Coddy. Pelajaran 18 dari 32.

clock.tick(60) melakukan lebih dari sekadar menunggu. Fungsi ini mengembalikan jumlah milidetik yang berlalu sejak pemanggilan sebelumnya: sekitar 17 pada 60 frame per detik, lebih lama pada komputer lambat yang tertinggal. Bagi dengan 1000, maka kamu mendapatkan dt, durasi satu frame dalam detik:

dt = 0

while running:
    # peristiwa, update, draw, flip
    dt = clock.tick(60) / 1000

dt bernilai 0 pada frame pertama dan berisi durasi frame terakhir setelahnya. Jumlahkan, maka kamu mendapatkan waktu sejak game dimulai:

elapsed += dt

Menghitung frame, seperti yang dilakukan Gem Hunt, hanya mengukur waktu saat game berjalan dengan kecepatan penuh 60 frame per detik. Waktu yang diukur dengan dt akurat di komputer mana pun. Bagian selanjutnya dalam bab ini menggerakkan berbagai hal berdasarkan waktu.

challenge icon

Tantangan

Mudah

Sumbu menyala 1 piksel setiap frame. Buat sumbu menyala berdasarkan waktu:

  1. Sebelum perulangan, tetapkan elapsed = 0 dan dt = 0.
  2. Ganti clock.tick(60) dengan dt = clock.tick(60) / 1000.
  3. Dalam perulangan, tambahkan dt ke elapsed, lalu tetapkan lebar sumbu ke max(0, 480 - elapsed * 40), sehingga sumbu menyala sepanjang 40 piksel per detik.

Coba sendiri

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()

Semua pelajaran di Perulangan Game

Latihan sendiri: Playground Pygame