ELEC2645 (2018/19) / Mbed 2 deprecated el17arm

Dependencies:   mbed

Committer:
el17arm
Date:
Wed Apr 10 16:20:28 2019 +0000
Revision:
31:ed5f7f15a1ed
back up

Who changed what in which revision?

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