FINAL VERSION

Dependencies:   mbed

BreakoutEngine/BreakoutEngine.h

Committer:
jamesheavey
Date:
2019-05-04
Revision:
58:a159cd976aca
Parent:
47:1d1a827be81b
Child:
60:63d69184ec0a

File content as of revision 58:a159cd976aca:

#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 <cmath>
#include <list>
#include <iostream>
#include <string>
#include <iterator>
#include <algorithm>

// gap from edge of screen

#define GAP_TOP 10
#define GAP 2
#define BRICK_WIDTH 12
#define BRICK_HEIGHT 4
#define PADDLE_WIDTH 15

class BreakoutEngine
{

public:
    BreakoutEngine();
    ~BreakoutEngine();

    void init(int paddle_width,int paddle_height,int ball_size,int speed, int prev_score);
    void read_input(Gamepad &pad, bool x);
    void update(Gamepad &pad);
    void draw(N5110 &lcd);
    void lives_leds(Gamepad &pad);
    void flash_backlight(N5110 &lcd);
    int get_lives();
    int get_num_left();
    int get_prev_score();
    bool check_goal(Gamepad &pad);
    void inc_index();
    void reset_index();
    
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 print_scores(N5110 &lcd);
    void one_less();
    
    Paddle _p1;
     
    int _paddle_width;
    int _paddle_height;
    int _ball_size;
    int _speed;
    int _index;
    double _cool_time;
    
    // y positions of the paddle
    int _p1y;
    int _number_left;
    int _prev_score;
    
    Ball _ball;
    
    Direction _d;
    float _mag;
    
    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;

};

#endif