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.

Reply via email to