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 * dtSaniyede 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.
Görev
Kolay- Döngüden önce
speed = 200değerini ayarla. - Her ok tuşunun topu 4 yerine
speed * dtkadar 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
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