ELEC2645 (2017/18) / Mbed 2 deprecated el17yw

Dependencies:   mbed

engine/engine.cpp

Committer:
RickYu
Date:
2018-04-16
Revision:
5:0a116644cce2
Parent:
4:55d904040636
Child:
6:46d0caedf217

File content as of revision 5:0a116644cce2:

#include "engine.h"

engine::engine()
{

}

engine::~engine()
{

}

void engine::init(int speed)
{
    // initialise the game parameters
    _speed = speed;

   


}
void engine::draw(N5110 &lcd)
{
  
    _rect.draw(lcd);
    _boom.draw(lcd);
    
    
}

void engine::read_input(Gamepad &pad)
{
    _d = pad.get_direction();
    _mag = pad.get_mag();
}


void engine::update(Gamepad &pad)
{
    _rect.update(_d,_mag);
    _boom.update();
    
    check_boom_collision(pad);
    check_wall_collision(pad);
   
}

void engine::check_wall_collision(Gamepad &pad)
{
    Vector2D boom_pos = _boom.get_pos();
    Vector2D rect_pos = _rect.get_pos();
    
    if (boom_pos.y > 48) {
        
        boom_pos.y = 0;
        boom_pos.x = rand()%84;
        
    }

    if (boom_pos.x == 84) {
        boom_pos.x = 81;
    }
    
    if (boom_pos.x <2){
        boom_pos.x = 3;
    }  
    _boom.set_pos(boom_pos); 
    _rect.set_pos(rect_pos);   
    
    
}
void engine::check_boom_collision(Gamepad &pad)
{
    Vector2D boom_pos = _boom.get_pos();
    Vector2D rect_pos = _rect.get_pos();
    
    if (
       (boom_pos.y+3 == rect_pos.x+3)&&
       (boom_pos.y+3 == rect_pos.x+4)&&
       (boom_pos.y+3 == rect_pos.x+5)&&
       (boom_pos.y+3 == rect_pos.x+6)
       )
    {
     boom_pos.y = 0;   
     pad.tone(750.0,0.1);
    } 
    _boom.set_pos(boom_pos); 
    _rect.set_pos(rect_pos);      



}