ELEC2645 (2017/18) / Mbed 2 deprecated el15ww

Dependencies:   mbed

snake_engine/snake_engine.cpp

Committer:
weiway
Date:
2018-05-06
Revision:
13:4026781772cb
Parent:
Snake_engine/Snake_engine.cpp@ 12:d45bc5d878ad
Child:
15:47ea86f1ed70

File content as of revision 13:4026781772cb:

#include "snake_engine.h"

snake_engine::snake_engine()
{

}

snake_engine::~snake_engine()
{
    
        
    
}

void snake_engine::init()
{
    s.init();

}

void snake_engine::draw(N5110 &lcd)
{
        lcd.refresh();
        lcd.clear();
        lcd.drawRect(0,8,WIDTH ,HEIGHT -8,FILL_TRANSPARENT);    

    s.draw(lcd);
    f.draw(lcd);
    print_point(lcd);
}

void snake_engine::update(Gamepad &pad, N5110 &lcd)
{
    s.update(_d,_mag); 
   
    if(getfruit(pad)) { 
        f.reborn();
        s.point();

    }
}


bool snake_engine::getfruit(Gamepad &pad)
{
    Vector2D _f_pos = f.get_pos();
    Vector2D _s_pos = s.get_pos();
    if ((_f_pos.y >= _s_pos.y || _f_pos.y == _s_pos.y-1) &&
            (_f_pos.y <= _s_pos.y || _f_pos.y+1 == _s_pos.y-1) &&
            (_f_pos.x >= _s_pos.x || _f_pos.x+1 >= _s_pos.x || _f_pos.x+1 >= _s_pos.x ) &&
            (_f_pos.x <= _s_pos.x || _f_pos.x+1 <= _s_pos.x)) { 
        return true;
    } else {
        return false;
    }
}


void snake_engine::print_point(N5110 &lcd)
{
    int print_point = s.get_point();
    char buffer[14];
    sprintf(buffer,"%2d",print_point);
    lcd.printString(buffer,WIDTH/2 - 40,0); 
}


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