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/Sprites.cpp@31:ed5f7f15a1ed, 2019-04-10 (annotated)
- Committer:
- el17arm
- Date:
- Wed Apr 10 16:20:28 2019 +0000
- Revision:
- 31:ed5f7f15a1ed
back up
Who changed what in which revision?
| User | Revision | Line number | New 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 | } |