Cours S4 JEUX Python

Les Enemis

Dans ce cours, vous allez apprendre à programmer des ennemis !

I. La Classe

Nous allons donc créer une classe enemy. Pour cela, vous pouvez créer un nouveau fichier et n’oubliez pas d’importer pygame. Pour la classe, on fera un classique: 

class Enemy(pygame.sprite.Sprite):

def __init__(self):
super().__init__()
self.health = 30
self.max_health = 30
self.attack = 5
self.image = pygame.image.load(‘imgg/enemy1.png’)

self.rect = self.image.get_rect()

Vous commencez à comprendre maintenant. Si vous observez bien, les classes se resemblent toutes plus ou moins.

II. Apparition

Une fois la classe définis, vous allez faire apparaitre le monstre. Pour cela, allez dans class mainG:

    self.all_enemy = pygame.sprite.Group()
self.spawn_enemy()

 

def spawn_enemy(self):
enemy = Enemy()
self.all_enemy.add(enemy)

Puis dans while window :

game.all_enemy.draw(sbkg)

Slider ==>

III. Emplacement et déplacement

Pour l’emplacement, vous allez mettre dans self. dans votre class Enemy:

self.rect.x = 1000
self.rect.y = 420
self.velocity = 2

Puis pour le déplacer, on utilisera la méthode :

def forward(self):
self.rect.x -= self.velocity

Slider ==>

 

IV. La collision

 Dans mainG, vous allez créer une HITBOX grace à la méthode:

def check_meet(self,sprite,group):
return pygame.sprite.spritecollide\
(sprite, group, False, pygame.sprite.collide_mask())

Ensuite, il faut empécher que le joueur traverse le monstre. Pour cela, dans self. dans la class Player:

def __init__(self, game):
self.game = game

 Puis vous rajouter dans vos méthode pour bouger votre joueurs:

if not self.game.check_meet(self.self.game.all_enemy):

Bien, ensuite rendez-vous dans la classe mainG:

self.all_player = pygame.sprite.Group()
self.player = Player(self)
self.all_player.add(self.player)

Vous rajouter donc ces 2 ligne autour de votre ligne self.player. Puis vous ajoutez l’instance self dans votre méthode spawn_enemy:

def spawn_enemy(self):
enemy = Enemy(self)
self.all_enemy.add(enemy)

 Puis dans votre classe Enemy:

self.game = game

Et dans votre méthode forward:

if not self.game.check_meet(self, self.game.all_player):

 Super !!

Slider ===>

V. Collision du projectile

Pour cela, vous irez dans votre class Balle() et vous allez créer la méthode :

def remove(self):
self.player.all_projectile.remove(self)

Et dans votre méthode move vous ajoutez:

if self.player.game.check_meet(self, self.player.game.all_enemy):
self.remove()

 Super !! Vous avez finis !!