Faizan and Pages fun little game
Dependencies: 4DGL-uLCD-SE mbed SDFileSystem wave_player
stack.cpp@7:7cbff8cf583b, 2016-10-31 (annotated)
- Committer:
- fkhan39
- Date:
- Mon Oct 31 04:05:14 2016 +0000
- Revision:
- 7:7cbff8cf583b
- Parent:
- 4:c00da0b158c4
stack;
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
fkhan39 | 0:de9ffb858be9 | 1 | #include "mbed.h" |
fkhan39 | 0:de9ffb858be9 | 2 | #include "uLCD_4DGL.h" |
fkhan39 | 0:de9ffb858be9 | 3 | #include "stack.h" |
fkhan39 | 0:de9ffb858be9 | 4 | #include "food.h" |
fkhan39 | 1:9eeeb0d8f036 | 5 | #include <algorithm> |
fkhan39 | 2:4c5f409d6bb8 | 6 | #include <vector> |
fkhan39 | 0:de9ffb858be9 | 7 | |
fkhan39 | 0:de9ffb858be9 | 8 | #define BREAD 1 |
fkhan39 | 0:de9ffb858be9 | 9 | #define LETTUCE 2 |
fkhan39 | 0:de9ffb858be9 | 10 | #define CHEESE 3 |
fkhan39 | 0:de9ffb858be9 | 11 | #define TOMATO 4 |
fkhan39 | 0:de9ffb858be9 | 12 | #define BADLETTUCE 5 |
fkhan39 | 0:de9ffb858be9 | 13 | #define BADCHEESE 6 |
fkhan39 | 0:de9ffb858be9 | 14 | #define BADTOMATO 7 |
fkhan39 | 0:de9ffb858be9 | 15 | |
fkhan39 | 1:9eeeb0d8f036 | 16 | #define MAX(i) std::max(i,0) |
fkhan39 | 7:7cbff8cf583b | 17 | #define MIN(i) std::min(i,90) |
fkhan39 | 0:de9ffb858be9 | 18 | |
fkhan39 | 0:de9ffb858be9 | 19 | |
fkhan39 | 1:9eeeb0d8f036 | 20 | Stack::Stack(int location, uLCD_4DGL * uLCD) { |
fkhan39 | 1:9eeeb0d8f036 | 21 | x = location; |
fkhan39 | 2:4c5f409d6bb8 | 22 | Food bread(uLCD); |
fkhan39 | 2:4c5f409d6bb8 | 23 | stackOfFood.push_back(bread); |
fkhan39 | 1:9eeeb0d8f036 | 24 | lcd = uLCD; |
fkhan39 | 7:7cbff8cf583b | 25 | top = 122; |
fkhan39 | 1:9eeeb0d8f036 | 26 | } |
fkhan39 | 1:9eeeb0d8f036 | 27 | |
fkhan39 | 1:9eeeb0d8f036 | 28 | void Stack::move(int dx) { |
fkhan39 | 1:9eeeb0d8f036 | 29 | // constrain |
fkhan39 | 4:c00da0b158c4 | 30 | erase(); |
fkhan39 | 1:9eeeb0d8f036 | 31 | if (dx < 0) x = MAX(x + dx); |
fkhan39 | 1:9eeeb0d8f036 | 32 | else x = MIN(x + dx); |
fkhan39 | 4:c00da0b158c4 | 33 | draw(); |
fkhan39 | 3:058e10b8ecf6 | 34 | } |
fkhan39 | 3:058e10b8ecf6 | 35 | |
fkhan39 | 3:058e10b8ecf6 | 36 | int Stack::size() { |
fkhan39 | 3:058e10b8ecf6 | 37 | return stackOfFood.size(); |
fkhan39 | 3:058e10b8ecf6 | 38 | } |
fkhan39 | 3:058e10b8ecf6 | 39 | |
fkhan39 | 3:058e10b8ecf6 | 40 | void Stack::clear() { |
fkhan39 | 3:058e10b8ecf6 | 41 | erase(); |
fkhan39 | 3:058e10b8ecf6 | 42 | stackOfFood.clear(); |
fkhan39 | 3:058e10b8ecf6 | 43 | Food bread(lcd); |
fkhan39 | 3:058e10b8ecf6 | 44 | stackOfFood.push_back(bread); |
fkhan39 | 3:058e10b8ecf6 | 45 | draw(); |
fkhan39 | 3:058e10b8ecf6 | 46 | } |
fkhan39 | 3:058e10b8ecf6 | 47 | |
fkhan39 | 3:058e10b8ecf6 | 48 | void Stack::erase() { |
fkhan39 | 3:058e10b8ecf6 | 49 | // ERASE |
fkhan39 | 7:7cbff8cf583b | 50 | lcd->filled_rectangle(x - 1, 125, x + 17, 126, BLACK); |
fkhan39 | 7:7cbff8cf583b | 51 | lcd->filled_rectangle(x, top, x + 16, 124, BLACK); |
fkhan39 | 3:058e10b8ecf6 | 52 | } |
fkhan39 | 3:058e10b8ecf6 | 53 | |
fkhan39 | 3:058e10b8ecf6 | 54 | void Stack::draw() { |
fkhan39 | 3:058e10b8ecf6 | 55 | // DRAW (loop thru food vector) |
fkhan39 | 7:7cbff8cf583b | 56 | lcd->filled_rectangle(x - 1, 125, x + 17, 126, WHITE); |
fkhan39 | 7:7cbff8cf583b | 57 | int j = 122; |
fkhan39 | 3:058e10b8ecf6 | 58 | for (int i = 0; i < stackOfFood.size(); i++) { |
fkhan39 | 3:058e10b8ecf6 | 59 | stackOfFood[i].x = x; |
fkhan39 | 3:058e10b8ecf6 | 60 | stackOfFood[i].y = j; |
fkhan39 | 3:058e10b8ecf6 | 61 | stackOfFood[i].draw(); |
fkhan39 | 7:7cbff8cf583b | 62 | j -= 4; |
fkhan39 | 3:058e10b8ecf6 | 63 | } |
fkhan39 | 3:058e10b8ecf6 | 64 | } |
fkhan39 | 3:058e10b8ecf6 | 65 | |
fkhan39 | 3:058e10b8ecf6 | 66 | void Stack::add(Food * collided) { |
fkhan39 | 3:058e10b8ecf6 | 67 | collided->x = x; |
fkhan39 | 3:058e10b8ecf6 | 68 | collided->y = top; |
fkhan39 | 3:058e10b8ecf6 | 69 | top += 4; |
fkhan39 | 3:058e10b8ecf6 | 70 | stackOfFood.push_back(*collided); |
fkhan39 | 3:058e10b8ecf6 | 71 | draw(); |
fkhan39 | 0:de9ffb858be9 | 72 | } |