Menu
CoddyTech

Girar desde la imagen original

Parte de la sección Sprites e imágenes del Journey de Pygame de Coddy. Lección 9 de 36.

Una bola con pinchos que gira todo el tiempo rota un poco en cada fotograma. Hay una forma tentadora de escribirlo, pero falla:

ball = pygame.transform.rotate(ball, 2)  # incorrecto

En cada fotograma se rota la imagen rotada anterior. Cada rotación añade un borde transparente, así que la Surface crece aproximadamente un 3 por ciento por fotograma: duplica su tamaño después de medio segundo y alcanza casi 1.800 píxeles de ancho después de dos segundos. Los píxeles también se difuminan un poco más con cada rotación. El juego pronto se ralentiza hasta casi detenerse.

Conserva el original y el ángulo, y crea la imagen rotada a partir del original en cada fotograma:

angle += 2
spun = pygame.transform.rotate(ball, angle)
screen.blit(spun, spun.get_rect(center=(320, 240)))

Ahora spun está a una rotación del archivo original, cualquiera que sea el ángulo: nunca mide más de 67 por 67 píxeles ni queda más borrosa que tras una sola rotación. La misma regla se aplica a todas las transformaciones: trabaja a partir del original, no de la última copia.

challenge icon

Desafío

Intermedio
  1. Antes del bucle, establece angle = 0.
  2. En cada fotograma, suma 2 a angle.
  3. Gira el ball original en angle y dibuja el resultado con su centro en (320, 240). Nunca cambies ball.

Pruébalo tú mismo

import pygame

pygame.init()
screen = pygame.display.set_mode((640, 480))
pygame.display.set_caption("Spinning Spikes")
clock = pygame.time.Clock()

ball = pygame.image.load("assets/images/spike_ball.png").convert_alpha()

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

    screen.fill((20, 22, 40))
    screen.blit(ball, ball.get_rect(center=(320, 240)))
    pygame.display.flip()
    clock.tick(60)

pygame.quit()
quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Sprites e imágenes

Practica por tu cuenta: Playground de Pygame