Erreur : 'Player' object has no attribute 'move_right' (avec pygame)

Fermé
Katana - 6 juil. 2021 à 19:20
 stoic - 6 juil. 2021 à 22:59
import pygame
pygame.init()

class Game:
  def __init__(self):
   self.player = Player()


class Player(pygame.sprite.Sprite):
  
  def __init__(self):
    super().__init__() 
    self.health = 100
    self.max_health = 100
    self.attack = 10
    self.velocity = 5
    self.image = pygame.image.load('sprite/Player.png')
    self.rect = self.image.get_rect()
    self.rect.x = 5
    self.rect.y = 340
    
def move_right(self):
 self.rect.x += self.velocity
def move_left(self):
 self.rect.x -= self.velocity



Game = Game()

pygame.display.set_caption("jeu")
screen = pygame.display.set_mode((1080, 720))
running = True
print("ouvert")

background = pygame.image.load('sprite/BG.jpg')

while running:
 
 screen.blit(background, (0, -200))
 screen.blit(Game.player.image, Game.player.rect)
 
 pygame.display.flip()

 for event in pygame.event.get():
   if event.type == pygame.QUIT:
     running = False
 
   elif event.type == pygame.KEYDOWN:
    if event.key == pygame.K_RIGHT:
     Game.player.move_right()

   elif event.type == pygame.KEYDOWN:
    if event.key == pygame.K_LEFT:
     Game.player.move_left()


Après ça, on m'affiche une erreur disant que move_righ n'est pas attribué à Player.

Merci d'avance,
Moi-même
A voir également:

1 réponse

Bonsoir,

Tu ne vois pas qu'il y a un souci d'indentation ?

move_right et move_left ne sont pas des méthodes de la classe Player, mais de simples fonctions dans ton code, corrige en indentant ces deux fonctions au même niveau que le "constructeur" __init__.
0