Partage
  • Partager sur Facebook
  • Partager sur Twitter

AttributeError

    25 mai 2020 à 11:41:51

    Bonjour, voila quelques jours que je me suis remis à faire du pygame, et pour me rafraîchir la mémoire, j'ai décidé de suivre un tuto pour faire un jeu. Seulement, je le code à ma sauce, et par conséquent j'obtiens des erreurs différentes à celles du tuto(dont je vous met le lien ici:https://youtu.be/8J8wWxbAdFg).

    Pour faire bref voici mon code:

    import pygame
    from pygame import *
    from player import *
    pygame.init()
    
    #notre fenêtre
    screen = pygame.display.set_mode((1080, 720))
    titre = pygame.display.set_caption("Mon_Jeu")
    backg = pygame.image.load("bg.jpg")
    
    #mon perso et mon game
    game = Game()
    
    #projectiles
    
    
    #variables
    boucle = True
    
    #boucle infinie
    pygame.key.set_repeat(1, 20)
    while boucle:
    
        screen.blit(backg, (0,-200))
        screen.blit(game.perso.image, game.perso.rect)
        
        for event in pygame.event.get():
            if event.type == QUIT:
                boucle = False
            if event.type == KEYDOWN:
                if event.key == K_RIGHT and game.perso.rect.x <880:
                    game.perso.droite()
                if event.key == K_LEFT and game.perso.rect.x >0:
                    game.perso.gauche()
                if event.key == K_SPACE:
                    game.perso.lancer()
                    
        
        pygame.display.flip()
    
        
    pygame.quit()
    
    

    voici mes classes:

    import pygame
    from pygame import *
    
    #classe player
    class Player(pygame.sprite.Sprite):
        def __init__(self):
            super(). __init__()
            
            self.vie = 100
            self.vie_max = 100
            self.attaque = 10
            self.vitesse = 5
            self.all_projectiles = pygame.sprite.Group()
            self.image = pygame.image.load("player.png")
            self.rect = self.image.get_rect()
            self.rect.x = 200
            self.rect.y = 500
    
        def lancer(self):
            self.all_projectiles.add(Projectile())
            
        def droite(self):
            self.rect.x += self.vitesse
    
        def gauche(self):
            self.rect.x -= self.vitesse
    
    
    
    #classe game
    class Game():
        def __init__(self):
            self.perso = Player()
            
    
    #classe projectile
    class Projectile(pygame.sprite.Sprite):
        def __init__(self):
            self.velocity = 5
            self.image = pygame.image.load("projectile.png").convert_alpha()
            self.rect = self.image.get_rect()
    

    quand je lance le script puis que j'appuie sur la barre d'espace, voici l'erreur qui s'affiche :

    Traceback (most recent call last):
      File "C:\Users\paulb\OneDrive\Bureau\Python\mon_jeu.py", line 36, in <module>
        game.perso.lancer()
      File "C:\Users\paulb\OneDrive\Bureau\Python\player.py", line 20, in lancer
        self.all_projectiles.add(Projectile())
      File "C:\Users\paulb\AppData\Local\Programs\Python\Python38-32\lib\site-packages\pygame\sprite.py", line 361, in add
        sprite.add_internal(self)
      File "C:\Users\paulb\AppData\Local\Programs\Python\Python38-32\lib\site-packages\pygame\sprite.py", line 163, in add_internal
        self.__g[group] = 0
    AttributeError: 'Projectile' object has no attribute '_Sprite__g'

    Merci d'avance !!


    • Partager sur Facebook
    • Partager sur Twitter
      25 mai 2020 à 12:27:33

      class Projectile(pygame.sprite.Sprite):
          def __init__(self):
              super().__init__() # ici l'oubli
              self.velocity = 5
              self.image = pygame.image.load("projectile.png").convert_alpha()
              self.rect = self.image.get_rect()
      Tu as oublié d'initialiser la classe Sprite.
      • Partager sur Facebook
      • Partager sur Twitter

      Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
      La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

      AttributeError

      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
      • Editeur
      • Markdown