I have a design question and am interested in your views. In my game I use images as tiles to display the background and all the bits that move around and attack you. I have created a base class call TBaseImage which just contains a few properties such as the SDL surface, the size of the image and if its visible. I then have a TBaseSprite class that derives from TBaseImage which adds a few properties and methods such as a virtual Update method and methods to kill and Resurrect it. I then come to the various game specific sprites that derive from TBaseSprite. For example, I have an "Alien" sprite which overrides the update method and modifies its x,y position (NB: Update is called every frame on visible/alive sprites). I then realised that some sprites that can be shot should provide the following functionality: GetScore, HitCount, Rewards etc. I then created a class called "TDestructibleSprite" which derives from TBaseSprite. I could then derive my "Alien" sprite from TDestructibleSprite and get the extra functionality. If I have a tile that can't be destroyed I just derive it from TBaseSprite. Then I realised that some sprites need to be animated so I started to think about creating a class called TAnimatedSprite which would contain functionality so that each Update the image would change to show the animation. But what if I wanted a sprite that was both animated and destructible ? Delphi doesn't support multiple inheritance so some of this functionality is going to have to be added into one of the existing classes. My question is, should I look into using interfaces ? Can anyone recommend which classes should contain which functionality. Should I look into Subclassing / Composition ?

Shown below is my current sprite class structure:
Code:
                TBaseImage
                    |
                TBaseSprite
                 |       |
TDestructibleSprite    TAnimatedSprite 
        |                      |
TAlienSprite                TAlienSprite
Ian