AttributeError: type object ... has no attribute ...
Résolu
Alan.b
Messages postés
1
Date d'inscription
Statut
Membre
Dernière intervention
-
Utilisateur anonyme -
Utilisateur anonyme -
Bonjour,
Désolé de vous déranger, je suis un peu perdu, car je débute en programmation. Je regarde actuellement une vidéo pour coder un jeu, mais j'ai un problème quelque part. J'ai recopié exactement ce qui est indiqué dans la vidéo tel quel, mais j'ai un problème à la ligne 33 du programme.
import pygame pygame.init() # creer une premiere classe pour le joueur class player(pygame.sprite.Sprite): # sprite = element graphique pouvant se deplacer etc /joueur monstre def __init__(self): super().__init__() self.health = 100 self.max_health = 100 self.attack = 10 self.velocity = 5 self.image = pygame.image.load('assets/player.png') self.rect = self.image.get_rect() # generer la fenetre de jeu pygame.display.set_caption("meteor game") screen = pygame.display.set_mode((1080 ,720)) # importer l'arriere plan du jeu backround = pygame.image.load("assets/bg.jpg") # charger notre joueur running = True #running true = boucle tant que la condition est vraie while running: screen.blit(player.image, player.rect) #appliquer l'arriere plan du jeu screen.blit(backround, (0, -200)) # appliquer l'image du joueur screen.blit(player.image, player.rect) #mettre a jour l'ecran pygame.display.flip() # si le joueur ferme cette fenetre for event in pygame.event.get(): # verifier que l'evenement est fermeture de fenetre if event.type == pygame.QUIT: running = False pygame.quit() print("fermeture du jeu")
J'ai fait la commande me permettant de faire apparaître mon personnage, mais une fois que je lance le programme, ça me met ce message d'erreur
screen.blit(player.image, player.rect)
^^^^^^^^^^^^
AttributeError: type object 'player' has no attribute 'image'
Si quelqu'un pouvait m'aider rapidement, ça m'aiderait merci beaucoup
PS: c'est la première fois que je poste, désolé pour la qualité
Windows / Edge 126.0.0.0
Windows / Edge 126.0.0.0
A voir également:
- AttributeError: type object ... has no attribute ...
- AttributeError: 'NoneType' object has no attribute 'send' discord.py ✓ - Forum Python
1 réponse
Bonjour.
Modifie le nom de la classe player en Player (ajout d'une majuscule).
class Player(pygame.sprite.Sprite): # sprite = element graphique pouvant se deplacer etc /joueur monstre def __init__(self): super().__init__() self.health = 100 self.max_health = 100 self.attack = 10 self.velocity = 5 self.image = pygame.image.load('assets/player.png') self.rect = self.image.get_rect()
Puis sous la ligne # charger notre joueur, ajoute :
player = Player()
Bonjour
peut-être expliquer le pourquoi du comment.
Nommer une classe avec une majuscule en premier (Camel Case) fair partie des bonnes pratiques.
Quand à la variable player, comme toute variable en python, tant qu'on ne lui a pas affecté de valeur, python ne sait pas de quel type elle est (en plus de ne pas avoir de valeur).
Et dans ton cas, appeler la classe Player, aurait pu permettre de ne pas la confondre la variable player.