Même les ennemis les plus élémentaires doivent se déplacer d'une manière ou d'une autre, alors inspirez-vous sur la façon de gérer le codage derrière les schémas d'attaque.

L'un des éléments clés d'un grand jeu vidéo est la présence d'ennemis. Qu'il s'agisse de zombies, d'extraterrestres ou d'autres joueurs, les ennemis peuvent rendre un jeu plus stimulant et excitant.

Dans PyGame, vous pouvez facilement programmer une variété de comportements de mouvement de l'ennemi, comme suivre le joueur, se déplacer au hasard ou emprunter des chemins spécifiques.

Créer un jeu simple

Commencez par créer un jeu simple où un joueur se déplacera horizontalement et verticalement. Si le joueur touche l'ennemi, le joueur mourra.

Vous pouvez trouver le code complet dans ce Dépôt GitHub.

Commencez par importer le module PyGame nécessaire et initialisez-le.

importer pygame

pygame.init()

Ensuite, configurez l'écran et créez les objets joueur et ennemi à l'aide du pygame. Rect() fonction.

# Configurer l'écran
écran = pygame.display.set_mode((800, 600))

# Configurer les couleurs
noir = (0, 0, 0)
blanc = (255, 255, 255)

instagram viewer

# Configurez le rectangle du joueur et l'objet ennemi
joueur = pygame. Rect(350, 500, 50, 50)
ennemi = pygame. Rect(350, 0, 50, 50)

Après cela, créez une boucle de jeu qui s'exécute jusqu'à ce que le joueur entre en collision avec l'ennemi ou quitte le jeu. Vérifiez également collision entre le joueur et l'ennemi, et dessinez les objets du jeu sur l'écran.

# Configurer la boucle de jeu
courir = Vrai

alors que en cours d'exécution:
pour événement dans pygame.event.get() :
si événement.type == pygame. ARRÊTER:
courir = FAUX

# Remplir l'écran de blanc
screen.fill (blanc)

# Déplacer le rectangle du joueur
clés = pygame.key.get_pressed()

si clés[pygame. K_LEFT] :
joueur.x -= 5

si clés[pygame. K_RIGHT] :
joueur.x += 5

si clés[pygame. K_UP]:
joueur.y -= 5

si clés[pygame. K_DOWN]:
joueur.y += 5

# Vérifiez la collision entre le joueur et l'ennemi
si player.colliderect (ennemi):
courir = FAUX

# Dessinez le rectangle du joueur et l'objet ennemi sur l'écran
pygame.draw.rect (écran, noir, joueur)
pygame.draw.rect (écran, noir, ennemi)

# Mettre à jour l'écran
pygame.display.update()

# Quitter le jeu
pygame.quit()

Diriger les ennemis vers le joueur

Pour déplacer l'ennemi vers le joueur, vous devez calculer la distance entre les deux, ce que vous pouvez faire en utilisant le théorème de Pythagore. Vous pouvez ensuite utiliser cette distance pour déterminer la vitesse de déplacement de l'ennemi et sa direction vers le joueur.

Pour implémenter cela, créez une variable de vitesse et utilisez-la pour mettre à jour la position de l'ennemi vers le joueur.

# Calculer la distance entre l'ennemi et le joueur
distance_x = joueur.x - ennemi.x
distance_y = joueur.y - ennemi.y
distance = (distance_x ** 2 + distance_y ** 2) ** 0.5

# Déplacez l'ennemi vers le joueur
vitesse = 2

si distance != 0:
ennemi.x += vitesse * distance_x / distance
ennemi.y += vitesse * distance_y / distance

Randomiser le mouvement ennemi à l'écran

Vous pouvez également faire bouger l'ennemi au hasard sur l'écran pour rendre le jeu plus difficile.

Pour ce faire, générez une direction aléatoire pour que l'ennemi se déplace à l'aide du module random en Python. Utilisez le choix() fonction pour sélectionner une direction aléatoire dans une liste de directions dans lesquelles l'ennemi peut se déplacer. Mettez ensuite à jour la position de l'ennemi en fonction de la direction choisie.

importer aléatoire

# Déplacez l'ennemi au hasard sur l'écran
direction = random.choice(['gauche', 'droite', 'en haut', 'bas'])

si sens == 'gauche':
ennemi.x -= 5
elif sens == 'droite':
ennemi.x += 5
elif sens == 'en haut':
ennemi.y -= 5
elif sens == 'bas':
ennemi.y += 5

Mouvement ennemi basé sur la proximité

Dans certains jeux, l'ennemi ne se déplace que lorsque le joueur est proche de lui. Vous pouvez y parvenir en calculant la distance entre l'ennemi et le joueur.

Si la distance est inférieure à une certaine valeur, faites avancer l'ennemi vers le joueur. Cela rend le jeu plus stratégique et oblige le joueur à être plus prudent dans ses mouvements.

# Déplacez l'ennemi vers le joueur si le joueur est proche
vitesse = 2

si distance < 300:
si distance != 0:
ennemi.x += vitesse * distance_x / distance
ennemi.y += vitesse * distance_y / distance

L'ennemi évite les attaques des joueurs

Vous pouvez également obliger l'ennemi à esquiver le mouvement du joueur. L'ennemi tentera d'éviter le joueur en se déplaçant perpendiculairement à la position du joueur.

Pour ce faire, calculez le vecteur unitaire vers le joueur en utilisant la distance_x et la distance_y calculées précédemment. Ensuite, calculez le vecteur perpendiculaire pour déplacer l'ennemi perpendiculairement au vecteur unitaire. Enfin, calculez le produit scalaire du vecteur perpendiculaire et du vecteur unitaire pour déterminer la direction du mouvement ennemi.

Pour implémenter cela, ajoutez l'extrait de code ci-dessous après le calcul de la distance.

vitesse = 2

si distance < 400:
si distance != 0:
# Calculer le vecteur unitaire vers le joueur
unit_vector_x = distance_x / distance
unit_vector_y = distance_y / distance

# Calculer le vecteur perpendiculaire
vecteur_perpendiculaire_x = -vecteur_unitaire_y
vecteur_perpendiculaire_y = vecteur_unitaire_x

# Calculer le produit scalaire du vecteur perpendiculaire et de la
# vecteur unitaire
produit_dot = vecteur_perpendiculaire_x * vecteur_unité_x
+ vecteur_perpendiculaire_y * vecteur_unitaire_y

# Déplacez l'ennemi perpendiculairement au vecteur unitaire
si point_produit > 0:
ennemi.x += vitesse * vecteur_perpendiculaire_x
ennemi.y += vitesse * vecteur_perpendiculaire_y
autre:
ennemi.x -= vitesse * vecteur_perpendiculaire_x
ennemi.y -= vitesse * vecteur_perpendiculaire_y

Avec ces modifications, l'ennemi essaiera d'éviter de trop s'approcher du joueur. Cela rend le jeu plus difficile et amusant à jouer.

Ajout de fonctionnalités supplémentaires

Vous pouvez également ajouter plus de fonctionnalités dans votre jeu pour le rendre plus difficile. Par exemple, tu peux ajouter plusieurs ennemis qui se déplacent de manière aléatoire sur l'écran, des obstacles que le joueur doit éviter en se déplaçant, des bonus qui améliorent les capacités du joueur, etc.

Tu peux utilisez le module Horloge pour régler la fréquence d'images de votre jeu et le rendre plus fluide. Ci-dessous la réalisation :

# Ajoutez plusieurs ennemis qui se déplacent au hasard sur l'écran
ennemis = []

pour je dans gamme(5):
ennemi = pygame. Rect (aléatoire.randint(0, 750), random.randint(0, 550), 50,
50)

ennemis.append (ennemi)

# Ajouter des obstacles que le joueur doit éviter
obstacle = pygame. Rect(200, 250, 50, 50)

# Configurer la boucle de jeu
horloge = pygame.heure. Horloge()
courir = Vrai

alors que en cours d'exécution:
pour événement dans pygame.event.get() :
si événement.type == pygame. ARRÊTER:
courir = FAUX

# Remplir l'écran de blanc
screen.fill (blanc)

# Déplacer le rectangle du joueur
clés = pygame.key.get_pressed()

si clés[pygame. K_LEFT] :
joueur.x -= 5
si clés[pygame. K_RIGHT] :
joueur.x += 5
si clés[pygame. K_UP] :
joueur.y -= 5
si clés[pygame. K_DOWN] :
joueur.y += 5

# Déplacez les ennemis au hasard sur l'écran
pour ennemi dans ennemis:
direction = random.choice(['gauche', 'droite', 'en haut', 'bas'])

si sens == 'gauche':
ennemi.x -= 5
elif sens == 'droite':
ennemi.x += 5
elif sens == 'en haut':
ennemi.y -= 5
elif sens == 'bas':
ennemi.y += 5

# Vérifiez la collision entre le joueur et l'ennemi
si player.colliderect (ennemi):
courir = FAUX

# Dessinez le rectangle du joueur, les objets ennemis et l'obstacle sur
# l'écran
pygame.draw.rect (écran, noir, joueur)

pour ennemi dans ennemis:
pygame.draw.rect (écran, noir, ennemi)

pygame.draw.rect (écran, noir, obstacle)

# Mettre à jour l'écran
pygame.display.update()

# Définir la fréquence d'images du jeu
horloge.tick(60)

# Quitter le jeu
pygame.quit()

Améliorez votre expérience de jeu avec des ennemis

En ajoutant des ennemis avec des mouvements, des comportements et des capacités uniques, vous pouvez rendre vos jeux plus attrayants et stimulants pour les joueurs. Les joueurs devront élaborer des stratégies et adapter leur gameplay pour vaincre différents types d'ennemis. Cela peut augmenter l'engagement, améliorer la valeur de relecture et inciter les joueurs à revenir pour plus.