Menu
CoddyTech

Girar alrededor del centro

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

Una nave que gira necesita una imagen girada. pygame.transform.rotate(image, angle) te da una Surface nueva: la imagen girada angle grados en sentido antihorario. Un ángulo negativo la gira en sentido horario. La imagen original no cambia.

Un cuadrado girado no cabe en un cuadrado del mismo tamaño, así que la nueva Surface es más grande: la nave girada 45 grados mide 90 por 90 píxeles. Si la dibujas en la antigua esquina superior izquierda, su centro se desplaza hacia abajo y a la derecha; al girar, la nave se tambalea por la ventana.

Mantén el centro en el mismo lugar. Pídele a la imagen girada un Rect centrado en el mismo punto:

rotated = pygame.transform.rotate(ship, angle)
rotated_rect = rotated.get_rect(center=(320, 240))
screen.blit(rotated, rotated_rect)

Gira el ship original en el valor completo de angle en cada fotograma. La dirección de la nave es el número de angle, y la imagen se crea a partir de él.

challenge icon

Desafío

Intermedio
  1. Antes del bucle, establece angle = 0.
  2. Mantener pulsada la tecla izquierda suma 3 a angle en cada fotograma (en sentido antihorario); mantener pulsada la tecla derecha resta 3.
  3. En cada fotograma, gira ship según angle y dibuja el resultado con su centro en (320, 240).

Pruébalo tú mismo

import pygame

pygame.init()
screen = pygame.display.set_mode((640, 480))
pygame.display.set_caption("Turn the Ship")
clock = pygame.time.Clock()

ship = pygame.image.load("assets/images/ship.png").convert_alpha()
ship_rect = ship.get_rect(center=(320, 240))

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

    screen.fill((20, 22, 40))
    screen.blit(ship, ship_rect)
    pygame.display.flip()
    clock.tick(60)

pygame.quit()

Todas las lecciones de Sprites e imágenes

Practica por tu cuenta: Playground de Pygame