Wenn die Planeten und das Raumschiff auch eckig sein dürfen:
Delphi-Quellcode:
// -----------------------
function RectIntersect(A, B: TRect; Offset: Integer): Boolean;
begin
result := not((A.Right + Offset <= B.Left) or
(A.Bottom + Offset <= B.Top) or
(A.Top - Offset >= B.Bottom) or
(A.Left - Offset >= B.Right));
end;
// -----------------------
for i := 0 to Planets.Count - 1 do
begin
if RectIntersect(
Rect(Planets[i].X, Planets[i].Y, Planets[i].X + Planets[i].Width, Planets[i].Y + Planets[i].Height),
Rect(Starship.X, Starship.Y, Starship.X + Starship.Width, Starship.Y + Starship.Height),
, 0)
then
// Kollision
end;
Die einzelnen Daten hängen natürlich davon ab, wie du die Position und Maße der Objekte speicherst. Ich bin hier von Phantasieklassen ausgegangen, dürfte aber eigentlich selbsterklärend sein