Win a copy of The Way of the Web Tester: A Beginner's Guide to Automating Tests this week in the Testing forum!

# Animating an object between two points

Jj Hill
Ranch Hand
Posts: 41
Hello all, I'm making a game where you have to order troops around, meaning click on the destination, click on the soldier, and the soldier moves to the destination. I am having problems with the animation part, I have already figured out the MouseListener and graphics stuff. I know that you are supposed to use y = mx + b, m = y2 - y1/x2 - x1 and y - y1 = m(x - x1), but don't know how to implement this into my application, and I have been working on this for a long time with no success (hey, I'm in middle school, and I taught myself). I have a game class that contains the listeners, and a UserUnit class that contains the actual moveTo() method. Assume that I've got everything else figured out, if I don't I'll ask. Any help is appreciated, and thanks in advance.

Stephan van Hulst
Bartender
Posts: 6479
83
• 1
Well, an animation is a function of distance over time. At time "t" you want to know distance "d" from the starting point. So you need to think of a function that determines this.

If you have a "begin" point and an "end" point, then the "total" distance to be traveled is end - begin. If you want to travel from begin to end in a period of time "duration", then d = distance / duration * t

Rob Spoor
Sheriff
Posts: 20709
68
Except you need to use a javax.swing.Timer in order for the Event Dispatcher Thread to be able to do the repainting in between. If you use a loop like that, only the last movement will be seen.

Stephan van Hulst
Bartender
Posts: 6479
83
Yes, I agree with Rob. My for loop was a poor example.

Jj Hill
Ranch Hand
Posts: 41
I've actually found a way to use Thread.sleep(), but thanks for the advice.

Jj Hill
Ranch Hand
Posts: 41
I know how to animate it, my problem is the actual movement.

Stephan van Hulst
Bartender
Posts: 6479
83
What do you mean by actual movement?