Accueil Technologie
Comment créer des ennemis dans les jeux d’arcade Python

Comment créer des ennemis dans les jeux d’arcade Python

Les ennemis jouent un rôle crucial dans la création de jeux attrayants et stimulants. Ils constituent des obstacles et des adversaires pour les joueurs, ce qui rend l’expérience de jeu plus excitante. La bibliothèque Arcade de Python offre un moyen simple d’incorporer des ennemis dans vos jeux.



Créer un jeu simple

Avant de commencer, assurez-vous que pip est installé sur votre appareil. Utilisez cette commande pour installer le programme arcade bibliothèque :

 pip install arcade 

Ensuite, commencez par créer un jeu simple où le joueur peut se déplacer à gauche et à droite à l’aide des touches fléchées.

Le code utilisé dans cet article est disponible dans ce dépôt GitHub et est libre d’utilisation sous la licence MIT.

 import arcade

# Window dimensions
SCREEN_WIDTH = 800
SCREEN_HEIGHT = 600

# Player attributes
PLAYER_RADIUS = 25
PLAYER_SPEED = 5

class GameWindow(arcade.Window):
    def __init__(self, width, height):
        super().__init__(width, height)
        arcade.set_background_color(arcade.color.WHITE)
        self.player_x = width // 2

    def on_draw(self):
        arcade.start_render()
        arcade.draw_circle_filled(self.player_x, PLAYER_RADIUS, PLAYER_RADIUS, arcade.color.BLUE)

    def on_key_press(self, key, modifiers):
        if key == arcade.key.LEFT:
            self.player_x -= PLAYER_SPEED
        elif key == arcade.key.RIGHT:
            self.player_x += PLAYER_SPEED

    def update(self, delta_time):
        pass

def main():
    window = GameWindow(SCREEN_WIDTH, SCREEN_HEIGHT)
    arcade.run()

if __name__ == "__main__":
    main()

Création d’un ennemi simple

Pour créer un ennemi qui tue le joueur en cas de collision, créez un autre cercle sur l’écran. Dans le on_draw vous pouvez dessiner ce cercle d’ennemis et vérifier les collisions dans la fonction mise à jour méthode. Vous pouvez également utiliser des sprites pour les ennemis.

 # Add to GameWindow class

class GameWindow(arcade.Window):
    # ...

    def __init__(self, width, height):
        # ...

        # Enemy attributes
        self.enemy_x = width // 2
        self.enemy_y = height - PLAYER_RADIUS
        self.enemy_radius = 20

    def on_draw(self):
        # ...
        arcade.draw_circle_filled(self.enemy_x, self.enemy_y, self.enemy_radius, arcade.color.RED)

    def update(self, delta_time):
        if self.is_collision(self.player_x, self.player_y, self.enemy_x, self.enemy_y, PLAYER_RADIUS, self.enemy_radius):
            print("Game Over!")
    
    def is_collision(self, x1, y1, x2, y2, radius1, radius2):
        distance_squared = (x1 - x2) ** 2 + (y1 - y2) ** 2
        radius_sum_squared = (radius1 + radius2) ** 2
        return distance_squared <= radius_sum_squared

Faire en sorte que l’ennemi suive le joueur

Dans certains jeux, les ennemis peuvent suivre le joueur, ajoutant ainsi un élément dynamique au gameplay. Pour créer un ennemi qui suit le joueur, vous devez mettre à jour sa position en fonction de celle du joueur. Chaque fois que le joueur se déplace, l’ennemi se déplace dans la même direction. Vous pouvez y parvenir en modifiant la propriété mise à jour méthode. Créez un nouveau fichier nommé ennemi-suivi-joueur.py et ajoutez le code avec les mises à jour ci-dessous :

 # Add to GameWindow class

class GameWindow(arcade.Window):
    # ...

    def update(self, delta_time):
        if self.player_x < self.enemy_x:
            self.enemy_x -= PLAYER_SPEED
        elif self.player_x > self.enemy_x:
            self.enemy_x += PLAYER_SPEED

        if self.is_collision(self.player_x, self.player_y,
                            self.enemy_x, self.enemy_y,
                            PLAYER_RADIUS, ENEMY_RADIUS):
           print("Game Over!")
  
    def is_collision(self, x1, y1, x2, y2, radius1, radius2):
        distance_squared = (x1 - x2) ** 2 + (y1 - y2) ** 2
        radius_sum_squared = (radius1 + radius2) ** 2
        return distance_squared <= radius_sum_squared

Voici le résultat :

ennemi qui suit un joueur dans un jeu d'arcade


Ajout de balles ennemies

Pour créer un ennemi qui tire des balles, créez un fichier Balle et une liste pour garder une trace des balles actives. L’ennemi créera périodiquement une nouvelle balle et mettra à jour sa position. Créez un nouveau fichier nommé bullets.py et ajoutez le code avec les mises à jour ci-dessous :

 # Add to GameWindow class

class Bullet:
    def __init__(self, x, y, radius, speed):
        self.x = x
        self.y = y
        self.radius = radius
        self.speed = speed

    def update(self):
        self.y -= self.speed

class GameWindow(arcade.Window):
    # ...

    def __init__(self, width, height):
        # ...

        # Enemy attributes
        self.bullets = []
        self.bullet_radius = 5
        self.bullet_speed = 3
        self.bullet_cooldown = 60 # Number of frames between bullet spawns
        self.bullet_timer = 0

    def on_draw(self):
        # ...
        for bullet in self.bullets:
            arcade.draw_circle_filled(bullet.x, bullet.y,
           self.bullet_radius, arcade.color.BLACK)

    def update(self, delta_time):
        # ...

        self.bullet_timer += 1
        if self.bullet_timer >= self.bullet_cooldown:
            self.bullets.append(Bullet(self.enemy_x, self.enemy_y - self.enemy_radius,
self.bullet_radius, self.bullet_speed))
            self.bullet_timer = 0

        for bullet in self.bullets:
            bullet.update()
            if self.is_collision(self.player_x, self.player_y, self.enemy_x,
self.enemy_y, PLAYER_RADIUS, ENEMY_RADIUS):
            print("Game Over!")
    
    def is_collision(self, x1, y1, x2, y2, radius1, radius2):
        distance_squared = (x1 - x2) ** 2 + (y1 - y2) ** 2
        radius_sum_squared = (radius1 + radius2) ** 2
        return distance_squared <= radius_sum_squared

Voici le résultat :

l'ennemi tire des balles vers le joueur


Ajout de points de vie pour les ennemis

Dans de nombreux jeux, les ennemis peuvent posséder des points de vie (PV), ce qui leur permet d’encaisser plusieurs coups avant d’être vaincus. L’ajout de points de vie aux ennemis permet d’introduire des éléments stratégiques dans le jeu et de donner un sentiment de progression et de défi. Créez un nouveau fichier nommé heath-point.py et ajoutez le code avec les mises à jour ci-dessous :

 # Window dimensions
SCREEN_WIDTH = 800
SCREEN_HEIGHT = 600

# Player attributes
PLAYER_RADIUS = 25
PLAYER_SPEED = 5

# Enemy attributes
ENEMY_RADIUS = 20
ENEMY_HEALTH = 100

class GameWindow(arcade.Window):
    def __init__(self, width, height):
        super().__init__(width, height)
        arcade.set_background_color(arcade.color.WHITE)
        self.player_x = width // 2
        self.player_y = height // 2
        self.enemy_x = width // 2
        self.enemy_y = height - PLAYER_RADIUS
        self.enemy_health = ENEMY_HEALTH
        print(self.enemy_health)
    def on_draw(self):
        arcade.start_render()
        arcade.draw_circle_filled(self.player_x,
                                  self.player_y,
                                  PLAYER_RADIUS,
                                  arcade.color.BLUE)
        if self.enemy_health > 0:
            arcade.draw_circle_filled(self.enemy_x,
                                      self.enemy_y,
                                      ENEMY_RADIUS,
                                      arcade.color.RED)

    def update(self, delta_time):
        if self.is_collision(self.player_x, self.player_y,
                             self.enemy_x, self.enemy_y,
                             PLAYER_RADIUS, ENEMY_RADIUS):
            self.enemy_health -= 10
            print(self.enemy_health)
        

Le ENEMY_HEALTH La constante ENEMY_HEALTH a une valeur de 100 pour représenter les points de vie initiaux de l’ennemi. Lorsque le joueur entre en collision avec l’ennemi, il est possible de déduire quelques points de la santé de l’ennemi. Pour afficher la valeur de santé mise à jour, vous pouvez imprimer un objet texte self.health_text qui indique la santé actuelle de l’ennemi.

En incorporant des points de vie pour les ennemis, vous pouvez introduire une couche de défi et de stratégie pour les joueurs. La valeur de santé affichée fournit un retour visuel et permet aux joueurs de suivre l’évolution de la santé restante de l’ennemi.

En outre, vous pouvez développer le code en ajoutant d’autres éléments logiques et visuels, tels que l’affichage de barres de santé ou la mise en place de conditions de défaite lorsque la santé de l’ennemi atteint zéro.


Meilleures pratiques pour la création d’ennemis

Lorsque vous concevez des ennemis pour votre jeu, il est important de prendre en compte plusieurs bonnes pratiques afin de vous assurer qu’ils contribuent à une expérience de jeu stimulante et agréable. Voici quelques conseils à suivre lors de la création d’ennemis :

Des attributs variés

Créez des ennemis aux attributs variés tels que la vitesse, la taille, la santé et la puissance d’attaque. Les différents types d’ennemis doivent présenter différents niveaux de difficulté, ce qui oblige les joueurs à adapter leurs stratégies en conséquence. En introduisant un mélange d’attributs d’ennemis, vous pouvez garder le gameplay frais et engageant.

Comportements uniques

Donnez à chaque type d’ennemi un comportement unique. Certains ennemis peuvent se déplacer de manière prévisible, tandis que d’autres peuvent présenter des mouvements plus complexes ou erratiques. Envisagez d’incorporer des algorithmes d’IA pour rendre le comportement des ennemis plus intelligent et imprévisible, afin d’ajouter un niveau de difficulté supplémentaire pour les joueurs.

Points de vie (PV)

Des points de vie ont été ajoutés aux ennemis afin d’introduire un sentiment de progression et de durabilité. Les ennemis peuvent ainsi encaisser plusieurs coups avant d’être vaincus. En attribuant des quantités variables de points de vie aux différents types d’ennemis, vous pouvez créer une hiérarchie de difficulté et encourager les joueurs à élaborer des stratégies et à donner la priorité à leurs cibles.


Rendre les jeux plus amusants grâce aux ennemis

L’ajout d’ennemis à vos jeux peut considérablement améliorer l’expérience de jeu. Ils présentent des défis et motivent les joueurs à améliorer leurs compétences. Les ennemis peuvent prendre différentes formes, de simples obstacles à des adversaires complexes pilotés par l’IA. En intégrant des ennemis de manière efficace, vous pouvez rendre vos jeux plus attrayants et plus agréables pour les joueurs.

Leave your vote

0 0 votes
Évaluation de l'article
S’abonner
Notification pour
guest
0 Commentaires
Le plus ancien
Le plus récent Le plus populaire
Commentaires en ligne
Afficher tous les commentaires

Log In

Forgot password?

Don't have an account? Register

Forgot password?

Enter your account data and we will send you a link to reset your password.

Your password reset link appears to be invalid or expired.

Log in

Privacy Policy

Add to Collection

No Collections

Here you'll find all collections you've created before.

0
Nous aimerions avoir votre avis, veuillez laisser un commentaire.x

Newsletter

inscrivez vous pour recevoir nos actualités

Actualités, astuces, bons plans et cadeaux !