IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Programmation multimédia/Jeux Python Discussion :

NameError: ma variable n'est pas définie ?


Sujet :

Programmation multimédia/Jeux Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Deficient visuel
    Inscrit en
    Mai 2019
    Messages
    216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Deficient visuel

    Informations forums :
    Inscription : Mai 2019
    Messages : 216
    Par défaut NameError: ma variable n'est pas définie ?
    Bonjour a toutes et a tous ,
    Je sollicite votre aide pour quelque chose sur lequel je bloque .
    Voici ma classe :

    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
    import pygame
     
    #creer une classe qui s'occuper des animations
    class AnimateSprite(pygame.sprite.Sprite):
     
        #definir les choses a faire a la creation de l'entité
        def __init__(self,sprite_name):
            super().__init__()
            self.image = pygame.image.load(f'assets/{sprite_name}.png')
            #commence l'anim a image 0
            self.current_image = 0 
            self.images = animations.get(sprite_name)
     
        #definir une methode pour animer le sprite
        def animate(self):
            #passer a l'image suivante
            self.current_image += 1
     
            #verifier si on atteint la fin de l'animation
            if self.current_image >= len(self.images):
                #remettre l'anim au depart
                self.current_image = 0
     
            #actualiser l'image precedente par la suivante
            self.image = self.images[self.current_image]
     
     
        def load_animation_images(sprite_name):
            #charger les 24 images du sprite dans le dossier
            images = []
            #recuperer le chemin du dossier pour ce sprite
            path = f"assets/{sprite_name}/{sprite_name}"
     
            #boucler sur chaque image dans ce dossier
            for num in range(1,24):
                image_path = path + str(num)+ '.png'
                images.append(pygame.image.load(image_path))
     
            #renvoyer le contenu de la liste d'images
            return images
     
     
        #definir un dictionnaire qui va contenir les images chargées
        #de chaque sprite
        animations = {
            'mummy': load_animation_images('mummy')
        }
    Lorsque je lance mon main.py , j'ai ce message :

    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
    chris@chris:~/Bureau/Sauvegarde/copie3$ python3 main.py 
    pygame 2.0.1 (SDL 2.0.14, Python 3.8.10)
    Hello from the pygame community. https://www.pygame.org/contribute.html
    Traceback (most recent call last):
      File "main.py", line 73, in <module>
        game.start()
      File "/home/chris/Bureau/Sauvegarde/copie3/game.py", line 24, in start
        self.spawn_monster()
      File "/home/chris/Bureau/Sauvegarde/copie3/game.py", line 83, in spawn_monster
        monster = Monster(self)
      File "/home/chris/Bureau/Sauvegarde/copie3/monster.py", line 8, in __init__
        super().__init__("mummy")
      File "/home/chris/Bureau/Sauvegarde/copie3/animation.py", line 12, in __init__
        self.images = animations.get(sprite_name)
    NameError: name 'animations' is not defined
    chris@chris:~/Bureau/Sauvegarde/copie3$
    Cela doit etre evident pour vous , mais je ne vois pas ou j'ai fauté . Peut etre une indentation ?
    D'avance , merci de votre aide

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 762
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 762
    Par défaut
    Salut,

    Citation Envoyé par chris7522 Voir le message
    Cela doit etre evident pour vous , mais je ne vois pas ou j'ai fauté . Peut etre une indentation ?
    Peut être même plusieurs...

    A priori vous devez savoir coder pour écrire ce genre de constructions et savoir répondre à ce genre de question par vous même.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Membre confirmé
    Homme Profil pro
    Deficient visuel
    Inscrit en
    Mai 2019
    Messages
    216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Deficient visuel

    Informations forums :
    Inscription : Mai 2019
    Messages : 216
    Par défaut
    Pas vraiment , j'étudie une suite de vidéo qui explique pas a pas la réalisation d'un petit jeu tres simple , quelque chose a du m'échapper lors de l'explication . Je comprends ce que j'étudie mais je suis bien incapable de coder ce jeu par moi meme .
    Je souhaitais avoir votre analyse sur ce bout de code , dans le cas contraire , je vais devoir reprendre depuis le debut .
    Merci de votre aide !

  4. #4
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 762
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 762
    Par défaut
    Salut,

    Citation Envoyé par chris7522 Voir le message
    Je comprends ce que j'étudie mais je suis bien incapable de coder ce jeu par moi meme. Je souhaitais avoir votre analyse sur ce bout de code , dans le cas contraire , je vais devoir reprendre depuis le debut.
    Si vous êtes incapable de coder ce jeu par vous même, c'est que vous vous contentez de recopier des bouts de code.... et apprendre à mieux recopier, c'est juste comparer ce que vous avez recopié avec l'original.

    Si vous espérez apprendre à programmer ainsi, ça ne va pas le faire...
    Reprenez depuis le début si ça vous chante... mais si vous voulez apprendre à programmer, il va falloir être beaucoup plus "actif" (mettre les mains dans le cambouis et apprendre les bases avant de vous esbaudir de ce qu'on peut faire lorsqu'on a un peu appris).

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  5. #5
    Membre confirmé
    Homme Profil pro
    Deficient visuel
    Inscrit en
    Mai 2019
    Messages
    216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Deficient visuel

    Informations forums :
    Inscription : Mai 2019
    Messages : 216
    Par défaut
    Je ne me contente pas de recopier .
    Ces vidéos sont l'occasion de mettre en pratique mes modestes connaissances et d' apprendre de nouvelles choses . Je progresse a mon rythme sans me mettre la préssion et ca me convient parfaitement .
    Merci tout de meme de votre aide et de vos encouragements, ca fait toujours plaisir .
    Tres bon week-end a vous tous

  6. #6
    Membre émérite Avatar de Cincinnatus
    Homme Profil pro
    Développeur d'applications métier
    Inscrit en
    Mars 2007
    Messages
    593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur d'applications métier
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2007
    Messages : 593
    Par défaut
    Bonjour,

    On peut toujours progresser, dans n'importe quel langage.
    Pour répondre au blocage soumis ici, il apparaît que les dernières lignes du fichier sont indentées, alors qu'elles devraient peut-être commencer en début de ligne, si 'animations' est une variable globale :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    animations = {
     'mummy': load_animation_images('mummy') 
    }
    Ensuite, l'expérience grandit un peu à la fois, on pose une brique après l'autre .

    (pas sûr que le rendu de l'indentation soit explicite dans l'extrait ci-dessus...)

Discussions similaires

  1. Réponses: 2
    Dernier message: 05/06/2007, 17h22
  2. Réponses: 8
    Dernier message: 04/06/2007, 16h20
  3. Réponses: 24
    Dernier message: 01/06/2007, 09h26
  4. Réponses: 8
    Dernier message: 11/07/2006, 17h27
  5. [MySQL] Echange de valeurs dont le nombre n'est pas défini
    Par Diafwl dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 31/01/2006, 10h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo