ELEC2645 (2018/19) / Mbed 2 deprecated el17arm

Dependencies:   mbed

Committer:
el17arm
Date:
Wed Apr 10 14:29:14 2019 +0000
Revision:
30:6d6b48fe3679
Parent:
29:d85886364643
Child:
32:5dc769ba4a58
improved jump so character gradually ascends instead of instantly appearing higher up.

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 29:d85886364643 5 _enem.eflag[0] = false;
el17arm 30:6d6b48fe3679 6 _j_flag = false;
el17arm 27:e73dd64ef334 7 }
el17arm 27:e73dd64ef334 8
el17arm 27:e73dd64ef334 9 Miner::~Miner()
el17arm 27:e73dd64ef334 10 {
el17arm 27:e73dd64ef334 11 }
el17arm 27:e73dd64ef334 12
el17arm 27:e73dd64ef334 13 void Miner::miner_init(int x, int y)
el17arm 27:e73dd64ef334 14 {
el17arm 27:e73dd64ef334 15 _x = x;
el17arm 27:e73dd64ef334 16 _y = y;
el17arm 27:e73dd64ef334 17 }
el17arm 27:e73dd64ef334 18
el17arm 27:e73dd64ef334 19 Vector2D Miner::get_pos()
el17arm 27:e73dd64ef334 20 {
el17arm 27:e73dd64ef334 21 Vector2D p = {_x,_y};
el17arm 29:d85886364643 22 return p;
el17arm 27:e73dd64ef334 23 }
el17arm 27:e73dd64ef334 24
el17arm 27:e73dd64ef334 25 void Miner::miner_draw(N5110 &lcd)
el17arm 27:e73dd64ef334 26 {
el17arm 27:e73dd64ef334 27 if (_direction == 1) {
el17arm 27:e73dd64ef334 28 lcd.drawSprite(_x,_y,8,3,(int *)miner_right);
el17arm 27:e73dd64ef334 29 }
el17arm 27:e73dd64ef334 30 if (_direction == 0) {
el17arm 27:e73dd64ef334 31 lcd.drawSprite(_x,_y,8,3,(int *)miner_left);
el17arm 27:e73dd64ef334 32 }
el17arm 27:e73dd64ef334 33 }
el17arm 27:e73dd64ef334 34 void Miner::miner_land(N5110 &lcd)
el17arm 27:e73dd64ef334 35 {
el17arm 27:e73dd64ef334 36 _jump = (lcd.getPixel(_x+4,_y+8) || lcd.getPixel(_x-1,_y+8));
el17arm 27:e73dd64ef334 37
el17arm 27:e73dd64ef334 38 _gravity = !lcd.getPixel(_x,_y+8) && !lcd.getPixel(_x+2, _y+8);
el17arm 27:e73dd64ef334 39 }
el17arm 27:e73dd64ef334 40
el17arm 27:e73dd64ef334 41 void Miner::miner_move(Direction d, N5110 &lcd)
el17arm 27:e73dd64ef334 42 {
el17arm 27:e73dd64ef334 43 if (d==E || d==NE) {
el17arm 27:e73dd64ef334 44 _x++;
el17arm 27:e73dd64ef334 45 _direction = 1; //chooses right facing sprite
el17arm 27:e73dd64ef334 46 }
el17arm 27:e73dd64ef334 47 if (d==W || d==NW) {
el17arm 30:6d6b48fe3679 48 _x--;
el17arm 27:e73dd64ef334 49 _direction = 0; //chooses left facing sprite
el17arm 27:e73dd64ef334 50 }
el17arm 29:d85886364643 51 if(_x > 81) {
el17arm 27:e73dd64ef334 52 _x=WIDTH-3;
el17arm 29:d85886364643 53 }
el17arm 29:d85886364643 54 if(_x < 0) {
el17arm 27:e73dd64ef334 55 _x=0;
el17arm 29:d85886364643 56 }
el17arm 27:e73dd64ef334 57 }
el17arm 27:e73dd64ef334 58
el17arm 27:e73dd64ef334 59 void Miner::miner_jump(N5110 &lcd, Gamepad &pad)
el17arm 30:6d6b48fe3679 60 {
el17arm 30:6d6b48fe3679 61 if(pad.check_event(Gamepad::A_PRESSED) && _jump == true) {
el17arm 30:6d6b48fe3679 62 _j_flag = true;
el17arm 30:6d6b48fe3679 63 }
el17arm 30:6d6b48fe3679 64 if(_j_flag == true) {
el17arm 30:6d6b48fe3679 65 _y--;
el17arm 30:6d6b48fe3679 66 _j_counter++;
el17arm 27:e73dd64ef334 67 }
el17arm 30:6d6b48fe3679 68 if(_j_counter > 7) {
el17arm 30:6d6b48fe3679 69 _j_flag = false;
el17arm 30:6d6b48fe3679 70 }
el17arm 30:6d6b48fe3679 71 if(_j_flag == false) {
el17arm 30:6d6b48fe3679 72 _j_counter = 0;
el17arm 30:6d6b48fe3679 73 }
el17arm 30:6d6b48fe3679 74 //printf("counter %i \n", _j_counter);
el17arm 30:6d6b48fe3679 75 //printf("flag %d \n", _j_flag);
el17arm 30:6d6b48fe3679 76 //printf("jumo %d \n", _jump);
el17arm 30:6d6b48fe3679 77
el17arm 27:e73dd64ef334 78 }
el17arm 27:e73dd64ef334 79
el17arm 27:e73dd64ef334 80 void Miner::miner_gravity(N5110 &lcd)
el17arm 27:e73dd64ef334 81 {
el17arm 27:e73dd64ef334 82 if(_gravity == 1) {
el17arm 30:6d6b48fe3679 83 _y++;
el17arm 27:e73dd64ef334 84 }
el17arm 29:d85886364643 85 }
el17arm 29:d85886364643 86
el17arm 29:d85886364643 87
el17arm 29:d85886364643 88 void Miner::enemy_init(int i, int x, int y, int d)
el17arm 29:d85886364643 89 {
el17arm 29:d85886364643 90 _enem.ex[i] = x;
el17arm 29:d85886364643 91 _enem.ey[i] = y;
el17arm 29:d85886364643 92 _enem.distance[i] = d;
el17arm 29:d85886364643 93 }
el17arm 29:d85886364643 94
el17arm 29:d85886364643 95 void Miner::enemy_move(int i, double v, N5110 &lcd)
el17arm 29:d85886364643 96 {
el17arm 29:d85886364643 97 lcd.drawSprite(_enem.ex[i],_enem.ey[i],5,3, (int *) enemy);
el17arm 29:d85886364643 98
el17arm 29:d85886364643 99 if (_enem.eflag[i] == false) {
el17arm 29:d85886364643 100 _enem.ex[i] = _enem.ex[i] + v;
el17arm 29:d85886364643 101 _enem.counter[i]++;
el17arm 29:d85886364643 102 }
el17arm 29:d85886364643 103 if(_enem.counter[i] == _enem.distance[i]) {
el17arm 29:d85886364643 104 _enem.eflag[i] = true;
el17arm 29:d85886364643 105 }
el17arm 29:d85886364643 106 if (_enem.eflag[i] == true) {
el17arm 29:d85886364643 107 _enem.ex[i] = _enem.ex[i] - v;
el17arm 29:d85886364643 108 _enem.counter[i]--;
el17arm 29:d85886364643 109 }
el17arm 29:d85886364643 110 if (_enem.counter[i] == 0) {
el17arm 29:d85886364643 111 _enem.eflag[i] = false;
el17arm 29:d85886364643 112 }
el17arm 29:d85886364643 113 }
el17arm 29:d85886364643 114
el17arm 29:d85886364643 115 bool Miner::enemy_collision(int i)
el17arm 29:d85886364643 116 {
el17arm 29:d85886364643 117 Vector2D p = get_pos();
el17arm 30:6d6b48fe3679 118
el17arm 29:d85886364643 119 if (p.x < _enem.ex[i] + 2 && p.x + 2 > _enem.ex[i] && p.y < _enem.ey[i] + 4
el17arm 30:6d6b48fe3679 120 && p.y + 9 > _enem.ey[i]) {
el17arm 29:d85886364643 121 return true;
el17arm 29:d85886364643 122 } else {
el17arm 29:d85886364643 123 return false;
el17arm 29:d85886364643 124 }
el17arm 27:e73dd64ef334 125 }