Negotiant,
С точки зрения абстракции класса, спутник это та же планета (particle) - спутник вращается вокруг планеты, планета вращается вокруг звезды (солнца), у них абсолютно одинаковый интерфейс: x, y, radius, image, move и тд, осталось добавить type чтобы их отличать и hasClick(clickX, clickY) чтобы клик проверять:
function Particle(type/*, ...*/) {
this.type = type;
// ...
}
Particle.prototype.hasClick = function(x, y) {
return Math.hypot(x - this.x, y - this.y) <= this.radius;
};
particles.push(new Particle('planet'/*, ...*/), new Particle('sputnik'/*, ...*/)/*, ...*/);
canvas.addEventListener('click', function (e) {
for (var i = 0; i < particles.length; i++) {
if (particles[i].hasClick(e.offsetX, e.offsetY)) {
alert(particles[i].type);
}
}
});