X-Git-Url: https://code.delx.au/pong/blobdiff_plain/91d3bf2065f6f0a90845c5bc3098a250b30312be..ccf809265c804dc787fcd5f705fa25072f1456ec:/pong.c diff --git a/pong.c b/pong.c index af2dce8..32514c1 100644 --- a/pong.c +++ b/pong.c @@ -9,9 +9,13 @@ #include #include +#include -#define SPEEDINC 1.15 -#define PADDLESPEED 2.5 +// Amount to increase speed by on x, y axis, and when bouncing +#define SPEEDXINC 1.1 +#define SPEEDYINC 1.1 +#define SPEEDBINC 0.2 +#define PADDLESPEED 3.0 #define FRAME 40 #define PADDLESIZE 10 #define HEIGHT 100 @@ -65,14 +69,16 @@ static void run(void) { // Check for collisions with paddles if(ballVecX < 0 && ballX <= -HEIGHT + -ballVecX * 1.5) { if(ballY >= paddle1 - PADDLESIZE && ballY <= paddle1 + PADDLESIZE) { - ballVecX *= -SPEEDINC; - ballVecY *= SPEEDINC; + GLdouble speedChange = fmax(1.0, fabs(paddle1 - ballY) * SPEEDBINC); + ballVecX *= -speedChange * SPEEDXINC; + ballVecY *= speedChange * SPEEDYINC; } } if(ballVecX > 0 && ballX >= HEIGHT - ballVecX * 1.5) { if(ballY >= paddle2 - PADDLESIZE && ballY <= paddle2 + PADDLESIZE) { - ballVecX *= -SPEEDINC; - ballVecY *= SPEEDINC; + GLdouble speedChange = fmax(1.0, fabs(paddle2 - ballY) * SPEEDBINC); + ballVecX *= -speedChange * SPEEDXINC; + ballVecY *= speedChange * SPEEDYINC; } }