Pygame, crear videojuegos con Python, ejemplos básicos

Pygame es una biblioteca muy útil para la programación de videojuegos y aplicaciones gráficas en Python. Con ella podemos crear ventanas, dibujar figuras y animaciones, detectar eventos de teclado y ratón, y muchas otras cosas más.

instalación:

pip install pygame

 

1. Ejemplo básico de ventana:

 

import pygame

pygame.init()

# Crea una ventana con un tamaño de 800x600
screen = pygame.display.set_mode((800, 600))

# Loop principal
while True:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            quit()

    # Actualiza la pantalla
    pygame.display.update()

En este ejemplo, lo que estamos haciendo es crear una ventana con Pygame, con un tamaño de 800×600 píxeles. Dentro del loop principal, simplemente verificamos si se ha producido el evento de cierre de ventana (pygame.QUIT), y en ese caso salimos del loop y cerramos Pygame. Por último, actualizamos la pantalla con pygame.display.update().

 

2. Ejemplo de dibujo básico:

 

import pygame

pygame.init()

# Crea una ventana con un tamaño de 800x600
screen = pygame.display.set_mode((800, 600))

# Dibuja un rectángulo rojo en la posición (100, 100) con un ancho de 50 y un alto de 50
pygame.draw.rect(screen, (255, 0, 0), (100, 100, 50, 50))

# Loop principal
while True:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            quit()

    # Actualiza la pantalla
    pygame.display.update()

En este ejemplo, además de crear la ventana como en el ejemplo anterior, utilizamos la función pygame.draw.rect() para dibujar un rectángulo rojo en la posición (100, 100), con un ancho y alto de 50 píxeles. La función draw.rect() recibe tres parámetros: la superficie donde se va a dibujar (en este caso, screen), el color del rectángulo (en este caso, rojo representado por el RGB (255, 0, 0)), y un rectángulo que define la posición y tamaño del rectángulo.

 

3. Ejemplo de movimiento básico:

 

import pygame

pygame.init()

# Crea una ventana con un tamaño de 800x600
screen = pygame.display.set_mode((800, 600))

# Dibuja un rectángulo rojo en la posición (100, 100) con un ancho de 50 y un alto de 50
rect = pygame.Rect(100, 100, 50, 50)

# Loop principal
while True:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            quit()

    # Mueve el rectángulo hacia la derecha
    rect.move_ip(1, 0)

    # Rellena la pantalla con el color blanco
    screen.fill((255, 255, 255))

    # Dibuja el rectángulo en la nueva posición
    pygame.draw.rect(screen, (255, 0, 0), rect)

    # Actualiza la pantalla
    pygame.display.update()

En este ejemplo, además de crear la ventana como en los ejemplos anteriores, utilizamos la clase pygame.Rect() para definir un rectángulo en la posición (100, 100) con un ancho y alto de 50 píxeles. Dentro del loop principal, movemos el rectángulo un píxel hacia la derecha en cada iteración, utilizando el método move_ip() de la clase Rect. Después de mover el rectángulo, dibujamos el rectángulo en la nueva posición utilizando la función pygame.draw.rect() como en el ejemplo anterior. Finalmente, actualizamos la pantalla con pygame.display.update() para que se muestre el rectángulo en su nueva posición.

 

4. Ejemplo de detección de colisiones básico:

 

import pygame

pygame.init()

# Crea una ventana con un tamaño de 800x600
screen = pygame.display.set_mode((800, 600))

# Dibuja un rectángulo rojo en la posición (100, 100) con un ancho de 50 y un alto de 50
rect1 = pygame.Rect(100, 100, 50, 50)

# Dibuja un rectángulo verde en la posición (150, 150) con un ancho de 50 y un alto de 50
rect2 = pygame.Rect(220, 0, 50, 50)

# Loop principal
while True:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            quit()

    # Mueve el rectángulo rojo hacia la derecha
    rect1.move_ip(1, 0)

    # Mueve el rectángulo verde hacia abajo
    rect2.move_ip(0, 1)

    # Rellena la pantalla con el color blanco
    screen.fill((255, 255, 255))

    # Si los rectángulos colisionan, cambia el color del rectángulo verde a azul
    if rect1.colliderect(rect2):
        pygame.draw.rect(screen, (0, 0, 255), rect2)
    else:
        pygame.draw.rect(screen, (0, 255, 0), rect2)

    # Dibuja el rectángulo rojo en la nueva posición
    pygame.draw.rect(screen, (255, 0, 0), rect1)

    # Actualiza la pantalla
    pygame.display.update()

utilizamos dos rectángulos definidos con la clase pygame.Rect() como en el ejemplo anterior, pero esta vez uno de los rectángulos (rect2) se dibuja en una posición diferente y de color verde. En el loop principal, movemos el rectángulo rojo (rect1) hacia la derecha, y si los rectángulos colisionan utilizamos el método colliderect() de la clase Rect para detectar la colisión y cambiamos el color del rectángulo verde (rect2) a azul. En caso contrario, el rectángulo verde se mantiene de color verde. Luego, dibujamos ambos rectángulos en la ventana y actualizamos la pantalla para que se muestren los cambios.