I think the common consensus is to separate the graphical, physical, and behavior aspect of game entities.
So your sprite is the graphical representation. You could have a bounding_box/physics object that interacts with other bb/physics objects, and a behavior object (accept user input for the player and an ai object of some sort for the npcs)
So the supposed class may look like:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| public class Fighter { private Sprite sprite; private PhysObj physobj; private Behavior behavior;
public Fighter (Behavior b) { behavior = b; } public void update(float deltaT) { behavior.update(); physobj.update(deltaT); sprite.setPosition(physobj); } public void draw(Graphics g) { sprite.draw(g); } } |
Or whatever.
So far as collision detection and physics; thats a really big subject and my knowledge is not great and I'm tired of typing......