сталкивающихся прямоугольников проще всего (на самом деле круги есть, но со спрайтами вы их не используете)
для 2-х прямоугольников, чтобы они сталкивались / перекрывались, некоторое пространство должно быть разделено
public class Sprite{
private int left,right;//bounding box left<right and top>bottom
private int top,bottom;
public final boolean collidesWith(Sprite other){
if(this.left>other.right || other.left>other.right)return false;
if(this.bottom>other.top || other.bottom>other.top)return false;
return true;
}
}
чтобы узнать, какие из них сталкиваются, вы можете пролистать всю доску и проверить все перекрытия в одном измерении