Rect argument is invalid

Viewed 17

I'm building a game with Sprites, using almost exactly the same code for all the sprites. But when it comes to my ship its telling me I have no rect or colliderect is invalid etc etc etc. I tried to put a box around my 'rect' to make sure it was loaded correctly but I just get this error. My code for the ship is

class Spaceship(pygame.sprite.Sprite):
    def __init__(self, x, y, scale):
        pygame.sprite.Sprite.__init__(self)
        self.image = pygame.image.load("ship.png")
        self.image = pygame.transform.scale(self.image, (int(self.image.get_width() * scale), int(self.image.get_height() * scale)))
        self.rect = self.image.get_rect() # isn't this correct to get a rect!?
        self.rect.center = [x, y]
        self.pos = pygame.mouse.get_pos()
        self.alive = True
        self.speed = 100
        self.dx = 0
        self.dy = 0
        self.x = 0
        self.y = 0
    def update(self):
        pygame.draw.rect(screen,(GREEN), self.rect, 2) # Trying to establish rect object
        
        self.pos = pygame.mouse.get_pos()
        self.dx = (self.pos[0])
        self.dy = (self.pos[1])
        if self.x +20 <= self.dx:
            self.x += speed
        if self.x +20 >= self.dx:
            self.x -= speed
        self.y = (self.pos[1])
        if self.y +20 <= self.dy:
            self.y += speed
        if self.y +20 >= self.dy:
            self.y -= speed
        print(self.pos[0])
        print(self.pos[1])
        if self.x >= SW - 40:
            self.x = SW - 40
        if self.x <= 0:
            self.x = 0
        if self.y >= SH -40:
            self.y = SH - 40
        if self.y <= SH - 600:
            self.y = SH - 600
        
        self.blit = (self.x, self.y)
        self.rect = (self.x, self.y)

If I can't get this rect right I can't check rect collisions. Thanks for any thoughts.

0 Answers
Related