Escalar una imagen
Parte de la sección Sprites e imágenes del Journey de Pygame de Coddy. Lección 8 de 36.
El jefe de un nivel debe verse grande, y un contador de vidas necesita naves pequeñas. Los mismos archivos sirven para ambas cosas: el escalado crea una copia redimensionada.
boss = pygame.transform.scale_by(boss, 2)
icon = pygame.transform.scale(ship, (32, 32))scale_by(image, 2) multiplica ambos lados por 2: el jefe de 64 por 64 se convierte en uno de 128 por 128. scale(image, (w, h)) lo deja exactamente en w por h píxeles, aunque eso lo estire.
El escalado es lento en comparación con un blit, y cada copia nueva difumina o bloquea un poco más los píxeles. Escala una sola vez, antes del bucle, desde el archivo original, y dibuja la copia escalada en cada fotograma.
Crea el Rect después del escalado. Un Rect creado a partir de la imagen de 64 por 64 tendría el tamaño antiguo, y center=(320, 150) dejaría al jefe grande descentrado.
Desafío
Fácil- Escala al jefe por 2 antes del bucle y después crea
boss_recta partir de la imagen escalada, centrado en(320, 150). - Crea
icon: el barco escalado a(32, 32). - Dibuja
icontres veces, con la esquina superior izquierda en(10, 10),(50, 10)y(90, 10).
Pruébalo tú mismo
import pygame
pygame.init()
screen = pygame.display.set_mode((640, 480))
pygame.display.set_caption("Boss Fight")
clock = pygame.time.Clock()
boss = pygame.image.load("assets/images/boss.png").convert_alpha()
boss_rect = boss.get_rect(center=(320, 150))
ship = pygame.image.load("assets/images/ship.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(boss, boss_rect)
pygame.display.flip()
clock.tick(60)
pygame.quit()
Todas las lecciones de Sprites e imágenes
1Cargar imágenes
Cargar una imagenColocarla con un rectánguloMover la imagenRepetir un fondo en mosaicoPíxeles transparentes2Girar, voltear y escalar
Girar alrededor del centroApuntar en la dirección del vueloEscalar una imagenGirar desde la imagen original5Colisiones precisas a nivel de píxel
Los rectángulos parecen injustosMáscarasSprites precisos a nivel de píxelHitboxes circulares3Clases para objetos del juego
Tu primera claseMétodosSelf es el objetoUna lista de objetosObjetos con imágenesUna subclase6Animación con hojas de sprites
Recortar una hoja de spritesUn contador de fotogramasAnimar con el tiempoUna explosión de una sola vezPractica por tu cuenta: Playground de Pygame