FINAL VERSION

Dependencies:   mbed

BreakoutEngine/BreakoutEngine.h

Committer:
jamesheavey
Date:
2019-05-08
Revision:
123:39740c246fc2
Parent:
119:473cac51ddf0
Child:
126:1ac594b5f91a

File content as of revision 123:39740c246fc2:

#ifndef BREAKOUTENGINE_H
#define BREAKOUTENGINE_H

#include "mbed.h"
#include "N5110.h"
#include "Gamepad.h"
#include "Ball.h"
#include "Paddle.h"
#include "Brick.h"
#include "Laser.h"
#include "Life_Powerup.h"

#include <list>
#include <iterator>
#include <ctime>    // For time()
#include <cstdlib>  // For srand() and rand()

#define GAP_TOP 10
#define GAP 2

/* BreajoutEngine Class
@author James Heavey, University of Leeds
@brief Controls the Breakout game
@date May 2019
*/

class BreakoutEngine
{

public:
    BreakoutEngine();
    ~BreakoutEngine();

    void init(int paddle_width,int paddle_height,int ball_size,int speed);
    void read_input(Gamepad &pad);
    void update(Gamepad &pad);
    void draw(N5110 &lcd);
    void lives_leds(Gamepad &pad);
    int get_lives();
    int get_num_left();
    int get_prev_score();
    void set_prev_score(int prev_score);
    bool check_loss(Gamepad &pad);
    void inc_index();
    void reset_index();
    void reset_game();
    void reset_num_left();
    int get_score();
    void inc_mult();
    void set_mult_zero();
    int get_mult();
    void set_paddle_motion(bool tilt, float sens);
    void check_life_powerup();
    void reset_paddle_lives();

private:

    void check_wall_collisions(Gamepad &pad);
    void check_paddle_collisions(Gamepad &pad);
    void check_brick_collisions(Gamepad &pad);
    void check_laser_collisions(Gamepad &pad);
    void check_powerup_collisions(Gamepad &pad);
    void print_scores(N5110 &lcd);
    void dec_num_left();

    int _paddle_width;
    int _paddle_height;
    int _ball_size;
    int _speed;
    int _index;
    int _multiplier;
    double _cool_time;

    int _paddley;
    int _number_left;
    int _prev_score;
    int _score;

    Direction _d;
    float _mag;

    Paddle _paddle;

    Ball _ball;

    std::list<Laser> listofLasers;
    std::list<Laser>::iterator it_L;

    std::list<Brick> listofBricks;
    std::list<Brick>::iterator it_R;

    Brick _brick11;
    Brick _brick12;
    Brick _brick13;
    Brick _brick14;
    Brick _brick15;
    Brick _brick16;
    Brick _brick21;
    Brick _brick22;
    Brick _brick23;
    Brick _brick24;
    Brick _brick25;
    Brick _brick26;
    Brick _brick31;
    Brick _brick32;
    Brick _brick33;
    Brick _brick34;
    Brick _brick35;
    Brick _brick36;

    Laser _laser1;
    Laser _laser2;
    Laser _laser3;

    Life_Powerup _powerup;

};

#endif