Is there a more Pythonic way to create the class "MoveableAnimatedSheetSprite" I am using multiple inheritance but I see that I am really loading the image twice when I call __init__ for "AnimatedSheetSprite" and "MoveableSprite". Should I just make a moveable class and have moveable items inherit it with out inheriting from "Sprite"? By the way the code does work as intended right now. Thank you in advance, if you need more code or what ever just let me know.
import pygame from vec2d import * class Sprite(pygame.sprite.Sprite): """This defines a sprite that is a single image in a file that only contains it as an image.""" def __init__(self, imageName, startx=0, starty=0): pygame.sprite.Sprite.__init__(self) self.image=pygame.image.load(imageName) self.rect=self.image.get_rect() self.image.convert() self.x=startx self.y=starty self.position=vec2d(self.x,self.y) self.selected=False def update(self): pygame.sprite.Sprite.update(self) class AnimatedSheetSprite(Sprite): """This defines a sprite that is multiple images but is in a image file that has only it's images.""" def __init__(self, imageName, startx=0, starty=0, height=0, width=0): Sprite.__init__(self, imageName, startx, starty) self.images=[] masterWidth, masterHeight=self.image.get_size() for i in xrange(int(masterWidth/width)): self.images.append(self.image.subsurface((i*width,0,width,height))) self.image=self.images[0] self.maxFrame=len(self.images)-1 self.frame=0 def animate(self): if self.frame < self.maxFrame: self.frame=self.frame+1 else: self.frame=0 self.image=self.images[self.frame] def update(self): Sprite.update(self) self.animate() class MoveableSprite(Sprite): """This defines a sprite that is a single image in a file that only contains it as an image. But this sprite can move.""" def __init__(self, imageName, startx=0, starty=0, targetx=0, targety=0, speed=2): Sprite.__init__(self, imageName, startx, starty) self.target=vec2d(targetx,targety) self.speed=speed def move(self): self.direction=self.target-self.position if self.direction.length > self.speed: self.position= self.position+self.speed def update(self): Sprite.update(self) self.move() class MoveableAnimatedSheetSprite(MoveableSprite, AnimatedSheetSprite): """This defines a sprite that is multiple images but is in a image file that has only it's images. But this sprite can move.""" def __init__(self, imageName, startx=0, starty=0,targetx=0, targety=0, speed=2, height=0, width=0): MoveableSprite.__init__(self, imageName, startx, starty, targetx, targety, speed) AnimatedSheetSprite.__init__(self, imageName, startx, starty, height, width) def update(self): MoveableSprite.update(self) AnimatedSheetSprite.update(self) -- Jordan Farrell _______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: http://mail.python.org/mailman/listinfo/tutor