Files
arduino_pong/src/engine.h

38 lines
824 B
C
Raw Normal View History

2026-03-17 23:25:30 +01:00
#ifndef ENGINE_H
#define ENGINE_H
#include <Arduino.h>
#include "ball.h"
#include "paddle.h"
#include "config.h"
enum EngineEvents : uint8_t {NONE, P1SCORE, P2SCORE, P1_COLLISION, P2_COLLISION, WALL_COLLISION};
class Engine {
private:
2026-03-21 10:24:15 +01:00
Paddle* _p1;
Paddle* _p2;
2026-03-17 23:25:30 +01:00
Ball& _ball;
EngineEvents _event= NONE;
uint8_t _ball_mv_delay;
uint8_t _hits = 0;
2026-03-17 23:25:30 +01:00
2026-03-21 10:24:15 +01:00
bool _check_pad_ball_collision(Paddle *p);
2026-03-17 23:25:30 +01:00
public:
// inizialize Engine constructor, linking all args with private args
2026-03-21 10:24:15 +01:00
Engine(Ball &ball, uint8_t ball_mv_delay)
: _ball(ball), _ball_mv_delay(ball_mv_delay) {}
2026-03-17 23:25:30 +01:00
2026-03-18 18:12:38 +01:00
void run();
2026-03-21 10:24:15 +01:00
void set_players(Paddle *p_one, Paddle *p_two);
2026-03-19 22:23:29 +01:00
bool control_players();
uint8_t ball_movement_delay();
2026-03-17 23:25:30 +01:00
EngineEvents get_event();
void restart_ball();
2026-03-17 23:25:30 +01:00
void reset();
};
#endif