0

I got this Error: 'Ball' object has no attribute 'sprites'

The part where error occurs:

brick_collision_list = pg.sprite.spritecollide(brick, ball, False)
    for brick in brick_collision_list:
        print("collision")

The Ball and Brick class:

class Ball:
    def __init__(self):
        self.ball_img = pg.image.load("D:/MeineProgramme/Texturen/ball.png")
        self.x = 395
        self.y = 530
        self.speed = [0.12, -0.12]
        self.rect = self.ball_img.get_rect()


    def bounce(self):
        self.speed[0] = -self.speed[0]
        self.speed[1] = -0.12

class Brick(pg.sprite.Sprite):
    def __init__(self, color, width, height):
        super().__init__()

        self.image = pg.Surface([width, height])
        self.image.fill(BLACK)
        self.image.set_colorkey(BLACK)

        pg.draw.rect(self.image, color, [0, 0, width, height])
        self.rect = self.image.get_rect()
    def destroy(self):
        pass

pls help me I am a beginner and have no idea what's wrong

1 Answers1

0

sprite.spritecollide is to finde a collision of a pygame.sprite.Sprite and a pygame.sprite.Group of sprites.
To find a collision between 2 Sprites you have to use pygame.sprite.collide_rect:

if pygame.sprite.collide_rect(brick, ball):
    print("collision")

Additionally Ball should be derived from pg.sprite.Sprite:

class Ball(pg.sprite.Sprite):
    def __init__(self):
        super().__init__()
        self.image = pg.image.load("D:/MeineProgramme/Texturen/ball.png")
        self.rect = self.image .get_rect(center = (395, 530))
        self.speed = [0.12, -0.12]
Rabbid76
  • 202,892
  • 27
  • 131
  • 174