UMM actually -- BoomTower has 2 rect objects: rect (the tower itself) and rangerect (a specific area around the tower). It's rangerect i have to fill.
--- On Sun, 11/8/09, stabbingfinger <stabbingfinger@xxxxxxxxx> wrote:
From: stabbingfinger <stabbingfinger@xxxxxxxxx> Subject: Re: [pygame] Fill a Rect object with color? To: pygame-users@xxxxxxxx Date: Sunday, November 8, 2009, 1:39 AM
Lemme borrow Russell's method to show what I think is your missing piece: some way of getting a boom tower's rectangle onto the game's playfield (the main PyGame surface). Run it, and left-click the mouse to change the state of the boom tower.
import
pygame from pygame.locals import * class BoomTower: def __init__(self, bounds, normal_color, fire_color): self.normal_image = pygame.Surface((bounds.w,bounds.h)) self.normal_image = self.normal_image.convert() self.normal_image.fill(normal_color) ## Set the colour to the default self.fire_image = pygame.Surface((bounds.w,bounds.h)) self.fire_image = self.fire_image.convert() self.fire_image.fill(fire_color) self.current_image = self.normal_image def get_current_image(self): return self.current_image def shoot(self): ## Your other code here if
self.current_image is self.normal_image: self.current_image = self.fire_image else: self.current_image = self.normal_image def draw(self, surface, pos): rect = self.current_image.get_rect() rect.center = pos surface.blit(self.current_image, rect) pygame.init() pygame.display.set_mode((800,600)) s = pygame.display.get_surface() r = pygame.Rect(50,50,100,100) boom_tower = BoomTower(r, Color("white"), Color("red")) while 1: for event in pygame.event.get(): if event.type == MOUSEBUTTONDOWN: boom_tower.shoot() boom_tower.draw(s,
r.center) pygame.display.flip()
Gumm
Russell Cumins wrote: > I'm not 100% sure what you are wanting to change the colour so forgive me if I'm going off on a tangent here. From what you have said thus far I am assuming you want to change the colour of the BoomTower object when it if firing. > > What I would do is this... > > class BoomTower: > def __init__(self,position,size,colour,fireColour): > self.colour = colour > self.fireColour = fireColour > self.rect = Rect(position,size) > self.image = Surface(size) > self.image.fill(colour) ## Set the colour to the default > > def shoot(self,...): >
...## Your other code here > self.image.fill(self.fireColour) > > You probably need to add some more code elsewhere to change the colour back for when the BoomTower object is not firing.
|