Jun-09-2021, 02:57 PM
(This post was last modified: Jun-09-2021, 02:57 PM by paulmills3.)
Getting an AttributeError(AttributeError: 'builtin_function_or_method' object has no attribute 'get_rect') after I added code to switch Sprite Animations when arrow keys are clicked.
Wondering what I need to change?
Below is my Sprite1 Class and the relevant code from the main file.
(PyGame)
Sprite1 Class:
------------------------------------------------------
----------------------------------------------------------
Wondering what I need to change?
Below is my Sprite1 Class and the relevant code from the main file.
(PyGame)
Sprite1 Class:
------------------------------------------------------
import pygame class Sprite1(pygame.sprite.Sprite): def __init__(self): super().__init__() self.faceUp = True self.faceDown = False self.faceLeft = False self.faceRight = False self.image = pygame.image.load('player.png').convert_alpha self.rect = self.image.get_rect() def facing(self): if self.faceUp == True: self.image = pygame.image.load('player.png').convert_alpha self.rect = self.image.get_rect() elif self.faceDown == True: self.image = pygame.image.load('playerDown.png').convert_alpha self.rect = self.image.get_rect() elif self.faceLeft == True: self.image = pygame.image.load('playerLeft.png').convert_alpha self.rect = self.image.get_rect() elif self.faceRight == True: self.image = pygame.image.load('playerRight.png').convert_alpha self.rect = self.image.get_rect()Relevant Bits from Main File:
----------------------------------------------------------
import pygame from sprite1 import Sprite1 pygame.init() #game Window screen_width = 800 screen_height = 400 screen = pygame.display.set_mode((screen_width, screen_height)) pygame.display.set_caption('Warrior Quest') #setup player player = Sprite1() player.rect.x = 400 player.rect.y = 380 #game loop running running = True while running: draw_bg() if main_menu == True: if start_button.draw(): main_menu = False if cancel_button.draw(): running = False else: player.draw(screen) keys = pygame.key.get_pressed() if keys[pygame.K_LEFT] and player.rect.x>5: player.faceLeft = True player.facing() player.rect.x -= 5 if keys[pygame.K_RIGHT] and player.rect.x<790: player.faceRight = True player.facing() player.rect.x += 5 if keys[pygame.K_UP] and player.rect.y>10: player.faceUp = True player.facing() player.rect.y -= 5 if keys[pygame.K_DOWN]and player.rect.y<395: player.faceDown = True player.facing() player.rect.y += 5 for event in pygame.event.get(): if event.type == pygame.QUIT: running = False pygame.display.update() pygame.quit()