Bonjour à tous,
je suis nouveau en programmation, j'ai donc suivi un tutoriel pour essayer de programmer un petit jeu néanmoins je me heurte a une erreur que je ne comprends pas. Pouvez-vous m'éclairer ?
je tiens a vous précisé que l'erreur vient depuis que j'ai ajouter la ligne :
sans cette ligne le jeu fonctionne
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 if self.player.game.check_collision(self, self.player.game.all_players): #si on touche le monstre on supp self.remove()
Merci par avance a toutes les personnes qui vont essayer de m'aider !
erreur :
AttributeError: 'Player' object has no attribute 'game'
CODE main.py :
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 import pygame from player import Player from game import Game pygame.init() #generer la fenetre du jeu pygame.display.set_caption("j'apprends a programmer") screen = pygame.display.set_mode((1600, 900)) background = pygame.image.load('PygameAssets-main/bg.jpg') #charger img joueur player = Player() game = Game() running = True while(running): #applique l'arrire plan screen.blit(background, (0, 0)) #applique img joueur screen.blit(game.player.image,game.player.rect) #recup les projectiles du joueur for projectile in game.player.all_projectiles: projectile.movedroit() for monster in game.all_monsters: monster.avancer() #appliquer le groupe de projectile ( LE DESSINE ) game.player.all_projectiles.draw(screen) #appliquer l'ensemble de groupe d'image monster game.all_monsters.draw(screen) if game.pressed.get(pygame.K_RIGHT) and game.player.rect.x < 1500: game.player.move_right() elif game.pressed.get(pygame.K_LEFT) and game.player.rect.x > -70: game.player.move_left() #maj de l'image pygame.display.flip() #si je ferme la fenetre for event in pygame.event.get(): #verif levent if event.type == pygame.QUIT: running = False pygame.quit() print("FIN") elif event.type == pygame.KEYDOWN: game.pressed[event.key] = True #espace pour tirer if event.key == pygame.K_1: game.player.launch_projectile() elif event.key == pygame.K_2: game.player.launch_projectile() elif event.type == pygame.KEYUP: game.pressed[event.key] = False print(game.player.rect)
CODE projectile.py :
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 import pygame #def class pour le projectile class Projectile(pygame.sprite.Sprite): #def constructeur def __init__(self, player): super().__init__() self.velocity = 1 self.player = player self.image = pygame.image.load('PygameAssets-main/projectile.png') self.image = pygame.transform.scale(self.image, (25, 25)) self.rect = self.image.get_rect() self.rect.x = player.rect.x + 100 self.rect.y = player.rect.y + 50 self.origin_image = self.image self.angle = 0 def rotate(self): #tourne la crotte de nez self.angle += 1 self.image = pygame.transform.rotozoom(self.origin_image, self.angle, 1) self.rect = self.image.get_rect(center=self.rect.center) def remove(self): # efface le projectile self.player.all_projectiles.remove(self) def movedroit(self): self.rect.x += self.velocity self.rotate() #verif si on touche le monstre if self.player.game.check_collision(self, self.player.game.all_players): #si on touche le monstre on supp self.remove() #enlever le projectile qd il sort de l'écran if self.rect.x > 1700: self.remove() def movegauche(self): self.rect.x -= self.velocity
CODE game.py :
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 import pygame from player import Player from monster import Monster from projectile import Projectile class Game: def __init__(self): #generer joueur ds la parti self.all_players = pygame.sprite.Group self.player = Player() self.all_players.add(self.player) #groupe de monster self.all_monsters = pygame.sprite.Group() self.pressed = {} self.spawn_monster() def check_collision(self, sprite, group): return pygame.sprite.spritecollide(sprite, group, False, pygame.sprite.collide_mask) def spawn_monster(self): monster = Monster(self) self.all_monsters.add(monster)
CODE player.py :
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 import pygame from projectile import Projectile class Player(pygame.sprite.Sprite): def __init__(self): super().__init__() self.health = 100 self.max_health = 100 self.attack = 25 self.velocity = 1 self.all_projectiles = pygame.sprite.Group() #range les projectiles dans ce groupe self.image = pygame.image.load('PygameAssets-main/player.png') self.rect = self.image.get_rect() self.rect.x = 400 self.rect.y = 450 def move_right(self): self.rect.x += self.velocity def move_left(self): self.rect.x -= self.velocity def launch_projectile(self): #créer une intance de la classe projectile #projectile = Projectile() self.all_projectiles.add(Projectile(self))
CODE monster.py :
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 import pygame from player import Player from projectile import Projectile class Monster(pygame.sprite.Sprite): def __init__(self, game): super().__init__() self.game = game self.health = 100 self.max_health = 100 self.attack = 5 self.image = pygame.image.load('PygameAssets-main/mummy.png') self.rect = self.image.get_rect() self.rect.x = 1500 self.rect.y = 420 self.velocity = 1 def avancer(self): #if not self.game.check_collision(self, self.game.all_players): self.rect.x -= self.velocity
Partager