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