Hi!
Zunächst mal läuft das Abstoßen der Bälle nicht wirklich korrekt (nur für einen sog. "zentralen Stoß" stimmts) - dazu findest du hier auch min. 2 Threads die vor kurzem zu dem Thema entstanden sind.
Zum eigentlichen Problem:
Du erstellst ein Array von Bällen, und prüfst in einer Doppelschleife jeden Ball gegen jeden anderen, wobei du darauf achten musst, dass ein Ball nicht gegen sich selbst geprüft werden darf (macht in deinem Programm keinen unterschied, aber kostet Zeit und ist ja schon rein philosophisch
fragwürdig ).
Pseudocode:
Delphi-Quellcode:
for a := 0 to High(BallArray)-2 do
begin
for b := a+1 to High(BallArray)-1 do
begin
wenn sich Ball a und Ball b berühren
begin
abstoßung;
end;
end;
end;
Der Trick hier liegt dabei die innere Schleife bei a+1 beginnen zu lassen, damit 2 Bälle nicht doppelt überprüft werden. (Und schneller ists zudem auch
)
Gruss,
Fabian
Fabian K.
INSERT INTO HandVonFreundin SELECT * FROM Himmel