Du hast anscheinend ein Klasse
TSprite. Falls es sich um einen Record handelt, könnte es sich lohnen, den Record in eine Klasse umzuwandeln.
Die Sprite-Klasse braucht bestimmte Grundfunktionen:
Delphi-Quellcode:
function TSprite.IsInsideRect(r:TRect):boolean; // Sprite befindet sich komplett innerhalb des Rechtecks
function TSprite.CollidesWithRect(r:TRect):Boolean; // Sprite überdeckt Rechteck teilweise oder vollständig
function TSprite.CollidesWithSprite(s:TSprite):Boolean; // Kollision mit anderem Sprite
procedure TSprite.MoveSprite; // bewege Sprite
Mit diesen Funktionen vereinfachen sich deine If-Abfragen schon erheblich.
Du hast anscheinend 100te globale Variablen. Das ist eine schlechte Taktik.
Gleichartige Objekte/Datentypen werden in einem Array oder einer Liste gespeichert.
Damit reduzieren sich hunderte von Abfrage auf eine Schleife innerhalb der du die
Abfrage platzierst.