Andrei Petrut
Andrei Petrut

Reputation: 25

Change color of Pygame Surface

I've made a Rectangle class:

class Rectangle(pygame.sprite.Sprite):
def __init__(self, len, x, y, color):
    pygame.sprite.Sprite.__init__(self)
    self.image = pygame.Surface((len, len), flags=pygame.SRCALPHA)
    # self.image.set_colorkey(Constants.WHITE)
    self.image.fill(color)
    self.rect = self.image.get_rect()
    self.rect.center = (x + len / 2, y + len / 2)
    self.is_blocked = False
    self.x_pos = x
    self.y_pos = y
    self.x = math.floor((x - Constants.PADTOPBOTTOM) / Constants.CELL_SIZE)
    self.y = math.floor((y - Constants.PADLEFTRIGHT) / Constants.CELL_SIZE)

def update(self):
    if self.is_blocked:
       print("is update working?") # it is working. 
       self.image.fill(Constants.GREEN)

And when update() is called I want to change the color of the rectangle to green but it doesn't work. I'm new to pygame and I don't know what to do.

Upvotes: 1

Views: 819

Answers (1)

sloth
sloth

Reputation: 101042

Your problem is that you keep creating new sprites every frame, so when you change the color of one Rectangle to green, it will be covered by a white one.

You do this by calling the fill function (which creates new Rectangle instances) inside the drawGrid function.

Upvotes: 2

Related Questions