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

Python Discussion :

Pygame : bug de position/probl�me avec les classes


Sujet :

Python

  1. #1
    Membre averti
    Homme Profil pro
    Lyc�en
    Inscrit en
    Octobre 2017
    Messages
    23
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, H�rault (Languedoc Roussillon)

    Informations professionnelles :
    Activit� : Lyc�en

    Informations forums :
    Inscription : Octobre 2017
    Messages : 23
    Par d�faut Pygame : bug de position/probl�me avec les classes
    Bonjour � vous tous !!

    J'ai un probl�me que je n'arrive pas � r�soudre :'(

    En faite, je suis en train de faire un jeu et j'essaye d'incorporer un syst�me de d�placement pour les ennemies (comme ceux de mario qui font des aller-retour � l'infini).

    J'ai donc fais une classe pour les ennemis. Cependant, je n'arrive pas � modifier la position de l'ennemie en dehors de la classe..

    Voici ce que j'ai fais :

    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
    #COULEUR
    BLANC = (255,255,255)
    NOIR =  (  0, 0, 0)
     
    background = pygame.Surface(fenetre.get_size())
    img_ennemie = pygame.Surface((60,60))
    img_ennemie.fill(BLANC)
     
    class Enemy():
        """Classe permettant la gestion des enemis"""
     
        def __init__(self, image, posX, posY):
            """Constructeur de la classe Enemy"""
     
            self.image = image
            self.rect = self.image.get_rect()
            self.posX = posX
            self.rect.x = posX
            self.rect.y = posY
     
            #distanceTravel
            self.distanceXtravel = 0
            self.distanceYtravel = 0
     
        def distanceTravel(self, vitesse, distanceTravel):
            """Fonction permettant la gestion du travel de l'ennemi:
                    -distanceTravel : distance aller/retour que l'ennemi va faire (quand il va "rôder")"""
     
            self.distanceXtravel += vitesse
     
            self.rect.x =  (cos(self.distanceXtravel) * distanceTravel) + self.posX
     
        def update_ennemie(self):
            """Fonction permettant l'update de l'ennemie"""
     
            fenetre.blit(self.image,self.rect)
     
    ennemie = Enemy(img_ennemie, 150, 50)
    #Boucle événementielle
    continuer = True
    while continuer:
        clock = pygame.time.Clock()
        for event in pygame.event.get():
            if event.type == QUIT:
                    continuer = False
     
     
        ennemie.rect.x += 100 #j'ai l'impression que cette commande ne fait rien, même si je met à += 1000
            print(ennemie.rect.x)
     
        #Logique de jeu
     
        ennemie.distanceTravel(0.01,100)
        fenetre.blit(background, (0,0))
     
        #L'affichage du jeu
        ennemie.update_ennemie()
     
        #Rafraichissement
        pygame.display.flip()
        clock.tick(60)


    UN GRAND MERCI A VOUS !

  2. #2
    Expert confirm�
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 095
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activit� : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 095
    Par d�faut
    Pourquoi n'y a-t-il pas une m�thode repr�sentant l'action d�placer dans votre classe ?

    Pour votre probl�me, vous n'utilisez pas la m�thode move de l'objet Rect je pense... J'utilise pas pygame, mais la documentation semble claire.

  3. #3
    Membre averti
    Homme Profil pro
    Lyc�en
    Inscrit en
    Octobre 2017
    Messages
    23
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, H�rault (Languedoc Roussillon)

    Informations professionnelles :
    Activit� : Lyc�en

    Informations forums :
    Inscription : Octobre 2017
    Messages : 23
    Par d�faut
    Bonjour,

    Il y a bien une m�thode de d�placement : distanceTravel.
    Mais j'ai compris mon erreur : je modifie ennemie.rect.x mais juste apr�s j'�crase cette valeur en appliquant la m�thode distanceTravel..

    J'ai juste � faire ennemie.posX += 1 plut�t que ennemie.rect.x += 1 et �a marche !

  4. #4
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ing�nieur d�veloppement logiciels
    Inscrit en
    F�vrier 2006
    Messages
    12 848
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activit� : Ing�nieur d�veloppement logiciels
    Secteur : A�ronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : F�vrier 2006
    Messages : 12 848
    Billets dans le blog
    1
    Par d�faut
    Bonjour
    Citation Envoy� par Pricex3 Voir le message
    J'ai juste � faire ennemie.posX += 1 plut�t que ennemie.rect.x += 1 et �a marche !
    Moui. Peut-�tre que �a marche mais que 15 instructions plus loin �a ne marchera plus. Apr�s-tout, dans ton __init__ tu copies posX dans rect.x donc peut-�tre que c'est important que les deux valeurs soient �gales. Ou alors peut-�tre que l'une des deux ne sert � rien.
    Bref g�n�ralement, on �vite de toucher directement aux �l�ments internes de l'objet et on pr�f�re passer par des m�thodes d�di�es...
    Mon Tutoriel sur la programmation �Python�
    Mon Tutoriel sur la programmation �Shell�
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les diff�rentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

Discussions similaires

  1. probl�me avec les classes abstraite avec C#
    Par takfa2008 dans le forum C#
    R�ponses: 1
    Dernier message: 29/06/2009, 10h25
  2. R�ponses: 5
    Dernier message: 22/09/2007, 20h27
  3. Probl�me avec les classes HttpWebRequest et HttpWebResponse sous C#
    Par zouzoulikou dans le forum G�n�ral Dotnet
    R�ponses: 1
    Dernier message: 14/08/2007, 01h46
  4. Probl�me avec les classes
    Par 30barrett40 dans le forum C++
    R�ponses: 6
    Dernier message: 28/03/2007, 14h04
  5. [POO] PHP5 : Probl�me avec les classes
    Par fleur_de_rose dans le forum Langage
    R�ponses: 9
    Dernier message: 06/05/2006, 19h09

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