#1 Le 26/03/2021, à 17:48
- PhenX
Probleme d'argument en python [RESOLU]
Bonjour,
je suis en train d'apprendre le python, et j'ai un petit soucis.
Lorsque je lance le programme il me met :
File "play.py", line 23, in move
self.perso_x += self.move_x
AttributeError: 'Perso' object has no attribute 'perso_x'
et je ne comprend pas ou les le probleme.
Voici mon code:
import pygame
import time
pygame.init()
WIDTH = 1020
HEIGHT = 600
perso_standW = 75
perso_standH = 100
surface = pygame.display.set_mode((WIDTH,HEIGHT))
pygame.display.set_caption("GameShooter")
background = pygame.image.load("./sprites/background.png").convert()
rect = background.get_rect()
perso_stand = pygame.image.load("./sprites/perso_stand.png")
class Perso:
def __init__(self, perso_x, perso_y):
super().__init__()
move_x = 0
move_y = 0
def move(self,perso_x, perso_y):
self.perso_x += self.move_x
def main():
clock = pygame.time.Clock()
game_over = False
perso_x = 30
perso_y = 500
perso = Perso(perso_x,perso_y)
while not game_over:
for event in pygame.event.get():
if event.type == pygame.QUIT:
game_over = True
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_RIGHT:
perso.move(5,0)
if event.type == pygame.KEYUP:
if event.key == pygame.K_RIGHT:
perso.move(-5,0)
surface.blit(background,(0,0))
surface.blit(background,rect)
surface.blit(perso_stand, (perso_x,perso_y))
pygame.display.update()
clock.tick(60)
main()
pygame.quit()
quit()
merci a vous,
Dernière modification par PhenX (Le 27/03/2021, à 15:06)
Hors ligne
#2 Le 26/03/2021, à 18:04
- Nuliel
Re : Probleme d'argument en python [RESOLU]
Bonjour,
Tu n'as pas initialisé perso_x, perso_y dans __init__, donc je pense qu'il faut rajouter self.perso_x= perso_x et self.perso_y = perso_y, sinon à quoi sert super() ici?
Dernière modification par Nuliel (Le 26/03/2021, à 18:05)
Hors ligne
#3 Le 26/03/2021, à 19:49
- beuguissime
Re : Probleme d'argument en python [RESOLU]
Bonjour,
Même remarque que Nulliel que j'étends à self.move_x et self.move_y (?) qui n'existent pas en l'état.
super().__init__() est inutile ici.
Dernière modification par beuguissime (Le 26/03/2021, à 19:50)
Hors ligne
#4 Le 27/03/2021, à 13:43
- PhenX
Re : Probleme d'argument en python [RESOLU]
merci a tout les deux, ca fonctionne du coup !
A vrai dire je nai pas bie compris a quoi servait super().__init__()
Hors ligne
#5 Le 27/03/2021, à 14:24
- Nuliel
Re : Probleme d'argument en python [RESOLU]
Cela ne te sert pas ici vu que tu n'as visiblement qu'une classe. super est utile pour faire de l'héritage: par exemple au lieu de faire des classes Magicien, Guerrier, ... qui contiendront tous la variable point_de_vie, XP ou d'autres, en fait tu peux faire une classe Personnage qui aura ces attributs, et faire hériter Magicien, Guerrier, ... de la classe Personnage afin d'éviter de redéfinir ces variables dans toutes les classes.
Hors ligne
#6 Le 27/03/2021, à 15:05
- PhenX
Re : Probleme d'argument en python [RESOLU]
top, merci pour l' explication
Hors ligne