ELEC2645 (2018/19) / Mbed 2 deprecated el17arm

Dependencies:   mbed

Committer:
el17arm
Date:
Tue Apr 09 21:03:49 2019 +0000
Revision:
28:a38070a1cdcf
Parent:
Minerengine/Miner.cpp@27:e73dd64ef334
reorganised differently (unfinished) returning to previous version but may return to this one still

Who changed what in which revision?

UserRevisionLine numberNew contents of line
el17arm 27:e73dd64ef334 1 #include "Miner.h"
el17arm 27:e73dd64ef334 2
el17arm 27:e73dd64ef334 3 Miner::Miner()
el17arm 27:e73dd64ef334 4 {
el17arm 27:e73dd64ef334 5 }
el17arm 27:e73dd64ef334 6
el17arm 27:e73dd64ef334 7 Miner::~Miner()
el17arm 27:e73dd64ef334 8 {
el17arm 27:e73dd64ef334 9 }
el17arm 27:e73dd64ef334 10
el17arm 27:e73dd64ef334 11 Vector2D Miner::get_pos()
el17arm 27:e73dd64ef334 12 {
el17arm 27:e73dd64ef334 13 Vector2D p = {_x,_y};
el17arm 28:a38070a1cdcf 14 printf("miner x = %f \n", p.x);
el17arm 28:a38070a1cdcf 15 return p;
el17arm 27:e73dd64ef334 16 }
el17arm 27:e73dd64ef334 17
el17arm 27:e73dd64ef334 18 void Miner::miner_draw(N5110 &lcd)
el17arm 27:e73dd64ef334 19 {
el17arm 27:e73dd64ef334 20 if (_direction == 1) {
el17arm 27:e73dd64ef334 21 lcd.drawSprite(_x,_y,8,3,(int *)miner_right);
el17arm 27:e73dd64ef334 22 }
el17arm 27:e73dd64ef334 23 if (_direction == 0) {
el17arm 27:e73dd64ef334 24 lcd.drawSprite(_x,_y,8,3,(int *)miner_left);
el17arm 27:e73dd64ef334 25 }
el17arm 27:e73dd64ef334 26
el17arm 27:e73dd64ef334 27 }
el17arm 27:e73dd64ef334 28 void Miner::miner_land(N5110 &lcd)
el17arm 27:e73dd64ef334 29 {
el17arm 27:e73dd64ef334 30 _jump = (lcd.getPixel(_x+4,_y+8) || lcd.getPixel(_x-1,_y+8));
el17arm 27:e73dd64ef334 31
el17arm 27:e73dd64ef334 32 _gravity = !lcd.getPixel(_x,_y+8) && !lcd.getPixel(_x+2, _y+8);
el17arm 27:e73dd64ef334 33 }
el17arm 27:e73dd64ef334 34
el17arm 27:e73dd64ef334 35 void Miner::miner_move(Direction d, N5110 &lcd)
el17arm 27:e73dd64ef334 36 {
el17arm 27:e73dd64ef334 37 if (d==E || d==NE) {
el17arm 27:e73dd64ef334 38 _x++;
el17arm 27:e73dd64ef334 39 _direction = 1; //chooses right facing sprite
el17arm 27:e73dd64ef334 40 }
el17arm 27:e73dd64ef334 41 if (d==W || d==NW) {
el17arm 27:e73dd64ef334 42 _x --;
el17arm 27:e73dd64ef334 43 _direction = 0; //chooses left facing sprite
el17arm 27:e73dd64ef334 44 }
el17arm 27:e73dd64ef334 45 if(_x > 81){
el17arm 27:e73dd64ef334 46 _x=WIDTH-3;
el17arm 27:e73dd64ef334 47 }
el17arm 27:e73dd64ef334 48 if(_x < 0){
el17arm 27:e73dd64ef334 49 _x=0;
el17arm 27:e73dd64ef334 50 }
el17arm 27:e73dd64ef334 51 }
el17arm 27:e73dd64ef334 52
el17arm 27:e73dd64ef334 53 void Miner::miner_jump(N5110 &lcd, Gamepad &pad)
el17arm 27:e73dd64ef334 54 {
el17arm 27:e73dd64ef334 55 if(pad.check_event(Gamepad::A_PRESSED) && _jump==1) {
el17arm 27:e73dd64ef334 56 _y-=8;
el17arm 27:e73dd64ef334 57 pad.tone(750,0.1);
el17arm 27:e73dd64ef334 58 }
el17arm 27:e73dd64ef334 59 }
el17arm 27:e73dd64ef334 60
el17arm 27:e73dd64ef334 61 void Miner::miner_gravity(N5110 &lcd)
el17arm 27:e73dd64ef334 62 {
el17arm 27:e73dd64ef334 63 if(_gravity == 1) {
el17arm 27:e73dd64ef334 64 _y = _y + 1;
el17arm 27:e73dd64ef334 65 }
el17arm 28:a38070a1cdcf 66 }
el17arm 28:a38070a1cdcf 67
el17arm 28:a38070a1cdcf 68 void Miner::enemy_init(int x, int y, volatile int d)
el17arm 28:a38070a1cdcf 69 {
el17arm 28:a38070a1cdcf 70 _xe = x;
el17arm 28:a38070a1cdcf 71 _ye = y;
el17arm 28:a38070a1cdcf 72 _distance = d;
el17arm 28:a38070a1cdcf 73 }
el17arm 28:a38070a1cdcf 74
el17arm 28:a38070a1cdcf 75 void Miner::enemy_move(N5110 &lcd)
el17arm 28:a38070a1cdcf 76 {
el17arm 28:a38070a1cdcf 77 lcd.drawSprite(_x,_y,5,3, (int *) enemy);
el17arm 28:a38070a1cdcf 78 if (_turn_flag == 0) {
el17arm 28:a38070a1cdcf 79 _x = _x + 0.5;
el17arm 28:a38070a1cdcf 80 _counter++;
el17arm 28:a38070a1cdcf 81 }
el17arm 28:a38070a1cdcf 82 if(_counter == _distance) {
el17arm 28:a38070a1cdcf 83 _turn_flag = 1;
el17arm 28:a38070a1cdcf 84 }
el17arm 28:a38070a1cdcf 85 if (_turn_flag == 1) {
el17arm 28:a38070a1cdcf 86 _x = _x - 0.5;
el17arm 28:a38070a1cdcf 87 _counter--;
el17arm 28:a38070a1cdcf 88 }
el17arm 28:a38070a1cdcf 89 if (_counter == 0) {
el17arm 28:a38070a1cdcf 90 _turn_flag = 0;
el17arm 28:a38070a1cdcf 91 }
el17arm 28:a38070a1cdcf 92 }
el17arm 28:a38070a1cdcf 93
el17arm 28:a38070a1cdcf 94 bool Miner::enemy_collision()
el17arm 28:a38070a1cdcf 95 {
el17arm 28:a38070a1cdcf 96 Vector2D p = get_pos();
el17arm 28:a38070a1cdcf 97
el17arm 28:a38070a1cdcf 98 if (p.x < _x+2 && p.x+2 > _x && p.y < _y+4 && p.y+8 > _y) {
el17arm 28:a38070a1cdcf 99 return true;
el17arm 28:a38070a1cdcf 100 } else {
el17arm 28:a38070a1cdcf 101 return false;
el17arm 28:a38070a1cdcf 102 }
el17arm 27:e73dd64ef334 103 }