def __init__(self,x,y,event,pather,image): pygame.sprite.Sprite.__init__(self) self.path = [] self.target = (x,y) self.event = event self.pather = pather self.image = image self.baseImage= self.image self.rect = self.baseImage.get_rect() self.speed = 4 self.bearing = 0 self.turnSpeed= 10 self.x,self.y = toPixels((x, y)) self.event.register("recheckPath", self.recheck) self.rect.center = (x+32, y+32)
def update(self): reached = True targetPixel = toPixels(self.target) if self.rect.centerx > targetPixel[0]: if self.bearing == 90: self.x -= self.speed else: self.turnTo(90) reached = False elif self.rect.centerx < targetPixel[0]: if self.bearing == 270: self.x += self.speed else: self.turnTo(270) reached = False if self.rect.centery > targetPixel[1]: if self.bearing == 0: self.y -= self.speed else: self.turnTo(0) reached = False elif self.rect.centery < targetPixel[1]: if self.bearing == 180: self.y += self.speed else: self.turnTo(180) reached = False if reached: if len(self.path) > 0: self.target = self.path.pop(0) self.image = pygame.transform.rotate(self.baseImage, self.bearing) self.rect = self.image.get_rect() self.rect.center = (self.x, self.y)
def updateImage(self): if self.type > 0 and self.level > 0: self.image.blit(towerSet, self.image.get_rect(), pygame.Rect((self.type-1)*64, (self.level-1)*64, 64, 64)) self.rect = self.image.get_rect() self.rect.center = toPixels(self.pos)