Pong paddle collision testing

Hi, I'm pretty new to game development and I've been working on a simple pong game. Everything pretty much works except that I can't get my paddles to stop at the top and bottom edges. Heres my code:

(In class Paddle)

publicvoid paddleMove(){

y_pos += y_speed;

}

publicvoid paddleCollision(Paddle paddle){

//test for paddle edge collisions

if(paddle.getYPos() <= 0){

paddle.y_speed = 0;

}

elseif(paddle.getYPos() + HEIGHT >= SCREENHEIGHT){

paddle.y_speed = 0;

}

}

Heres the code for keyboard input

(In class Pong2)

publicboolean keyDown (Event e,int key){

if (key =='w' || key =='W'){

paddle1.y_speed = -10;

paddle1.paddleMove();

paddle1.paddleCollision(paddle1);

}

elseif (key =='s' || key =='S'){

paddle1.y_speed = 10;

paddle1.paddleMove();

paddle1.paddleCollision(paddle1);

}

if(key == Event.UP){

paddle2.y_speed = -10;

paddle2.paddleMove();

paddle2.paddleCollision(paddle2);

}

elseif(key == Event.DOWN){

paddle2.y_speed = 10;

paddle2.paddleMove();

paddle2.paddleCollision(paddle2);

}

returntrue;

}

publicboolean keyUp (Event e,int key){

if (key =='w' || key =='W'){

paddle1.y_speed = 0;

paddle1.paddleMove();

}

// rechte Cursortaste

elseif (key =='s' || key =='S'){

paddle1.y_speed = 0;

paddle1.paddleMove();

}

elseif(key == Event.UP){

paddle2.y_speed = 0;

paddle2.paddleMove();

}

elseif(key == Event.DOWN){

paddle2.y_speed = 0;

paddle2.paddleMove();

}

returntrue;

}

I'm pretty sure the problem is in my paddleCollision() method but I cant find the logic error.

Thanks in advance for any help

titleofliberty

[3936 byte] By [titleoflibertya] at [2007-10-1 1:10:05]
# 1

It looks like you set the speed, move the paddle and then check to see if you should stop.

paddle1.y_speed = -10;

paddle1.paddleMove();

paddle1.paddleCollision(paddle1);

Try something like this:

check for a collision (at the current speed)

if it should collide, change the speed to the value necessary to get it to 0

move the paddle

or alternately, instead of just setting the speed to 0, check the position to see if it is less than 0 and if it is set the position to 0; also check the other extreme ( > width set y position to the width).

I hope theat helps you out.

patrickmallettea at 2007-7-8 1:27:13 > top of Java-index,Other Topics,Java Game Development...
# 2

>

> [code]public boolean keyDown (Event e, int key) {

> if (key == 'w' || key == 'W') {

> paddle1.y_speed = -10;

> paddle1.paddleMove();

>

>paddle1.paddleCollision(paddle1);

>

> }

You move before you check for collision. Everything is being applied in the sequence you are calling it, but when you move your speed is -10, once you move you then check for collision and speed is set to 0.

Change the collision and move around and you'll be ok.

morgalra at 2007-7-8 1:27:13 > top of Java-index,Other Topics,Java Game Development...
# 3
oops... looks like it was already answered.
morgalra at 2007-7-8 1:27:13 > top of Java-index,Other Topics,Java Game Development...
# 4
Thanks for the help! That took care of it.titleofliberty
titleoflibertya at 2007-7-8 1:27:13 > top of Java-index,Other Topics,Java Game Development...