im a newbie and im learning java just week ago. I wonder how i cant make the ball bounce in one axis only (the X axis)
im not good in logic:( and i want that logic to be in one event.

if(x<0){
++x;//go right
}else if(x>500)
{--x;//go left
}

please help me. Thanks.

Recommended Answers

All 12 Replies

In English:
if x is less than zero go right one step
if x is greater than 500 go left one step
therefore
if x is between 0 and 500 do nothing
... but it should continue to move in whatever its current direction is.

Think about keeping track of its current direction, moving that way while the ball is in range, and changing the direction when the ball reaches 0 or 500.

If in doubt, write it down in English and run through a few cases on a piece of paper to get the algorithm right before you try to code it in Java.

yeah i used to write down the codes in paper before in pc. Im thinking to create a method to go right and method to go left but i want it to be in one event :| im nearly giving up with this.

to be in one event

What do you mean by "one event"?
Your terms are unusual.

Hint.
When people animate things moving around the screen they usually have variables to hold the h & v velocity of the object (that's the amount by which the x and y positions change in each time cycle). So every time cycle its just
xPosition = xPosition + xVelocity; (ditto for y)
if xVelocity is (say) +1 the object will move slowly right. If it's -10 the object will move rapidly left.
Does that help?

What do you mean by "one event"? Your terms are unusual.

Hi Norm
I guess (I really really hope) he is using a javax.swing.Timer to control this. Swing Timers generate an event every n mSec, which passes an ActionEvent object to your code. So "event" would be the appropriate term in this case.
J

@J Thanks.
One event would trigger one call to a listener which would then determine the new location, etc

@J Thanks.
One event would trigger one call to a listener which would then determine the new location, etc

Yes.

@JamesCherrill, thanks for that hint. I came up with an idea like this:

int x,y,direction;
if(x<0){dir=1;}
else if(x>500){dir=0;}
if(dir==1){x++;}
else{x--}

uhm, i dont wanna code it until i confirmed. Im not good at logic. Thats my weakness. LOL. And my english either.

Yes, that looks OK to me. It may not be the "perfect" way to do it, but it's understandable and it will work. Try it!

@JamesCherrill, thanks for that hint. I came up with an idea like this:

int x,y,direction;
if(x<0){dir=1;}
else if(x>500){dir=0;}
if(dir==1){x++;}
else{x--}

uhm, i dont wanna code it until i confirmed. Im not good at logic. Thats my weakness. LOL. And my english either.

It may not be the "perfect" solution, but it's yours, it's understandable, and it will work.. Go for it!

thanks guys. Its working. Hope to help me again in the future.

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.