Menu
CoddyTech

Píxeles por segundo

Parte de la sección El bucle del juego del Journey de Pygame de Coddy. Lección 19 de 32.

Una velocidad de 4 píxeles por fotograma equivale a 240 píxeles por segundo solo a 60 fotogramas por segundo. A 30, el mismo juego funciona a la mitad de velocidad. Expresa las velocidades en píxeles por segundo y multiplícalas por dt para obtener el desplazamiento de este fotograma:

speed = 200

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

A 60 fotogramas por segundo, dt es aproximadamente 0.017 y la pelota se mueve unos 3.4 píxeles por fotograma. A 30, dt es aproximadamente 0.033 y se mueve unos 6.7: el doble de distancia en cada fotograma, los mismos 200 píxeles por segundo.

Las posiciones se convierten en decimales, como 243.4. No hay problema: pygame acepta posiciones decimales y dibuja en píxeles enteros.

challenge icon

Desafío

Fácil
  1. Antes del bucle, establece speed = 200.
  2. Haz que cada flecha mueva la pelota speed * dt en lugar de 4.

Pruébalo tú mismo

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

Todas las lecciones de El bucle del juego

Practica por tu cuenta: Playground de Pygame