Menu
CoddyTech

Saniyedeki Piksel Sayısı

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

Kare başına 4 piksel hız, yalnızca saniyede 60 karede saniyede 240 pikseldir. Saniyede 30 karede aynı oyun yarı hızda çalışır. Bunun yerine hızları saniyede piksel cinsinden belirtin ve bu karenin adımını bulmak için dt ile çarpın:

speed = 200

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

Saniyede 60 karede dt yaklaşık 0.017 olur ve top kare başına yaklaşık 3.4 piksel hareket eder. Saniyede 30 karede dt yaklaşık 0.033 olur ve top 6.7 piksel hareket eder: her karede iki kat daha uzağa, saniyede yine aynı 200 piksel.

Konumlar 243.4 gibi ondalık değerlere dönüşür. Bu sorun değildir: pygame ondalıklı konumları kabul eder ve tam piksellerde çizer.

challenge icon

Görev

Kolay
  1. Döngüden önce speed = 200 değerini ayarla.
  2. Her ok tuşunun topu 4 yerine speed * dt kadar hareket ettirmesini sağla.

Kendin dene

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

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

Kendi başına pratik yap: Pygame playground