Creación de enemigos aleatorios, instanciación múltiple y random - Curso Pygame - Capítulo 10


Creando la clase Enemigo

En el capítulo de hoy vamos a ver cómo añadir enemigos o cualquier otro elemento de forma aleatoria.
Lo primero, para hacer cosas aleatorias necesitamos importar el módulo random:

Código

import random

Y creamos la clase de los enemigos.

Por cierto, aquí tienes la imagen de la nave enemiga: enemigo.png

Código

class Enemigo(pygame.sprite.Sprite):
    # Sprite del enemigo
    def __init__(self):
    # Heredamos el init de la clase Sprite de Pygame
        super().__init__()
        # Rectángulo (enemigos)
        self.image = pygame.image.load("principal/enemigo.png").convert()
        # Obtiene el rectángulo (sprite)
        self.rect = self.image.get_rect()

Instanciamos un objeto de Enemigo.

Código

enemigos = Enemigo()

También hay que añadirlo al grupo de sprites.
Si no sabes como hacerlo, en el vídeo puedes verlo.

Código

sprites.add(enemigos)

Con esto ya aparecerá el primer enemigo del juego, el cuál, todavía no tiene ni movimiento ni nada, se instancia en la esquina superior izquierda, ya que no hemos especificado nada aún.

Sprite de enemigo en Pygame

Ya sabes como hacer que aparezca en una posición determinada de la pantalla como hemos hecho con la clase Jugador en capítulos anteriores.
Veamos cómo hacer que un enemigo se instancie en cualquier lugar de la pantalla aleatoriamente.
Esto lo podemos hacer utilizando el módulo random de Python.

Ves a la clase Enemigo, en ella, en el __init__ especifica la posicuión en x e y. Solo que en lugar de especificar un valor numérico con una posición fija, le vas a dar el siguiente valor:

Código

self.rect.x = random.randrange(ANCHO - self.rect.width)
self.rect.y = random.randrange(ALTO - self.rect.height)

Se le ha especificado un randrange de todo el ANCHO y todo el ALTO de la pantalla menos el propio tamaño del propio objeto, con lo que evitamos que aparezca alguans veces un trozo fuera de la pantalla.

Instanciación múltiple

Ahora cada enemigo que quieras que aparezca en el juego, te basta con crear el objeto y añadirlo al grupo de sprites.

El problema entra cuando tienes muchos enemigos, puede ser que quieres que se instancien varios objetos de una vez y no tener que repetir tanto código.
Esto es muy fácil de hacer con un bucle for.

Código

for x in range(50):
    enemigo = Enemigo()
    sprites.add(enemigo)

Con este bucle generaremos tantos enemigos iguales como los que le indiquemos al range.

Múltiples enemigos

Instanciación aleatoria

También podemos utilizar el módulo random para crear instanciaciones aleatorias:

Código

for x in range(random.randrange(5)):
    enemigos = Enemigo()
    sprites.add(enemigos)

Suscríbete a mi canal de YouTube para apoyarme

Si te ha gustado este curso y crees que el trabajo merece la pena, te agradeceré eternamente que te suscribas a mi canal de YouTube para apoyarme y que pueda seguir haciendo cursos gratuitos.

Además, si te encanta la programación, tienes un montón más de cursos gratuitos para ver.

No solo eso, podrás participar enviándome comentarios con tus sugerencias para temas específicos o cursos completos o incluso las dudas que tengas y las intentaré ir resolviendo en los cursos que estén todavía abiertos.


Comentarios

Si te quedan dudas sobre el temario, sobre Python, o cualquier otra cosa relacionada o simplemente quieres agradecer, aquí tienes tu sitio para dejar tu granito de arena. Gracias por tus comentarios y por darle vida a este sitio web.