Lectores como tú ayudan a apoyar a MUO. Cuando realiza una compra utilizando enlaces en nuestro sitio, podemos ganar una comisión de afiliado. Leer más.

Si eres un desarrollador de juegos que usa la biblioteca Pygame, probablemente te hayas encontrado con la clase Sprite. La clase Sprite es una poderosa herramienta para crear personajes de juegos que puedes mover, rotar y escalar fácilmente en la pantalla.

Con un simple programa de Python, puede aprender sobre el proceso de creación de personajes de juegos basados ​​en sprites en Pygame. Descubra cómo crear una clase básica de Sprite, luego agregue atributos y métodos para controlar el comportamiento.

Introducción a la clase Sprite de Pygame

La clase Sprite en Pygame es una clase contenedora que contiene todos los atributos y comportamientos de un personaje de juego. Deriva de la clase Surface de Pygame, que representa una imagen con un ancho y una altura fijos.

Para trabajar con él, deberá crear una nueva clase que herede de la clase Sprite y definir los atributos y métodos que desea que tenga su personaje del juego.

instagram viewer

Creación de una clase de Sprite básica para un personaje de juego

Primero, instalar el módulo pygame usando pip. Hazlo con este comando:

pepita instalar Pygame

Para crear un sprite básico, deberá importar la clase Sprite de Pygame y crear una nueva clase que herede de ella. Luego, puedes definir cualquier atributo y método que quieras que tenga tu personaje del juego.

Por ejemplo, es posible que desee crear una clase de Sprite para un personaje de jugador que pueda moverse hacia la izquierda y hacia la derecha en la pantalla. Para hacer esto, podría definir los siguientes atributos:

  • posición: Una tupla que contiene las coordenadas x e y del sprite en la pantalla.
  • velocidad: Una tupla que contiene la velocidad a la que el sprite se mueve horizontal y verticalmente.

Y los siguientes métodos:

  • actualizar(): Un método que actualiza la posición del objeto basado en su velocidad.
  • dibujar(): Un método que atrae el sprite a la pantalla.

Aquí hay un ejemplo de una clase básica de Sprite que implementa estos atributos y métodos:

importar Pygame

claseJugador(pygame.sprite. Duende):
definitivamente__en eso__(auto, x, y, velocidad_x, velocidad_y):
súper().__en eso__()
ser.posición = (x, y)
ser.velocidad = (velocidad_x, velocidad_y)

definitivamenteactualizar(ser):
ser.posición = (ser.posición[0] + ser.velocidad[0], ser.posición[1] + ser.velocidad[1])

definitivamentedibujar(yo, superficie):
Pygame.dibujar.círculo(superficie, (255, 0, 0), ser.posición, 10)

El método __init__ es un método especial método en las clases de Python que se ejecuta cuando crea una instancia de la clase. Puede usarlo para inicializar los atributos de la instancia.

En este código, el método __init__ de la clase Player toma cuatro argumentos: x, y, Velocity_x y Velocity_y. Estos argumentos establecen la posición inicial y la velocidad del sprite del jugador.

El método __init__ también llama al método super().__init__(), que es el método __init__ de la clase principal de Sprite. Esto es necesario porque la clase Player es una subclase de la clase Sprite, y el método __init__ de la clase Sprite configura algunos atributos que todos los sprites necesitan.

Adición de atributos y métodos para controlar el comportamiento

Ahora que tiene una clase básica de Sprite, puede agregar atributos y métodos para controlar el comportamiento de su personaje de juego. Esto puede incluir cosas como movimiento, ataque, salto y más.

Para agregar estos atributos y métodos, deberá pensar en qué acciones desea que su juego personaje para poder realizar, y definir los atributos y métodos correspondientes en su Sprite clase.

Por ejemplo, es posible que desee agregar un método para controlar el movimiento del sprite, como un método move_left() que disminuye la velocidad del sprite en el eje x.

Aquí hay un ejemplo de una clase de Sprite modificada que incluye estos atributos y métodos adicionales:

claseJugador(pygame.sprite. Duende):
definitivamente__en eso__(auto, x, y, velocidad_x, velocidad_y):
súper().__en eso__()
ser.posición = (x, y)
ser.velocidad = (velocidad_x, velocidad_y)

definitivamenteactualizar(ser):
ser.posición = (ser.posición[0] + ser.velocidad[0], ser.posición[1] + ser.velocidad[1])

definitivamentedibujar(yo, superficie):
Pygame.dibujar.círculo(superficie, (255, 0, 0), ser.posición, 10)

definitivamentemover hacia la izquierda(ser):
ser.velocidad = (-1, ser.velocidad[1])

definitivamentemover a la derecha(ser):
ser.velocidad = (1, ser.velocidad[1])

Para usar la clase Player en su juego de Pygame, deberá crear una instancia de la clase y llamar a sus métodos según sea necesario.

Comience creando una ventana y una instancia del sprite Player:

# Inicializar Pygame
pygame.init()

# Establecer el tamaño de la ventana
tamaño_ventana = (640, 480)

# Crear una ventana
ventana = pygame.display.set_mode (tamaño_ventana)

# Crea un sprite de jugador
jugador = jugador(320, 240, 0, 0)

Luego defina un bucle de juego principal que maneje los eventos del teclado y actualice y dibuje el sprite. Cuando presiona las teclas de flecha izquierda o derecha, el sprite se moverá en la dirección correspondiente.

# Bucle de juego principal
mientrasVerdadero:
# Manejar eventos
para evento en pygame.event.get():
si evento.tipo == pygame. ABANDONAR:
pygame.quit()
sys.exit()

si evento.tipo == pygame. TECLADO:
si evento.clave == pygame. K_IZQUIERDA:
jugador.mover_izquierda()
elif evento.clave == pygame. K_DERECHO:
jugador.mover_derecha()

# Actualizar el sprite del jugador
jugador.actualizar()

# Limpiar la ventana
ventana.llenar((255, 255, 255))

# Dibuja el sprite del jugador
player.draw (ventana)

# Actualizar la pantalla
pygame.display.update()

Con el programa resultante, podrás controlar el sprite del jugador y observar cómo se dibuja en la pantalla en diferentes posiciones:

Cargar y mostrar gráficos de Sprite usando el módulo de imagen

Ahora que tiene una clase básica de Sprite con atributos y métodos para controlar el comportamiento, probablemente querrá agregar algunos gráficos a su sprite. El módulo de imágenes de Pygame facilita la carga y visualización de imágenes en la pantalla.

Para cargar una imagen, deberá usar la función pygame.image.load(), que toma una ruta de archivo como argumento y devuelve un objeto Surface. Luego puede asignar este objeto de superficie a un atributo de sprite, como self.image, que puede usar para dibujar el sprite en la pantalla.

Por ejemplo, así es como puedes cargar una imagen y asignarla a un sprite:

importar Pygame

claseJugador(pygame.sprite. Duende):
definitivamente__en eso__(yo, x, y, velocidad_x, velocidad_y, ruta_imagen):
súper().__en eso__()
ser.posición = (x, y)
ser.velocidad = (velocidad_x, velocidad_y)
ser.image = pygame.image.load (ruta_imagen)

definitivamenteactualizar(ser):
ser.posición = (ser.posición[0] + ser.velocidad[0], ser.posición[1] + ser.velocidad[1])

definitivamentedibujar(yo, superficie):
superficie.blit(ser.imagen, ser.posición)

definitivamentemover hacia la izquierda(ser):
ser.velocidad = (-1, ser.velocidad[1])

definitivamentemover a la derecha(ser):
ser.velocidad = (1, ser.velocidad[1])

Este código define una clase Player que amplía la clase Sprite de Pygame e incluye atributos de posición, velocidad y imagen, así como métodos para actualizar la posición del sprite, dibujar el sprite en la pantalla y controlar movimienot.

Puedes revisar esto Repo de GitHub para el código completo!

Mejore la gestión de sprites con la clase Sprite

La clase Sprite proporciona un contenedor conveniente para todos los atributos y comportamientos de un personaje del juego, lo que facilita la actualización, el dibujo y el control del sprite en la pantalla.

Al implementar una clase de Sprite en su juego de Pygame, puede mejorar la experiencia general de sus jugadores y agilizar el proceso de desarrollo para usted.