# sprite class - used for most graphic objects import random import pygame from pygame.locals import * import game, gfx GROUND_OBJECT = 'ground' AIR_OBJECT = 'air' UNDEFINED_OBJECT = 'undefined' class Sprite: """Base sprite class - used for most graphic objects; subclasses must provide an __init__() function that sets self.image, self.rect, and self.lastrect""" # define these variables in your subclass if you want to use them max = None # maximum number of objects on screen - no maximum if None count = 0 # number of objects on screen type = UNDEFINED_OBJECT bombable = 0 def __init__(self): self.dead = 0 self.collision_timer = game.collision_timer # increment our class' counter self.__class__.count += 1 def erase(self, erase_background_function): # note: lastrect must be valid; no check here to save time! erase_background_function(self.lastrect) if self.dead: gfx.dirty(self.lastrect) def draw(self, gfx): r = gfx.surface.blit(self.image, self.rect) gfx.dirty2(r, self.lastrect) self.lastrect = r def collide(self,rect): if self.rect.colliderect(rect): self.collision_timer += -1 if self.collision_timer < 0: return 1 else: return 0 else: return 0 def die(self): """This is done just before removing an object from the lists.""" self.__class__.count -= 1 #print "%s dying. count:%d" %(self.__class__.__name__,self.__class__.count) return 1 def markdead(self): """This is done to mark an object dead. Return 0 if object is not dead.""" self.dead = 1 return self.dead