Faizan and Pages fun little game

Dependencies:   4DGL-uLCD-SE mbed SDFileSystem wave_player

Committer:
fkhan39
Date:
Mon Oct 31 02:58:10 2016 +0000
Revision:
4:c00da0b158c4
Parent:
3:058e10b8ecf6
Child:
7:7cbff8cf583b
Child:
8:b2df3588d8e0
stack movemebt;

Who changed what in which revision?

UserRevisionLine numberNew 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 4:c00da0b158c4 17 #define MIN(i) std::min(i,107)
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 3:058e10b8ecf6 25 top = 4;
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 3:058e10b8ecf6 50 lcd->filled_rectangle(x, 4, x + 16, top - 1, BLACK);
fkhan39 3:058e10b8ecf6 51 }
fkhan39 3:058e10b8ecf6 52
fkhan39 3:058e10b8ecf6 53 void Stack::draw() {
fkhan39 3:058e10b8ecf6 54 // DRAW (loop thru food vector)
fkhan39 3:058e10b8ecf6 55 lcd->filled_rectangle(x - 1, 1, x + 17, 3, WHITE);
fkhan39 3:058e10b8ecf6 56 int j = 4;
fkhan39 3:058e10b8ecf6 57 for (int i = 0; i < stackOfFood.size(); i++) {
fkhan39 3:058e10b8ecf6 58 stackOfFood[i].x = x;
fkhan39 3:058e10b8ecf6 59 stackOfFood[i].y = j;
fkhan39 3:058e10b8ecf6 60 stackOfFood[i].draw();
fkhan39 3:058e10b8ecf6 61 j += 4;
fkhan39 3:058e10b8ecf6 62 }
fkhan39 3:058e10b8ecf6 63 }
fkhan39 3:058e10b8ecf6 64
fkhan39 3:058e10b8ecf6 65 void Stack::add(Food * collided) {
fkhan39 3:058e10b8ecf6 66 collided->x = x;
fkhan39 3:058e10b8ecf6 67 collided->y = top;
fkhan39 3:058e10b8ecf6 68 top += 4;
fkhan39 3:058e10b8ecf6 69 stackOfFood.push_back(*collided);
fkhan39 3:058e10b8ecf6 70 draw();
fkhan39 0:de9ffb858be9 71 }