Die Parameter X_Done und Y_Done kannst du dir schenken:
Delphi-Quellcode:
procedure TGame.Center_Player;
var can_scroll_Left,Can_Scroll_Rigth:boolean;
can_scroll_Up,Can_Scroll_Down:boolean;
begin
repeat
(* weg damit
if (X_Done and Y_Done) then
exit;
*)
... jede Menge Berechnungen
//so müsste es heißen:
X_Done:=not((_Act_Player_Position.x=(_Act_X+(_Paintrect.x div 2))) or (_Act_X=0));
Y_Done:=not((_Act_Player_Position.y=(_Act_Y+(_Paintrect.y div 2))) or (_Act_Y=0));
until (X_Done and Y_Done);
end;
Damit hast du die Rekursion komplett beseitigt, was natürlich nur von Vorteil ist.