Ich bin davon ausgegangen, dass Du einen Vergleich im Griff hast (habe das aber nicht weiter nachvollzogen).
Entsprechend habe ich das Problem so verstanden, dass Du auch weitere Kisten prüfen willst.
Dazu musst Du diese in einer Liste speichern und alle Einträge dann abarbeiten (statt einem Vergleich halt nacheinander alle vergleichen).
Die Vergleichslogik selbst kannst Du dazu am besten in eine eigene Funktion auslagern.
Zu Deinem Code würde ich empfehlen, den immer ordentlich einzurücken:
Delphi-Quellcode:
if player.top = k1.Top then
if player.left = k1.left then
if k1.Top-50 <> k2.Top then
k1.Top:= k1.top-50
else
if k1.left <> k2.left then
k1.Top:= k1.top-50
else
k1.Top:=k1.Top;
Dann erkennt man, dass alle Prüfungen nur erfolgen, wenn player.top = k1.top ist.
So richtig verstehe ich nicht, was Du da machst.
Auf jeden Fall müsstest Du wohl Deine Kisten in einer Liste speichern und die Einträge nacheinander bearbeiten.
Sorry, falls ich Dich ganz falsch verstanden haben sollte.