Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed
Miner/Miner.cpp
- Committer:
- el17arm
- Date:
- 2019-04-10
- Revision:
- 32:5dc769ba4a58
- Parent:
- 30:6d6b48fe3679
File content as of revision 32:5dc769ba4a58:
#include "Miner.h"
Miner::Miner()
{
_enem.eflag[0] = false;
_j_flag = false;
_k.key[0] = false;
_k.key[1] = false;
_k.key[2] = false;
_k.key[3] = false;
_k.key[4] = false;
}
Miner::~Miner()
{
}
void Miner::miner_init(int x, int y)
{
_x = x;
_y = y;
}
Vector2D Miner::get_pos()
{
Vector2D p = {_x,_y};
return p;
}
void Miner::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 Miner::miner_land(N5110 &lcd)
{
_jump = (lcd.getPixel(_x+4,_y+8) || lcd.getPixel(_x-1,_y+8));
_gravity = !lcd.getPixel(_x,_y+8) && !lcd.getPixel(_x+2, _y+8);
}
void Miner::miner_move(Direction d, N5110 &lcd)
{
if (d==E || d==NE) {
_x++;
_direction = 1; //chooses right facing sprite
}
if (d==W || d==NW) {
_x--;
_direction = 0; //chooses left facing sprite
}
if(_x > 81) {
_x=WIDTH-3;
}
if(_x < 0) {
_x=0;
}
}
void Miner::miner_jump(N5110 &lcd, Gamepad &pad)
{
if(pad.check_event(Gamepad::A_PRESSED) && _jump == true) {
_j_flag = true;
}
if(_j_flag == true) {
_y--;
_j_counter++;
}
if(_j_counter > 7) {
_j_flag = false;
}
if(_j_flag == false) {
_j_counter = 0;
}
//printf("counter %i \n", _j_counter);
//printf("flag %d \n", _j_flag);
//printf("jumo %d \n", _jump);
}
void Miner::miner_gravity(N5110 &lcd)
{
if(_gravity == 1) {
_y++;
}
}
void Miner::enemy_init(int i, int x, int y, int d)
{
_enem.ex[i] = x;
_enem.ey[i] = y;
_enem.distance[i] = d;
}
void Miner::enemy_move(int i, double v, N5110 &lcd)
{
lcd.drawSprite(_enem.ex[i],_enem.ey[i],5,3, (int *) enemy);
if (_enem.eflag[i] == false) {
_enem.ex[i] = _enem.ex[i] + v;
_enem.counter[i]++;
}
if(_enem.counter[i] == _enem.distance[i]) {
_enem.eflag[i] = true;
}
if (_enem.eflag[i] == true) {
_enem.ex[i] = _enem.ex[i] - v;
_enem.counter[i]--;
}
if (_enem.counter[i] == 0) {
_enem.eflag[i] = false;
}
}
bool Miner::enemy_collision(int i)
{
Vector2D p = get_pos();
if (p.x < _enem.ex[i] + 2 && p.x + 2 > _enem.ex[i] && p.y < _enem.ey[i] + 4
&& p.y + 9 > _enem.ey[i]) {
return true;
} else {
return false;
}
}
void Miner::key_collect(int k, int x, int y, N5110 &lcd, Gamepad &pad)
{
if(_k.key[k] == false) {
lcd.drawSprite(x,y,3,4,(int *)key);
}
if ((lcd.getPixel(x-1,y+2) || lcd.getPixel(x+2,y-1) || lcd.getPixel(x+4,y+1)) &&
_k.key[k] == false) {
_keys++;
pad.tone(850,0.1);
lcd.drawSprite(x,y,3,4,(int *)key_collected);
_k.key[k]= true;
}
}
int Miner::keys_collected()
{
int k = _keys;
return k;
}
bool Miner::exit_level(int x, int y, N5110 &lcd)
{
lcd.drawSprite(x,y,6,5,(int *)door);
if(_keys == 5 && lcd.getPixel(x-1, y+5)) {
return true;
} else {
return false;
}
}
bool Miner::trap(int x, int y, N5110 &lcd)
{
lcd.drawSprite(x,y,3,3,(int *)spike);
if (lcd.getPixel(x,y-1) || lcd.getPixel(x+2,y-1)) {
return true;
} else {
return false;
}
}
void Miner::draw_solid_block(int x, int y, N5110 &lcd)
{
lcd.drawSprite(x,y,3,3,(int *)solid_block);
lcd.drawSprite(x,y,3,3,(int *)solid_block);
}
void Miner::soft_blocks(int x, int y, N5110 &lcd)
{
if(lcd.getPixel(x,y) || lcd.getPixel(x+2,y) || lcd.getPixel(x+4,y)) {
lcd.drawRect(x,y+1,6,1,FILL_WHITE);
} else {
lcd.drawRect(x,y+1,6,1,FILL_BLACK);
}
}