Типовой способ, каждый кадр все видимое поле очищается и ПОЛНОСТЬЮ перерисовывается, что бы не мигало, делают это в виртуальный буфер, который после этого копируется на экран.
Если у тебя очень мало изменений и взаимопересечения простые (легко определить на кого накладывается) то есть шанс перерисовывать только те спрайты, которые попадают/касаются изменившегося спрайта (нужно сначала определить весь список таких, затем перерисовывать). Но этот метод требует перерисовку взаимнопересекающихся спрайтов, если их порядок перерисовки (кто позади кто спереди) тоже важен, т.е. ты ставишь на перерисовку те спрайты, что касаются изменившегося, плюс те что касаются тех что отданы на перерисовку, и так по кругу, пока не закончатся спрайты... если экран сложный, то и так и этак придется перерисовывать весь.
Ну и еще один способ, скорее всего он тебе пока подойдет, так же с осторожностью, в зависимости от взаимных пересечений спрайтов, при рисовании спрайта, сохраняй картинку под ним (т.е. без него). Соответственно, при изменениях спрайта или его координатах, ты его 'удаляешь' с поля, заменив изображение под ним на сохраненное, и рисуешь новый спрайт или в новом месте (так же сохраняя область под ним до...). Этот метод подходит для случаев, когда изменения единичные, т.е. атомарные и начинаются проблемы если спрайты накладываются друг на друга (незначительные, если 'удаляешь' спрайт под кем то, то перерисовывать все спрайты над каждым, в порядке снизу вверх).
upd. способ, решающий 'все проблемы', но спрайты рисовать придется самому по пиксельно, не используя системные вызовы (например писать шейдер для gpu) - ты должен перерисовывать попиксельно все поле обновляемого спрайта, вычисляя пикселы о то всех пересекающихся с ним спрайтами (идешь в порядке от самого верхнего, пока не дойдешь до непрозрачного пиксела, если есть альфаканал - то продолжаешь поиск, сохранив информацию о нем), в этом случае тебе никак не придется трогать ничего на экране кроме текущего перерисовываемого спрайта. Если за обновление тебе нужно менять несколько спрайтов, то сначала считаешь карту пикселов, которые нужно обновить на экране, а уже потом для каждого пробегаешь по их пикселам