Incluso los enemigos más básicos necesitan moverse de alguna manera, así que inspírate en cómo manejar la codificación detrás de los patrones de ataque.

Uno de los elementos clave de un gran videojuego es la presencia de enemigos. Ya sean zombis, extraterrestres u otros jugadores, los enemigos pueden hacer que el juego sea más desafiante y emocionante.

En PyGame, puedes programar fácilmente una variedad de comportamientos de movimiento del enemigo, como seguir al jugador, moverse al azar o tomar rutas específicas.

Crear un juego simple

Comience creando un juego simple en el que un jugador se mueva horizontal y verticalmente. Si el jugador toca al enemigo, el jugador morirá.

Puedes encontrar el código completo en este repositorio de GitHub.

Comience importando el módulo PyGame necesario e inicializándolo.

importar Pygame

pygame.init()

Luego, configure la pantalla y cree el jugador y los objetos enemigos usando el pygame. Rect() función.

# Configurar la pantalla
pantalla = pygame.display.set_mode((800, 600))

# Configurar los colores
negro = (0, 0, 0)
blanco = (255, 255, 255)

instagram viewer

# Configura el rectángulo del jugador y el objeto enemigo
jugador = pygame. Rect(350, 500, 50, 50)
enemigo = pygame. Rect(350, 0, 50, 50)

Después de eso, crea un ciclo de juego que se ejecuta hasta que el jugador choca con el enemigo o sale del juego. Además, verifique colisión entre el jugador y el enemigoy dibuja los objetos del juego en la pantalla.

# Configurar el bucle del juego
corriendo = Verdadero

mientras correr:
para evento en pygame.event.get():
si evento.tipo == pygame. ABANDONAR:
corriendo = FALSO

# Llena la pantalla de blanco
pantalla.llenar (blanco)

# Mueve el rectángulo del jugador
llaves = pygame.key.get_pressed()

si teclas[pygame. K_IZQUIERDA]:
jugador.x -= 5

si teclas[pygame. K_DERECHA]:
jugador.x += 5

si teclas[pygame. K_UP]:
jugador.y -= 5

si teclas[pygame. K_ABAJO]:
jugador.y += 5

# Comprueba si hay colisión entre el jugador y el enemigo
si player.colliderect (enemigo):
corriendo = FALSO

# Dibuja el rectángulo del jugador y el objeto enemigo en la pantalla
pygame.draw.rect (pantalla, negro, jugador)
pygame.draw.rect (pantalla, negro, enemigo)

# Actualizar la pantalla
pygame.display.update()

# Salir del juego
pygame.quit()

Enemigos directos hacia el jugador

Para mover al enemigo hacia el jugador, debes calcular la distancia entre los dos, lo que puedes hacer usando el teorema de Pitágoras. Luego puedes usar esta distancia para determinar la velocidad de movimiento del enemigo y la dirección hacia el jugador.

Para implementar esto, crea una variable de velocidad y úsala para actualizar la posición del enemigo hacia el jugador.

# Calcula la distancia entre el enemigo y el jugador
distancia_x = jugador.x - enemigo.x
distancia_y = jugador.y - enemigo.y
distancia = (distancia_x ** 2 + distancia_y ** 2) ** 0.5

# Mueve al enemigo hacia el jugador
velocidad = 2

si distancia != 0:
enemigo.x += velocidad * distancia_x / distancia
enemigo.y += velocidad * distancia_y / distancia

Aleatorizar el movimiento del enemigo en la pantalla

También puedes hacer que el enemigo se mueva aleatoriamente en la pantalla para que el juego sea más desafiante.

Para hacer esto, genera una dirección aleatoria para que el enemigo se mueva usando el módulo aleatorio en Python. Utilizar el elección() función para seleccionar una dirección aleatoria de una lista de direcciones en las que el enemigo puede moverse. Luego actualiza la posición del enemigo según la dirección elegida.

importar aleatorio

# Mueve al enemigo al azar en la pantalla
dirección = random.choice(['izquierda', 'bien', 'arriba', 'abajo'])

si dirección == 'izquierda':
enemigo.x -= 5
elif dirección == 'bien':
enemigo.x += 5
elif dirección == 'arriba':
enemigo.y -= 5
elif dirección == 'abajo':
enemigo.y += 5

Movimiento enemigo basado en la proximidad

En algunos juegos, el enemigo se mueve solo cuando el jugador está cerca de él. Puedes lograr esto calculando la distancia entre el enemigo y el jugador.

Si la distancia es inferior a cierto valor, haz que el enemigo se mueva hacia el jugador. Esto hace que el juego sea más estratégico y obliga al jugador a ser más cuidadoso en sus movimientos.

# Mueve al enemigo hacia el jugador si el jugador está cerca
velocidad = 2

si distancia < 300:
si distancia != 0:
enemigo.x += velocidad * distancia_x / distancia
enemigo.y += velocidad * distancia_y / distancia

El enemigo evade los ataques del jugador

También puedes hacer que el enemigo esquive el movimiento del jugador. El enemigo intentará evitar al jugador moviéndose perpendicularmente a la posición del jugador.

Para lograr esto, calcula el vector unitario hacia el jugador usando la distancia_x y la distancia_y calculadas anteriormente. Luego, calcula el vector perpendicular para mover al enemigo perpendicular al vector unitario. Finalmente, calcule el producto escalar del vector perpendicular y el vector unitario para determinar la dirección del movimiento enemigo.

Para implementar esto, agregue el fragmento de código a continuación después del cálculo de la distancia.

velocidad = 2

si distancia < 400:
si distancia != 0:
# Calcular el vector unitario hacia el jugador
unit_vector_x = distancia_x / distancia
unit_vector_y = distancia_y / distancia

# Calcular el vector perpendicular
vector_perpendicular_x = -vector_unidad_y
vector_perpendicular_y = vector_unidad_x

# Calcular el producto escalar del vector perpendicular y el
# vector unitario
producto_punto = vector_perpendicular_x * vector_unidad_x
+ vector_perpendicular_y * vector_unidad_y

# Mueve al enemigo perpendicular al vector unitario
si producto_punto > 0:
enemigo.x += velocidad * perpendicular_vector_x
enemigo.y += velocidad * perpendicular_vector_y
demás:
enemigo.x -= velocidad * perpendicular_vector_x
enemigo.y -= velocidad * perpendicular_vector_y

Con estas modificaciones, el enemigo intentará evitar acercarse demasiado al jugador. Esto hace que el juego sea más desafiante y divertido de jugar.

Adición de funciones adicionales

También puede agregar más funciones en su juego para hacerlo más desafiante. Por ejemplo, puede agregar múltiples enemigos que se mueven aleatoriamente en la pantalla, obstáculos que el jugador debe evitar mientras se mueve, potenciadores que mejoran las habilidades del jugador, etc.

Puede use el módulo Reloj para establecer la velocidad de fotogramas de tu juego y haz que funcione mejor. A continuación se muestra la implementación:

# Agrega múltiples enemigos que se mueven aleatoriamente en la pantalla
enemigos = []

para i en rango(5):
enemigo = pygame. Rect (aleatorio.randint(0, 750), aleatorio.randint(0, 550), 50,
50)

enemigos.append (enemigo)

# Agregue obstáculos que el jugador debe evitar
obstáculo = pygame. Rect(200, 250, 50, 50)

# Configurar el bucle del juego
reloj = pygame.hora. Reloj()
corriendo = Verdadero

mientras correr:
para evento en pygame.event.get():
si evento.tipo == pygame. ABANDONAR:
corriendo = FALSO

# Llena la pantalla de blanco
pantalla.llenar (blanco)

# Mueve el rectángulo del jugador
llaves = pygame.key.get_pressed()

si teclas[pygame. K_IZQUIERDA]:
jugador.x -= 5
si teclas[pygame. K_DERECHA]:
jugador.x += 5
si teclas[pygame. K_UP]:
jugador.y -= 5
si teclas[pygame. K_ABAJO]:
jugador.y += 5

# Mueve a los enemigos al azar en la pantalla
para enemigo en enemigos:
dirección = random.choice(['izquierda', 'bien', 'arriba', 'abajo'])

si dirección == 'izquierda':
enemigo.x -= 5
elif dirección == 'bien':
enemigo.x += 5
elif dirección == 'arriba':
enemigo.y -= 5
elif dirección == 'abajo':
enemigo.y += 5

# Comprueba si hay colisión entre el jugador y el enemigo
si player.colliderect (enemigo):
corriendo = FALSO

# Dibuja el rectángulo del jugador, los objetos enemigos y el obstáculo en
# la pantalla
pygame.draw.rect (pantalla, negro, jugador)

para enemigo en enemigos:
pygame.draw.rect (pantalla, negro, enemigo)

pygame.draw.rect (pantalla, negro, obstáculo)

# Actualizar la pantalla
pygame.display.update()

# Establecer la velocidad de fotogramas del juego
reloj.tick(60)

# Salir del juego
pygame.quit()

Mejora tu experiencia de juego con enemigos

Al agregar enemigos con movimientos, comportamientos y habilidades únicos, puede hacer que sus juegos sean más atractivos y desafiantes para los jugadores. Los jugadores deberán diseñar estrategias y adaptar su juego para superar diferentes tipos de enemigos. Esto puede aumentar el compromiso, mejorar el valor de reproducción y hacer que los jugadores regresen por más.