Debes montarte un "motor" de sprites.
A grandes rasgos, la idea es:
1) Pintar el fondo.
2) Pintar uno a uno los sprites (empezar por los que estan mas alejados).
3) Dibujar la imagen "temporal" en la pantalla.
Asi pues, en cada "refresco" de pantalla, se ejecuta el procedimiento encargado de pintar los sprites. Luego hay tecnicas, para evitar parpadeos, como el DoubleBuffering.
El DoubleBuffering, consite en tener 2 imagenes:
1) Pintas en la imagen 1, mientras muestras la imagen 2
2) Pintas en la imagen 2, mientras muestras la imagen 1
3) Goto 1)
Hay por ahí, muchos engines para gestionar los Sprites (
un ejemplo).
Saludos.