#include <stdio.h>
#include <stdlib.h>
+#include <math.h>
-#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
// 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;
}
}