Also ein Timer kann sich nicht "überholen", es sei den du machst z.B. ein Application.ProcessMessages drt rein, womit die Nachrichtenschleife mittendrin ausgeführt wird.
Denn die Timernachricht wird von dieser abgearbeitet und alle Nachrichten werden normaler Weise nacheinander verarbeitet.
Wegen dem an einer Stelle sammeln ... vermutlich ist einfach deine Berechnung irgendwo falsch ... ich hatte es hier auch schon, daß sich sehr viele Partikel in einer Futterstelle sammelten und diese nicht verschwand.
womöglich könntest du auch etwas mit Records rumspielen, damit sieht man dann auch leichter, was womit gemeint ist. (vielleicht hast'e ja nur irgendwo 'nen falschen Array-Index verwendet)
Delphi-Quellcode:
// statt
var
partikel: array of array[0..3] of extended;
food: array of array[0..2] of extended;
// z.B. lieber sowas
type
TPartikel = record
x, y, movX, movY: extended;
end;
TFood = record
x, y, mirfälltgradkeinnamedafürein: extended;
end;
var
partikel: array of TPartikel;
TFood: array of TFood;
wofür ist px1 und px2?
und warum sind x2 und y2 globale Variablen, wo sie doch nur in FormMouseMove verwendet werden
ja und wozu wird in FormMouseMove gemalt ... wird doch eh gleich wieder vom Timer übermalt
PS: Deine CodeFormatierung ist nicht unbedingt die Beste ... könnte man vielleicht etwas aufräumen
Ein Therapeut entspricht 1024 Gigapeut.