Bonjour à tous, je suis entrain de créer un platefromer en pygame ou 2 personnages : mario et luigi s'affrontent sur une map, le but est d'attaquer l'adversaire pour qu'il perdre un point et si il perd ses 3 points il a perdu, quand on clique sur une touche (espace pour mario et enter pour luigi), un projectile part, le problème est que j'ai mis comme condition : si il n'y a pas de collision entre le projectile et un perso (mario ou luigi) : le déplacement du projectile continue sinon (cela veut dire quand il y a collision ) : le perso en contacte perd un point de vie, sauf que j'ai un message d'erreur car mon système de collision est mal géré, j'ai cherché sur internet sur d'autres forum mais j'ai pas trouvé le réponse, pouvez vous m'aider svp merci beaucoup je voit affiche des screens ci contre :
Nom : 1.png
Affichages : 856
Taille : 52,5 Ko
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
import pygame
 
class Projectile(pygame.sprite.Sprite) :
 
    def __init__(self, game, direction ,qui) :
        self.image = pygame.image.load("assets/projectile.png")
        self.image = pygame.transform.scale(self.image, (20, 20))
        self.rect = self.image.get_rect()
        self.game = game
        self.player_actuel = qui
        self.direction = direction
        self.vitesse = 12
 
        if qui == "mario" :
            self.rect.x = self.game.player1.rect.x
            self.rect.y = self.game.player1.rect.y
        elif qui == "luigi" :
            self.rect.x = self.game.player2.rect.x
            self.rect.y = self.game.player2.rect.y
 
    def remove(self) :
        self.game.all_projectile.remove(self) #Détruire le projectile courant
 
    def move(self) :
 
        if self.player_actuel == "mario" :
            if self.direction == "droite" :
                if not self.game.check_collision_sprite(self.rect, self.game.player2.rect) :
                    if self.rect.x <= 1600 :
                        self.rect.x = self.rect.x + self.vitesse
                    else :
                        self.remove()
                        print("Suppression !")
                else :
                    self.remove()
                    self.game.player1.vie -= 1
                    print("Collision / Suppression !")
                    #Ajouter bruitage vies
            elif self.direction == "gauche" :
                if not self.game.check_collision_sprite(self.rect, self.game.player2.rect) :
                    if self.rect.x >= 0 :
                        self.rect.x = self.rect.x - self.vitesse
                    else :
                        self.remove()
                        print("Suppression !")
                else :
                    self.remove()
                    self.game.player1.vie -= 1
                    print("Collision / Suppression !")
 
        elif self.player_actuel == "luigi" :
            if self.direction == "droite" :
                if not self.game.check_collision_sprite(self.rect, self.game.player1.rect) :
                    if self.rect.x <= 1600 :
                        self.rect.x = self.rect.x + self.vitesse
                    else :
                        self.remove()
                        print("Suppression !")
                else :
                    self.remove()
                    self.game.player2.vie -= 1
                    print("Collision / Suppression !")
            if self.direction == "gauche" :
                if not self.game.check_collision_sprite(self.rect, self.game.player1.rect) :
                    if self.rect.x >= 0 :
                        self.rect.x = self.rect.x - self.vitesse
                    else :
                        self.remove()
                        print("Suppression !")
                else :
                    self.remove()
                    self.game.player2.vie -= 1
                    print("Collision / Suppression !")
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
Hello from the pygame community. https://www.pygame.org/contribute.html
Traceback (most recent call last):
  File "/home/remi/Bureau/Oufioo/main.py", line 254, in <module>
    game.ajout_projectile(game.direction_player1, "mario")
  File "/home/remi/Bureau/Oufioo/game.py", line 43, in ajout_projectile
    self.all_projectile.add(Projectile(self, direction, qui))
  File "/usr/lib/python3/dist-packages/pygame/sprite.py", line 361, in add
    sprite.add_internal(self)
  File "/usr/lib/python3/dist-packages/pygame/sprite.py", line 163, in add_internal
    self.__g[group] = 0
AttributeError: 'Projectile' object has no attribute '_Sprite__g'