Added a randomly generated multiplier to the offset, when the ball collides with a paddle
This commit is contained in:
		
							
								
								
									
										13
									
								
								main.cpp
									
									
									
									
									
								
							
							
						
						
									
										13
									
								
								main.cpp
									
									
									
									
									
								
							| @@ -1,5 +1,6 @@ | ||||
| #include <iostream> | ||||
| #include <cmath> | ||||
| #include <ctime> | ||||
| #include <raylib-cpp.hpp> | ||||
| #include "paddle.hpp" | ||||
| #include "ball.hpp" | ||||
| @@ -12,20 +13,19 @@ const int RECT_H = HEIGHT / 3; | ||||
| const int RECT_W = 30; | ||||
| const int PADDLE_SPEED = 8; | ||||
| const int CIRC_RAD = 10; | ||||
| const float BASE_BOUNCE_DEG = 45; | ||||
| const float BASE_BOUNCE_DEG = 60; | ||||
| const float BASE_BOUNCE_RAD = (BASE_BOUNCE_DEG / 180.0) * M_PI; | ||||
| const float BASE_SPEED_COMPONENTS = 15; | ||||
| const float BASE_SPEED = sqrt(powf(BASE_SPEED_COMPONENTS, 2) * 2); | ||||
|  | ||||
| raylib::Vector2 changeVelocityAfterCollision(Paddle paddle, Ball ball) { | ||||
| 	float paddle_mid_y = (paddle.getRect().y + paddle.getRect().GetHeight()) / 2.0; /* Middle y value of rectangle */ | ||||
| 	TraceLog(LOG_INFO, "\nMid y-value: %.2f", paddle_mid_y); | ||||
| 	float  ball_y = ball.pos.y; /* Y co-ordinate of ball */ | ||||
|  | ||||
| 	float offset = paddle_mid_y - ball_y; /* Subtracting the ball coordinate will give us a value between -paddle_mid_y (represents bottom of paddle) and +paddle_mid_y (represents top of paddle) */ | ||||
| 	offset /= (paddle.getRect().GetHeight() / 2.0); /* Normalize the value, by dividing it by its maximum magnitude. It is now a value between -1 and 1. */ | ||||
| 	TraceLog(LOG_INFO, "Offset: %.2f\n",offset); | ||||
| //	offset *= -1; /* Reverse the sign of the offset, so that -1 represents the top, and 1 represents the bottom */ | ||||
| 	offset /= (paddle.getRect().GetHeight()); /* Normalize the value, by dividing it by its maximum magnitude. It is now a value between -1 and 1. */ | ||||
|  | ||||
| 	offset *= 0.8 + (float)(std::rand()) / (float) (RAND_MAX / ( 1.2 - 0.8)); // Generate a random float from 0.8 to 1.2 | ||||
|  | ||||
| 	float bounce_angle = offset * BASE_BOUNCE_RAD; /* Calculate the actual bounce angle from the base bounce angle. */ | ||||
|  | ||||
| @@ -39,7 +39,7 @@ raylib::Vector2 changeVelocityAfterCollision(Paddle paddle, Ball ball) { | ||||
| } | ||||
|  | ||||
| int main() { | ||||
| 	/* Initialize window */ | ||||
| 	/* Initialize window and other variables */ | ||||
| 	raylib::Window window = raylib::Window(WIDTH, HEIGHT, "Pong"); | ||||
| 	SetTraceLogLevel(LOG_INFO); | ||||
| 	window.ClearBackground(BLACK); | ||||
| @@ -47,6 +47,7 @@ int main() { | ||||
| 	SetExitKey(KEY_Q); | ||||
| 	std::string points_str = std::string("0\t\t0"); | ||||
| 	bool game_started = false; | ||||
| 	srand(std::time(NULL)); | ||||
|  | ||||
| 	/* Instantiate Paddle and Ball objects */ | ||||
| 	Paddle pad1 = Paddle(10, (HEIGHT / 2) - (RECT_H / 2), RECT_W, RECT_H); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user