ELEC2645 (2018/19) / Mbed 2 deprecated el17arm

Dependencies:   mbed

Minerengine.cpp

Committer:
el17arm
Date:
2019-03-22
Revision:
6:866281ce2b44
Parent:
4:b92da6a09c8b
Child:
7:c6e6ec0e3396

File content as of revision 6:866281ce2b44:

#include "Minerengine.h"

Minerengine::Minerengine()

{
    _x = 3;
    _y = 33;
}

Minerengine::~Minerengine()
{
}

void Minerengine::read_direction(Gamepad &pad)
{
    _d = pad.get_direction();
    printf("direction %i \n", _d);
}

void Minerengine::miner_move(N5110 &lcd, Gamepad &pad)
{

    if (_d==3 && !lcd.getPixel(_x + 3, _y+1) && !lcd.getPixel(_x + 3, _y + 3) &&
            !lcd.getPixel(_x + 3, _y + 5) && !lcd.getPixel(_x + 3, _y + 7)) {

        _x += 1;
        _direction = 1;
    }
    if (_d==7 && !lcd.getPixel(_x - 1, _y+1) && !lcd.getPixel(_x - 1, _y + 3) &&
            !lcd.getPixel(_x - 1, _y + 5)&& !lcd.getPixel(_x + 3, _y + 7)) {

        _x = _x - 1;
        _direction = 0;
    }
}

void Minerengine::miner_jump(N5110 &lcd, Gamepad &pad)
{
    if(_d==3 && pad.check_event(Gamepad::A_PRESSED) && lcd.getPixel(_x, _y + 8)) {
        for (int i = 0; i < 6; i++) {
            _y = _y -1;

            if(lcd.getPixel(_x, _y) || lcd.getPixel(_x, _y + 7) || 
            lcd.getPixel(_x + 3, _y + 7)) {
                i = 6;
            }
        }
    }
    if(_d==7 && pad.check_event(Gamepad::A_PRESSED) && lcd.getPixel(_x, _y + 8)) {
        for (int i = 0; i < 6; i++) {
            _y = _y -1;

            if(lcd.getPixel(_x, _y) || lcd.getPixel(_x+2, _y + 7) || 
            lcd.getPixel(_x, _y + 7)) {
                i = 6;
            }
        }
    }
    if(_d==0 && pad.check_event(Gamepad::A_PRESSED) && lcd.getPixel(_x, _y + 8)) {
        for (int i = 0; i < 6; i++) {
            _y = _y -1;
            if(lcd.getPixel(_x, _y) || lcd.getPixel(_x + 2, _y + 7)
            || lcd.getPixel(_x, _y + 7)) {
                i = 6;
            }
        }
    }
}

void Minerengine::miner_draw(N5110 &lcd)
{
    if (_direction == 1) {
        lcd.drawSprite(_x,_y,8,3,(int *)miner_right);
    }
    if (_direction == 0) {
        lcd.drawSprite(_x,_y,8,3,(int *)miner_left);
    }
}

void Minerengine::miner_gravity(N5110 &lcd)
{
    if(!lcd.getPixel(_x, _y + 8)) {
        _y = _y + 1;
    }
}