aboutsummaryrefslogtreecommitdiff
path: root/src/games/pong
diff options
context:
space:
mode:
authorfschildt <florian.schildt@protonmail.com>2026-01-20 01:22:45 +0100
committerfschildt <florian.schildt@protonmail.com>2026-01-20 01:59:19 +0100
commit6da9be5810bf82e9d0b3b2a8bce7606ef2e2bf93 (patch)
tree28bb67ad879f8bbb36476a537fe8b69195500146 /src/games/pong
parentf463853872210415e06fb3f863325fdba303ab65 (diff)
breakout: delete pong, add breakout
Diffstat (limited to 'src/games/pong')
-rw-r--r--src/games/pong/Pong.cpp140
-rw-r--r--src/games/pong/Pong.hpp42
2 files changed, 0 insertions, 182 deletions
diff --git a/src/games/pong/Pong.cpp b/src/games/pong/Pong.cpp
deleted file mode 100644
index 9a77f38..0000000
--- a/src/games/pong/Pong.cpp
+++ /dev/null
@@ -1,140 +0,0 @@
-#include "games/pong/Pong.hpp"
-#include "games/Game.hpp"
-#include "common/shapes.hpp"
-#include "renderer/Renderer.hpp"
-
-
-void
-Pong::Start()
-{
- m_paddles[0].dir = NONE;
- m_paddles[0].y = 1.5f;
-
- m_paddles[1].dir = NONE;
- m_paddles[1].y = 1.5f;
-
- m_ball.circle.x = 2.0f;
- m_ball.circle.y = 1.5f;
- m_ball.circle.r = 0.1f;
-
- m_ball.velocity.x = 1.0f;
- m_ball.velocity.y = 0.0f;
-
- m_game_status = game_resume;
-}
-
-void
-Pong::ProcessEvent(SDL_Event& event)
-{
- switch (event.type) {
- case SDL_EVENT_KEY_DOWN: {
- auto key = event.key.key;
- if (key == SDLK_ESCAPE) {
- m_game_status = game_pause;
- }
- else if (key == SDLK_W) {
- m_paddles[0].dir = UP;
- }
- else if (key == SDLK_S) {
- m_paddles[0].dir = DOWN;
- }
- else if (key == SDLK_UP) {
- m_paddles[1].dir = UP;
- }
- else if (key == SDLK_DOWN) {
- m_paddles[1].dir = DOWN;
- }
- } break;
-
- case SDL_EVENT_KEY_UP: {
- auto key = event.key.key;
- if (key == SDLK_W && m_paddles[0].dir == UP) {
- m_paddles[0].dir = NONE;
- }
- else if (key == SDLK_S && m_paddles[0].dir == DOWN) {
- m_paddles[0].dir = NONE;
- }
- else if (key == SDLK_UP && m_paddles[1].dir == UP) {
- m_paddles[1].dir = NONE;
- }
- else if (key == SDLK_DOWN && m_paddles[1].dir == DOWN) {
- m_paddles[1].dir = NONE;
- }
- } break;
-
- default:;
- }
-}
-
-void
-Pong::FinishUpdate(float dt)
-{
- MoveBall(dt);
- MovePaddle(m_paddles[0], dt);
- MovePaddle(m_paddles[1], dt);
-}
-
-void
-Pong::MovePaddle(Paddle& paddle, float dt)
-{
- if (paddle.dir) {
- paddle.y += (float)paddle.dir * (PADDLE_SPEED * dt);
- }
-
- if (paddle.y <= 0.0f) {
- paddle.y = 0.0f;
- }
- if (paddle.y + PADDLE_HEIGHT > 3.0f) {
- paddle.y = 3.0f - PADDLE_HEIGHT;
- }
-}
-
-void
-Pong::MoveBall(float dt)
-{
- // Todo: do physics! find trajectories, find intersection, bounce off properly
-
- m_ball.circle.x += m_ball.velocity.x * dt;
- m_ball.circle.y += m_ball.velocity.y * dt;
- if (m_ball.circle.x - m_ball.circle.r <= PADDLE_WIDTH) {
- m_ball.circle.x = PADDLE_WIDTH + m_ball.circle.r;
- m_ball.velocity.x *= -1.0f;
- m_ball.velocity.y *= -1.0f;
- }
- if (m_ball.circle.x + m_ball.circle.r > 4.0f - PADDLE_WIDTH) {
- m_ball.circle.x = 4.0f - PADDLE_WIDTH - m_ball.circle.r;
- m_ball.velocity.x *= -1.0f;
- m_ball.velocity.y *= -1.0f;
- }
-}
-
-void
-Pong::Draw()
-{
- Color paddle_color = {0.6f, 0.3f, 0.3f, 1.0f};
- Rectangle paddle1_rect = {
- 0.0f,
- m_paddles[0].y,
- 0.0f + PADDLE_WIDTH,
- m_paddles[0].y + PADDLE_HEIGHT
- };
- Rectangle paddle2_rect = {
- 4.0f - PADDLE_WIDTH,
- m_paddles[1].y,
- 4.0f,
- m_paddles[1].y + PADDLE_HEIGHT
- };
- g_renderer.PushRectangle(paddle1_rect, paddle_color, z_layer1);
- g_renderer.PushRectangle(paddle2_rect, paddle_color, z_layer1);
-
- // Todo: draw a circle
- Rectangle ball_rectangle = {
- m_ball.circle.x - m_ball.circle.r,
- m_ball.circle.y - m_ball.circle.r,
- m_ball.circle.x + m_ball.circle.r,
- m_ball.circle.y + m_ball.circle.r
- };
- Color ball_color = {0.3f, 0.5f, 0.3f, 1.0f};
- g_renderer.PushRectangle(ball_rectangle, ball_color, z_layer1);
-}
-
diff --git a/src/games/pong/Pong.hpp b/src/games/pong/Pong.hpp
deleted file mode 100644
index ec6145b..0000000
--- a/src/games/pong/Pong.hpp
+++ /dev/null
@@ -1,42 +0,0 @@
-#pragma once
-
-#include "games/Game.hpp"
-#include "common/shapes.hpp"
-
-
-class Pong : public Game {
- enum PaddleDirection {
- NONE = 0,
- UP = 1,
- DOWN = -1
- };
-
- struct Paddle {
- float y;
- PaddleDirection dir;
- };
-
- struct Ball {
- Circle circle;
- V2F32 velocity;
- };
-
- static constexpr float PADDLE_HEIGHT = 0.5f;
- static constexpr float PADDLE_WIDTH = 0.2f;
- static constexpr float PADDLE_SPEED = 1.0f;
-
-private:
- void Start() override;
- void ProcessEvent(SDL_Event& event) override;
- void FinishUpdate(float dt) override;
- void Draw() override;
-
-private:
- void MovePaddle(Paddle& paddle, float dt);
- void MoveBall(float dt);
-
-private:
- Paddle m_paddles[2];
- Ball m_ball;
-};
-