Menu
CoddyTech

Piksel per Detik

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

Kecepatan 4 piksel per frame setara dengan 240 piksel per detik hanya pada 60 frame per detik. Pada 30 frame per detik, game yang sama berjalan dengan kecepatan setengahnya. Gunakan kecepatan dalam piksel per detik, lalu kalikan dengan dt untuk mendapatkan langkah pada frame ini:

speed = 200

if keys[pygame.K_RIGHT]:
    x += speed * dt

Pada 60 frame per detik, dt sekitar 0.017 dan bola bergerak sekitar 3.4 piksel per frame. Pada 30 frame per detik, dt sekitar 0.033 dan bola bergerak sekitar 6.7 piksel: dua kali lebih jauh per frame, dengan jarak yang sama, yaitu 200 piksel per detik.

Posisi menjadi angka desimal seperti 243.4. Itu tidak masalah: pygame menerima posisi desimal dan menggambar pada piksel utuh.

challenge icon

Tantangan

Mudah
  1. Sebelum perulangan, tetapkan speed = 200.
  2. Buat setiap tombol panah menggerakkan bola sejauh speed * dt, bukan 4.

Coba sendiri

import pygame

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

x, y = 240, 180
dt = 0

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

    keys = pygame.key.get_pressed()
    if keys[pygame.K_LEFT]:
        x -= 4
    if keys[pygame.K_RIGHT]:
        x += 4
    if keys[pygame.K_UP]:
        y -= 4
    if keys[pygame.K_DOWN]:
        y += 4

    screen.fill((30, 30, 46))
    pygame.draw.circle(screen, (255, 196, 0), (x, y), 16)
    pygame.display.flip()
    dt = clock.tick(60) / 1000

pygame.quit()

Semua pelajaran di Perulangan Game

Latihan sendiri: Playground Pygame