Skip to content
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
23 changes: 23 additions & 0 deletions Header/Core/GameLoop.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
#include "../../Header/Core/GameWindowManager.h"
#include "../../Header/Event/EventManager.h"
#include "../Gameplay/GameplayManager.h"


namespace Core
{
class GameLoop
{
private:
Events::EventManager* eventManager;
GameWindowManager* gameWindowManager;
Gameplay::GameplayManager* gameplayManager;

public:
void initialize();
bool isGameRunning();
void pollEvents();
void update();
void render();
};

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


using namespace sf;
namespace Core
{
class GameWindowManager
{
private:
int gameWindowHeight = 1280;
int gameWindowWidth = 720;
std::string gameTitle = "SFML_Pong";

RenderWindow* game_window;
void createGameWindow();
public:
void initialize();
RenderWindow* getGameWindow();
bool isGameRunning();
void clearGameWindow();
void displayGameWindow();
};

}
34 changes: 34 additions & 0 deletions Header/Entities/Ball.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
#pragma once
#include <SFML/Graphics.hpp>
#include <string>
using namespace sf;

namespace Gameplay
{
class Ball
{
private:

Sprite pong_ball_sprite;
const float scale_x = 0.2f; // 20% of original size
const float scale_y = 0.2f; // 20% of original size
float ball_speed = 0.5f;
Vector2f velocity = Vector2f(ball_speed, ball_speed);


Texture pong_ball_texture;
const std::string texture_path = "Assets/Textures/Ball.png";
const float radius = 10.0f;
const float position_x = 615.0f;
const float position_y = 335.0f;

void loadTexture();
void prepareSprite();

void move();
public:
Ball();
void update();
void render(RenderWindow* game_window);
};
}
22 changes: 22 additions & 0 deletions Header/Entities/Paddle.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
#pragma once
#include <SFML/Graphics.hpp>
using namespace sf;

namespace Gameplay
{
class Paddle
{
private:
RectangleShape paddle_sprite;
const float paddle_width = 20.0f;
const float paddle_height = 140.0f;
const float paddleSpeed = 0.5f;
void movePaddle(bool move_up_key_pressed, bool move_down_key_pressed);
public:
Paddle(float position_x, float position_y);
void update(bool move_up_key_pressed, bool move_down_key_pressed);
void render(RenderWindow* game_window);

};
}

15 changes: 15 additions & 0 deletions Header/Event/EventManager.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
#pragma once
#include <SFML/Graphics.hpp>
using namespace sf;

namespace Events
{
class EventManager
{
public:
void pollEvents(RenderWindow* gameWindow);
bool isKeyPressed(Keyboard::Key key);
bool isLeftMouseButtonPressed();

};
}
30 changes: 30 additions & 0 deletions Header/Gameplay/GameplayManager.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
#pragma once
#include "../../Header/Entities/Paddle.h"
#include "../../Header/Entities/Ball.h"
#include "../Event/EventManager.h"

namespace Gameplay
{
class GameplayManager
{
private:

float player1_position_x = 40.0f;
float player1_position_y = 300.0f;

float player2_position_x = 1210.0f;
float player2_position_y = 300.0f;

Paddle* player1_paddle;
Paddle* player2_paddle;
Ball* ball;

Events::EventManager* event_manager;
void initialize();
public:
GameplayManager(Events::EventManager* manager);
void render(sf::RenderWindow* game_window);
void update();

};
} // namespace Gameplay
28 changes: 12 additions & 16 deletions Main.cpp
Original file line number Diff line number Diff line change
@@ -1,23 +1,19 @@
#include <iostream>
#include <SFML/Graphics.hpp>
#include "Header/Core/GameLoop.h"

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

Core::GameLoop* gameLoop = new Core::GameLoop();
gameLoop->initialize();

while (gameLoop->isGameRunning())
{
gameLoop->pollEvents();
gameLoop->update();
gameLoop->render();
}

while (window.isOpen())
{
sf::Event event;
while (window.pollEvent(event))
{
if (event.type == sf::Event::Closed)
window.close();
}

window.clear();
window.draw(shape);
window.display();
}
return 0;
}
Loading