Saltar la navegación

3.2. Mostrar imágenes

Cargar, posicionar y mostrar imágenes en la ventana del juego usando Pygame

Conceptos Clave:

Surface: La imagen cargada en Pygame se convierte en un objeto Surface. Este objeto actúa como un lienzo sobre el que se pueden realizar diversas operaciones, como dibujar, copiar (blit), aplicar transformaciones, etc.

Blitting: El término "blit" (o blitting) se refiere al proceso de copiar los píxeles de una Surface a otra. En Pygame, se utiliza el método blit() para dibujar la imagen en la ventana del juego.

Rectángulos (Rect): Para controlar la posición de las imágenes en la pantalla, se utiliza el objeto Rect. Un Rect define un área rectangular (como un marco) que puede ser movida y manipulada para controlar la posición y el tamaño de los elementos gráficos.

Pasos para Mostrar una Imagen en Pantalla:

1. Cargar la Imagen:

imagen = pygame.image.load("imagen.png")

Usa pygame.image.load("ruta_de_la_imagen.png") para cargar la imagen desde un archivo. La imagen se almacena como un objeto Surface.

2. Obtener un Rect para la Imagen:

imagen_rect = imagen.get_rect()

Cada Surface tiene un método llamado get_rect() que devuelve un Rect ajustado al tamaño de la imagen. Este Rect se puede usar para posicionar la imagen en la ventana.

3. Posicionar la Imagen:

imagen_rect.center = (ancho_ventana // 2, alto_ventana // 2)

Puedes cambiar la posición de la imagen modificando los atributos del Rect, como imagen_rect.x y imagen_rect.y para mover la imagen en la ventana. Para centrar la imagen en la ventana, podrías hacer algo como esto.

4. Blit la Imagen en la Ventana:

pantalla.blit(imagen, imagen_rect)

Usa el método blit() para dibujar la imagen en la ventana del juego. Pasa la Surface de la imagen y su Rect asociado como argumentos.

5. Actualizar la Pantalla:

pygame.display.flip()

Después de blit, es necesario actualizar la pantalla para que los cambios sean visibles usando pygame.display.flip() o pygame.display.update().

Código Completo:

import pygame
import sys

# Inicializar Pygame
pygame.init()

# Dimensiones de la ventana
ancho_ventana = 800
alto_ventana = 600

# Crear la ventana
pantalla = pygame.display.set_mode((ancho_ventana, alto_ventana))
pygame.display.set_caption("Mostrar Imagen en Pygame")

# Cargar la imagen
imagen = pygame.image.load("imagen.png")

# Obtener el rectángulo de la imagen
imagen_rect = imagen.get_rect()

# Posicionar la imagen en el centro de la ventana
imagen_rect.center = (ancho_ventana // 2, alto_ventana // 2)

# Bucle principal del juego
while True:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            sys.exit()

    # Llenar la pantalla con un color de fondo
    pantalla.fill((255, 255, 255))  # Blanco

    # Dibujar la imagen en la pantalla
    pantalla.blit(imagen, imagen_rect)

    # Actualizar la pantalla
    pygame.display.flip()

Conceptos Adicionales:

Escalar Imágenes: Puedes usar pygame.transform.scale() para redimensionar la imagen antes de dibujarla.

Rotación de Imágenes: pygame.transform.rotate() permite rotar la imagen antes de blit.

Escalar y rotar imágenes

Pregunta

¿Qué hace el método pygame.transform.scale() en el siguiente código?

imagen_original = pygame.image.load("imagen.png")

imagen_redimensionada = pygame.transform.scale(imagen_original, (width, height))

pantalla.blit(imagen_redimensionada, (x, y))

Respuestas

Rota la imagen original por un ángulo específico.

Cambia el tamaño de la imagen original a las dimensiones especificadas y luego la dibuja en la ventana.

Ajusta el color de la imagen original a un nuevo color.

Retroalimentación

Pregunta

¿Qué efecto tiene el método pygame.transform.rotate() en el código siguiente?

imagen_original =pygame.image.load("imagen.png")
imagen_rotada = pygame.transform.rotate(imagen_original, 45)
pantalla.blit(imagen_rotada, (x, y))

 

Respuestas

Redimensiona la imagen original a un tamaño específico.

Aplica un filtro de color a la imagen original

Rota la imagen original 45 grados y luego la dibuja en la ventana.

Retroalimentación

Licencia: licencia propietaria intelectual

Creado con eXeLearning (Ventana nueva)