ELEC2645 (2018/19) / Mbed 2 deprecated el17arm

Dependencies:   mbed

Committer:
el17arm
Date:
Wed Apr 10 17:19:51 2019 +0000
Revision:
32:5dc769ba4a58
Parent:
30:6d6b48fe3679
All sprites and functions now contained in one class

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 32:5dc769ba4a58 7 _k.key[0] = false;
el17arm 32:5dc769ba4a58 8 _k.key[1] = false;
el17arm 32:5dc769ba4a58 9 _k.key[2] = false;
el17arm 32:5dc769ba4a58 10 _k.key[3] = false;
el17arm 32:5dc769ba4a58 11 _k.key[4] = false;
el17arm 27:e73dd64ef334 12 }
el17arm 27:e73dd64ef334 13
el17arm 27:e73dd64ef334 14 Miner::~Miner()
el17arm 27:e73dd64ef334 15 {
el17arm 27:e73dd64ef334 16 }
el17arm 27:e73dd64ef334 17
el17arm 27:e73dd64ef334 18 void Miner::miner_init(int x, int y)
el17arm 27:e73dd64ef334 19 {
el17arm 27:e73dd64ef334 20 _x = x;
el17arm 27:e73dd64ef334 21 _y = y;
el17arm 27:e73dd64ef334 22 }
el17arm 27:e73dd64ef334 23
el17arm 27:e73dd64ef334 24 Vector2D Miner::get_pos()
el17arm 27:e73dd64ef334 25 {
el17arm 27:e73dd64ef334 26 Vector2D p = {_x,_y};
el17arm 29:d85886364643 27 return p;
el17arm 27:e73dd64ef334 28 }
el17arm 27:e73dd64ef334 29
el17arm 27:e73dd64ef334 30 void Miner::miner_draw(N5110 &lcd)
el17arm 27:e73dd64ef334 31 {
el17arm 27:e73dd64ef334 32 if (_direction == 1) {
el17arm 27:e73dd64ef334 33 lcd.drawSprite(_x,_y,8,3,(int *)miner_right);
el17arm 27:e73dd64ef334 34 }
el17arm 27:e73dd64ef334 35 if (_direction == 0) {
el17arm 27:e73dd64ef334 36 lcd.drawSprite(_x,_y,8,3,(int *)miner_left);
el17arm 27:e73dd64ef334 37 }
el17arm 27:e73dd64ef334 38 }
el17arm 27:e73dd64ef334 39 void Miner::miner_land(N5110 &lcd)
el17arm 27:e73dd64ef334 40 {
el17arm 27:e73dd64ef334 41 _jump = (lcd.getPixel(_x+4,_y+8) || lcd.getPixel(_x-1,_y+8));
el17arm 27:e73dd64ef334 42
el17arm 27:e73dd64ef334 43 _gravity = !lcd.getPixel(_x,_y+8) && !lcd.getPixel(_x+2, _y+8);
el17arm 27:e73dd64ef334 44 }
el17arm 27:e73dd64ef334 45
el17arm 27:e73dd64ef334 46 void Miner::miner_move(Direction d, N5110 &lcd)
el17arm 27:e73dd64ef334 47 {
el17arm 27:e73dd64ef334 48 if (d==E || d==NE) {
el17arm 27:e73dd64ef334 49 _x++;
el17arm 27:e73dd64ef334 50 _direction = 1; //chooses right facing sprite
el17arm 27:e73dd64ef334 51 }
el17arm 27:e73dd64ef334 52 if (d==W || d==NW) {
el17arm 30:6d6b48fe3679 53 _x--;
el17arm 27:e73dd64ef334 54 _direction = 0; //chooses left facing sprite
el17arm 27:e73dd64ef334 55 }
el17arm 29:d85886364643 56 if(_x > 81) {
el17arm 27:e73dd64ef334 57 _x=WIDTH-3;
el17arm 29:d85886364643 58 }
el17arm 29:d85886364643 59 if(_x < 0) {
el17arm 27:e73dd64ef334 60 _x=0;
el17arm 29:d85886364643 61 }
el17arm 27:e73dd64ef334 62 }
el17arm 27:e73dd64ef334 63
el17arm 27:e73dd64ef334 64 void Miner::miner_jump(N5110 &lcd, Gamepad &pad)
el17arm 30:6d6b48fe3679 65 {
el17arm 30:6d6b48fe3679 66 if(pad.check_event(Gamepad::A_PRESSED) && _jump == true) {
el17arm 30:6d6b48fe3679 67 _j_flag = true;
el17arm 30:6d6b48fe3679 68 }
el17arm 30:6d6b48fe3679 69 if(_j_flag == true) {
el17arm 30:6d6b48fe3679 70 _y--;
el17arm 30:6d6b48fe3679 71 _j_counter++;
el17arm 27:e73dd64ef334 72 }
el17arm 30:6d6b48fe3679 73 if(_j_counter > 7) {
el17arm 30:6d6b48fe3679 74 _j_flag = false;
el17arm 30:6d6b48fe3679 75 }
el17arm 30:6d6b48fe3679 76 if(_j_flag == false) {
el17arm 30:6d6b48fe3679 77 _j_counter = 0;
el17arm 30:6d6b48fe3679 78 }
el17arm 30:6d6b48fe3679 79 //printf("counter %i \n", _j_counter);
el17arm 30:6d6b48fe3679 80 //printf("flag %d \n", _j_flag);
el17arm 30:6d6b48fe3679 81 //printf("jumo %d \n", _jump);
el17arm 30:6d6b48fe3679 82
el17arm 27:e73dd64ef334 83 }
el17arm 27:e73dd64ef334 84
el17arm 27:e73dd64ef334 85 void Miner::miner_gravity(N5110 &lcd)
el17arm 27:e73dd64ef334 86 {
el17arm 27:e73dd64ef334 87 if(_gravity == 1) {
el17arm 30:6d6b48fe3679 88 _y++;
el17arm 27:e73dd64ef334 89 }
el17arm 29:d85886364643 90 }
el17arm 29:d85886364643 91
el17arm 29:d85886364643 92
el17arm 29:d85886364643 93 void Miner::enemy_init(int i, int x, int y, int d)
el17arm 29:d85886364643 94 {
el17arm 29:d85886364643 95 _enem.ex[i] = x;
el17arm 29:d85886364643 96 _enem.ey[i] = y;
el17arm 29:d85886364643 97 _enem.distance[i] = d;
el17arm 29:d85886364643 98 }
el17arm 29:d85886364643 99
el17arm 29:d85886364643 100 void Miner::enemy_move(int i, double v, N5110 &lcd)
el17arm 29:d85886364643 101 {
el17arm 29:d85886364643 102 lcd.drawSprite(_enem.ex[i],_enem.ey[i],5,3, (int *) enemy);
el17arm 29:d85886364643 103
el17arm 29:d85886364643 104 if (_enem.eflag[i] == false) {
el17arm 29:d85886364643 105 _enem.ex[i] = _enem.ex[i] + v;
el17arm 29:d85886364643 106 _enem.counter[i]++;
el17arm 29:d85886364643 107 }
el17arm 29:d85886364643 108 if(_enem.counter[i] == _enem.distance[i]) {
el17arm 29:d85886364643 109 _enem.eflag[i] = true;
el17arm 29:d85886364643 110 }
el17arm 29:d85886364643 111 if (_enem.eflag[i] == true) {
el17arm 29:d85886364643 112 _enem.ex[i] = _enem.ex[i] - v;
el17arm 29:d85886364643 113 _enem.counter[i]--;
el17arm 29:d85886364643 114 }
el17arm 29:d85886364643 115 if (_enem.counter[i] == 0) {
el17arm 29:d85886364643 116 _enem.eflag[i] = false;
el17arm 29:d85886364643 117 }
el17arm 29:d85886364643 118 }
el17arm 29:d85886364643 119
el17arm 29:d85886364643 120 bool Miner::enemy_collision(int i)
el17arm 29:d85886364643 121 {
el17arm 29:d85886364643 122 Vector2D p = get_pos();
el17arm 30:6d6b48fe3679 123
el17arm 29:d85886364643 124 if (p.x < _enem.ex[i] + 2 && p.x + 2 > _enem.ex[i] && p.y < _enem.ey[i] + 4
el17arm 30:6d6b48fe3679 125 && p.y + 9 > _enem.ey[i]) {
el17arm 29:d85886364643 126 return true;
el17arm 29:d85886364643 127 } else {
el17arm 29:d85886364643 128 return false;
el17arm 29:d85886364643 129 }
el17arm 32:5dc769ba4a58 130 }
el17arm 32:5dc769ba4a58 131
el17arm 32:5dc769ba4a58 132 void Miner::key_collect(int k, int x, int y, N5110 &lcd, Gamepad &pad)
el17arm 32:5dc769ba4a58 133 {
el17arm 32:5dc769ba4a58 134 if(_k.key[k] == false) {
el17arm 32:5dc769ba4a58 135 lcd.drawSprite(x,y,3,4,(int *)key);
el17arm 32:5dc769ba4a58 136 }
el17arm 32:5dc769ba4a58 137
el17arm 32:5dc769ba4a58 138 if ((lcd.getPixel(x-1,y+2) || lcd.getPixel(x+2,y-1) || lcd.getPixel(x+4,y+1)) &&
el17arm 32:5dc769ba4a58 139 _k.key[k] == false) {
el17arm 32:5dc769ba4a58 140 _keys++;
el17arm 32:5dc769ba4a58 141 pad.tone(850,0.1);
el17arm 32:5dc769ba4a58 142 lcd.drawSprite(x,y,3,4,(int *)key_collected);
el17arm 32:5dc769ba4a58 143 _k.key[k]= true;
el17arm 32:5dc769ba4a58 144 }
el17arm 32:5dc769ba4a58 145 }
el17arm 32:5dc769ba4a58 146
el17arm 32:5dc769ba4a58 147 int Miner::keys_collected()
el17arm 32:5dc769ba4a58 148 {
el17arm 32:5dc769ba4a58 149 int k = _keys;
el17arm 32:5dc769ba4a58 150 return k;
el17arm 32:5dc769ba4a58 151 }
el17arm 32:5dc769ba4a58 152
el17arm 32:5dc769ba4a58 153 bool Miner::exit_level(int x, int y, N5110 &lcd)
el17arm 32:5dc769ba4a58 154 {
el17arm 32:5dc769ba4a58 155 lcd.drawSprite(x,y,6,5,(int *)door);
el17arm 32:5dc769ba4a58 156
el17arm 32:5dc769ba4a58 157 if(_keys == 5 && lcd.getPixel(x-1, y+5)) {
el17arm 32:5dc769ba4a58 158 return true;
el17arm 32:5dc769ba4a58 159 } else {
el17arm 32:5dc769ba4a58 160 return false;
el17arm 32:5dc769ba4a58 161 }
el17arm 32:5dc769ba4a58 162 }
el17arm 32:5dc769ba4a58 163
el17arm 32:5dc769ba4a58 164 bool Miner::trap(int x, int y, N5110 &lcd)
el17arm 32:5dc769ba4a58 165 {
el17arm 32:5dc769ba4a58 166 lcd.drawSprite(x,y,3,3,(int *)spike);
el17arm 32:5dc769ba4a58 167
el17arm 32:5dc769ba4a58 168 if (lcd.getPixel(x,y-1) || lcd.getPixel(x+2,y-1)) {
el17arm 32:5dc769ba4a58 169 return true;
el17arm 32:5dc769ba4a58 170 } else {
el17arm 32:5dc769ba4a58 171 return false;
el17arm 32:5dc769ba4a58 172 }
el17arm 32:5dc769ba4a58 173 }
el17arm 32:5dc769ba4a58 174
el17arm 32:5dc769ba4a58 175 void Miner::draw_solid_block(int x, int y, N5110 &lcd)
el17arm 32:5dc769ba4a58 176 {
el17arm 32:5dc769ba4a58 177 lcd.drawSprite(x,y,3,3,(int *)solid_block);
el17arm 32:5dc769ba4a58 178 lcd.drawSprite(x,y,3,3,(int *)solid_block);
el17arm 32:5dc769ba4a58 179 }
el17arm 32:5dc769ba4a58 180
el17arm 32:5dc769ba4a58 181 void Miner::soft_blocks(int x, int y, N5110 &lcd)
el17arm 32:5dc769ba4a58 182 {
el17arm 32:5dc769ba4a58 183 if(lcd.getPixel(x,y) || lcd.getPixel(x+2,y) || lcd.getPixel(x+4,y)) {
el17arm 32:5dc769ba4a58 184 lcd.drawRect(x,y+1,6,1,FILL_WHITE);
el17arm 32:5dc769ba4a58 185 } else {
el17arm 32:5dc769ba4a58 186 lcd.drawRect(x,y+1,6,1,FILL_BLACK);
el17arm 32:5dc769ba4a58 187 }
el17arm 27:e73dd64ef334 188 }