An alternative is to calculate the angle between the Current Position and the Destination Position, then move you sprite at this angle at whatever speed towards its destination. The following code shows you how. BTW the following GetAngle code is of my own concoction since I couldn't remeber the proper way so don't laugh if it's horribly unoptimised or just plain silly.


Code:
function GetAngle(SPos,FPos: TPoint): Real; 
var 
Lgt,Hgt: Real; 
Rad,Deg: Real; 
begin 
Deg:=0; 
Lgt:=FPos.X-SPos.X; 
If Lgt=0 Then Lgt:=0.01; 
Hgt:=FPos.Y-SPos.Y; 
If Hgt=0 Then Hgt:=0.01; 
Rad:=ArcTan(Hgt/Lgt); 
//Top Left Corner 
If &#40;FPos.X<SPos.X&#41; and &#40;FPos.Y<SPos.Y&#41; Then Deg&#58;=Rad*&#40;180/Pi&#41;+180; 
//Top Right Corner 
If &#40;FPos.X>=SPos.X&#41; and &#40;FPos.Y<SPos.Y&#41; Then Deg&#58;=Rad*&#40;180/Pi&#41;+360; 
//Bottom Left Corner 
If &#40;FPos.X<SPos.X&#41; and &#40;FPos.Y>=SPos.Y&#41; Then Deg&#58;=Rad*&#40;180/Pi&#41;+180; 
//Bottom Right Corner 
If &#40;FPos.X>=SPos.X&#41; and &#40;FPos.Y>=SPos.Y&#41; Then Deg&#58;=Rad*&#40;180/Pi&#41;; 
GetAngle&#58;=Deg; 
end;
after we use our GetAngle procedure like so

Code:
Angle&#58;=GetAngle&#40;Point&#40;CurPos.X,CurPos.Y&#41;,Point&#40;DestPos.X,DestPos.Y&#41;&#41;;
(BTW if this doesn't seem to work properly, try switching the order in which you parse the vars into the getangle function e.g dest first then curpos. I forget which way round they go I think this is correct)
we can then use this angle to move the object towards the destination with the following code. Again, this code is my own and I have no idea whether it's the best way of doing things but it's my way of doing things.

Code:
CurPos.X&#58;=Round&#40;Speed*Cos&#40;&#40;Angle&#41;*Pi/180&#41;&#41;+CurPos.X; 
CurPos.Y&#58;=Round&#40;Speed*Sin&#40;&#40;Angle&#41;*Pi/180&#41;&#41;+CurPos.Y;
The pi/180 converts the result of the Cos/Sin into Degrees, the standard return for these are in Radians. Let me know what you think.
[/i]