Yes, I understand what you mean and is a common problem with collision detection. What I would suggest is that instead of suddenly moving the sprite 10 pixels or however many,you do a loop and test each fraction of the movement of the sprite from 1 to HoweverManyPixels for collisions, then if there are no collisions you move the sprite the required amount of pixels otherwise you store the loop counter value at the point of collision and only move the sprite that far. This will mean that when the sprite moves it only moves as far as it can before colliding instead of passing through a solid object. This would only be a check loop and machine would not update the screen during this loop and should happen very fast and so shouldn't affect speed too much. I hope this helps, if your still having real trouble then you might be able to twist my arm into writing some example code but see how you get on with explanation. Good Luck.