Skip to content

F eature6 movement collision #23

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 11 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
35 changes: 35 additions & 0 deletions Header/Core/GameLoop.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
#pragma once
#include < SFML/Graphics.hpp>
#include "D:\unity\repos\SFML-Pong\Header\Core\GameWindowManager.h"
#include "D:\unity\repos\SFML-Pong\Header\Event\EventManager.h"
#include "D:\unity\repos\SFML-Pong\Header\GamePlay\GamePlayManager.h"

using namespace sf;
using namespace Core;
using namespace MyEvent;
using namespace std;
using namespace GamePlay;

namespace Core {

class GameLoop {

private:
GameWindowManager* game_Window_Manager;
EventManager* event_Manager;
GamePlayManager* gameplayManager;

public:

void Initialize();
void Update();
bool IsGameRunning();
void Render();
void PollEvent();



};


}
28 changes: 28 additions & 0 deletions Header/Core/GameWindowManager.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
#pragma once
#include <SFML/Graphics.hpp>

using namespace sf;

namespace Core {

class GameWindowManager {
private:

int game_Window_Width = 1280;
int game_Window_height = 720;
std::string game_Title = "Pong-SFML";

RenderWindow* game_Window;

void CreateGameWindow();
public:

void Initialize();
RenderWindow* GetGameWindow();
bool IsGameRunning();
void Render();
void ClearGameWindow();
void DisplayGameWindow();

};
}
17 changes: 17 additions & 0 deletions Header/Event/EventManager.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
#pragma once

#include <SFML/Graphics.hpp>
using namespace sf;

namespace MyEvent {
class EventManager {

public:

void PollEvents(RenderWindow* game_Window);

bool IsKeyPressed(sf::Keyboard::Key key);

bool ISMouseLeftButtonClicked();
};
}
49 changes: 49 additions & 0 deletions Header/GamePlay/Ball.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
#pragma once
#include <SFML/Graphics.hpp>
#include "Paddle.h"
using namespace sf;

namespace GamePlay {

class Ball {
private:
CircleShape ball_circleShape_sprite;
const float radius = 10.f;
const float xPos = 250;
const float yPos = 100;

float ball_speed = 0.5f;
Vector2f ball_velocity = Vector2f(ball_speed, 1);

Texture ball_texture;
String ball_texture_path = "Assets/Textures/Ball.png";

Sprite ball_sprite;

float ball_sprite_x_scale = 0.08f, ball_sprite_y_scale= 0.08f;

float top_boundary=25.f;
float bottom_boundary=970.f;
float left_boundary = 25.f;
float right_boundary = 1950.f;

float center_x_pos = 975;
float center_y_pos = 485;


void LoadTexture();
void InitializeVariables();
void HandleBoundaryCollision();
void HandleOutOfBoundsCollision();
void Reset();
void OnCollision(Paddle* left_paddle, Paddle* right_paddle);

public:
Ball();
void Update(Paddle* left_paddle, Paddle* right_paddle);
void Render(RenderWindow* gameWindow);
void Move();
void HandlePaddleCollision(Paddle* left_paddle, Paddle* right_paddle);

};
}
47 changes: 47 additions & 0 deletions Header/GamePlay/Boundry/Boundary.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
#pragma once
#include <SFML/Graphics.hpp>

using namespace sf;

namespace GamePlay {

class Boundary {

private:

RectangleShape topBoundary, bottomBoundary;
RectangleShape leftBoundary, rightBoundary;
RectangleShape center_line;

float horizontal_boundary_width = 1950.f, horizontal_boundary_height = 25;

float vertical_boundary_width= 25.f, vertical_boundary_height= 970.f;

float top_boundary_x_pos = 0.f, top_boundary_y_pos = 0.f;
float bottom_boundary_X_pos = 0, bottom_boundary_y_Pos = 970;
float left_boundary_x_pos = 3.f, left_boundary_y_pos = 0.f;
float right_boundary_x_pos = 1885.f, right_boundary_y_pos = 0.f;
float center_line_x_pos = 943.f, centre_line_y_pos = 0.f;

const Color side_boundary_color = Color::Blue;
const Color center_line_color = Color::White;

float centerLineHeight = 680.f;
float centerLineWidth = 10.f;



void CreateTopBoundary();
void CreateBottomBoundary();
void CreateLeftBoundary();
void CreateRightBoundary();
void CreateCenterLine();
public:

Boundary();
void Render(RenderWindow* game_window);



};
}
47 changes: 47 additions & 0 deletions Header/GamePlay/GamePlayManager.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
#include "GamePlayManager.h"

namespace GamePlay {



GamePlayManager::GamePlayManager(EventManager* event_manager)
{
this->event_manager = event_manager;
boundary = new Boundary();
Initialize();
}

void GamePlayManager::Update()
{
ball->Update(leftPaddle, rightPaddle);
leftPaddle->Update(event_manager->IsKeyPressed(sf::Keyboard::W),event_manager
->IsKeyPressed(sf::Keyboard::S));
rightPaddle->Update(event_manager->IsKeyPressed(sf::Keyboard::Up), event_manager
->IsKeyPressed(sf::Keyboard::Down));
}

void GamePlay::GamePlayManager::Initialize()
{
ball = new Ball();

leftPaddle = new Paddle(leftPaddle_X_Pos, leftPaddle_Y_Pos);
rightPaddle = new Paddle(rightPaddle_X_Pos, rightPaddle_Y_Pos);


}

void GamePlayManager::Render(RenderWindow* game_Window)
{
boundary->Render(game_Window);
leftPaddle->Render(game_Window);
rightPaddle->Render(game_Window);
ball->Render(game_Window);
}






}

34 changes: 34 additions & 0 deletions Header/GamePlay/GamePlayManager.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
#pragma once
#include <SFML/Graphics.hpp>

#include "Ball.h"
#include "Paddle.h"
#include "D:\unity\repos\SFML-Pong\Header\Event\EventManager.h"
#include "D:\unity\repos\SFML-Pong\Header\GamePlay\Boundry\Boundary.h"

using namespace MyEvent;
namespace GamePlay {

class GamePlayManager {

private:
float leftPaddle_X_Pos = 35.f;
float leftPaddle_Y_Pos = 450.f;
float rightPaddle_X_Pos = 1850.f;
float rightPaddle_Y_Pos = 450.f;

Ball* ball;
Paddle* leftPaddle;
Paddle* rightPaddle;

EventManager* event_manager;
Boundary* boundary;
void Initialize();

public:

GamePlayManager(EventManager* event_manager);
void Update();
void Render(RenderWindow* game_Window);
};
}
32 changes: 32 additions & 0 deletions Header/GamePlay/Paddle.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
#pragma once
#include <SFML/Graphics.hpp>

using namespace sf;

namespace GamePlay {

class Paddle {

private:
RectangleShape paddle_Sprite;
float width = 30;
float height = 235;

const float speed = 0.5f;
float top_boundary = 10.f;
float bottom_boundary = 980.f-height;

void MovePaddle(bool up_key_pressed, bool down_key_pressed);
void CreatePaddle(float x_pos, float y_pos);

public:

Paddle(float xPos, float yPos);

void Reset(float x_pos, float y_pos);

RectangleShape GetPaddleSprite();
void Update(bool up_key_pressed, bool down_key_pressed);
void Render(RenderWindow* game_Window);
};
}
22 changes: 21 additions & 1 deletion Main.cpp
Original file line number Diff line number Diff line change
@@ -1,9 +1,14 @@
#include <iostream>
#include <SFML/Graphics.hpp>
#include "D:\unity\repos\SFML-Pong\Header\Core\GameWindowManager.h"
#include "D:\unity\repos\SFML-Pong\Header\Event\EventManager.h"
#include "D:\unity\repos\SFML-Pong\Header\Core\GameLoop.h"

//using namespace Core;

int main()
{
sf::RenderWindow window(sf::VideoMode(200, 200), "SFML works!");
/* sf::RenderWindow window(sf::VideoMode(200, 200), "SFML works!");
sf::CircleShape shape(100.f);
shape.setFillColor(sf::Color::Green);

Expand All @@ -19,5 +24,20 @@ int main()
window.clear();
window.draw(shape);
window.display();
}*/

/* Core::GameWindowManager gameWindowManager;
MyEvent::EventManager eventManager;
gameWindowManager.Initialize();
while (gameWindowManager.IsGameRunning()) {
eventManager.PollEvents(gameWindowManager.GetGameWindow());
}*/
Core::GameLoop* gameLoop= new GameLoop();
gameLoop->Initialize();
while (gameLoop->IsGameRunning()) {
gameLoop->PollEvent();
gameLoop->Update();
gameLoop->Render();
}
return 0;
}
16 changes: 16 additions & 0 deletions Pong-SFML.vcxproj
Original file line number Diff line number Diff line change
Expand Up @@ -133,7 +133,23 @@
</Link>
</ItemDefinitionGroup>
<ItemGroup>
<ClCompile Include="Header\GamePlay\GamePlayManager.cpp" />
<ClCompile Include="Main.cpp" />
<ClCompile Include="Source\Core\GameWindowManager.cpp" />
<ClCompile Include="Source\Event\EventManager.cpp" />
<ClCompile Include="Source\Core\GameLoop.cpp" />
<ClCompile Include="Source\GamePlay\Ball.cpp" />
<ClCompile Include="Source\GamePlay\Boundry\Boundary.cpp" />
<ClCompile Include="Source\GamePlay\Paddle.cpp" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="Header\Core\GameWindowManager.h" />
<ClInclude Include="Header\Event\EventManager.h" />
<ClInclude Include="Header\Core\GameLoop.h" />
<ClInclude Include="Header\GamePlay\Ball.h" />
<ClInclude Include="Header\GamePlay\Boundry\Boundary.h" />
<ClInclude Include="Header\GamePlay\GamePlayManager.h" />
<ClInclude Include="Header\GamePlay\Paddle.h" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
Expand Down
Loading