Faizan and Pages fun little game

Dependencies:   4DGL-uLCD-SE mbed SDFileSystem wave_player

Committer:
kswanson31
Date:
Mon Oct 31 20:18:51 2016 +0000
Revision:
18:2e42ec5e2311
Parent:
8:b2df3588d8e0
Added end of game screen, updated pause.

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 8:b2df3588d8e0 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 8:b2df3588d8e0 50 lcd->filled_rectangle(x, 125, x + 15, top, BLACK);
fkhan39 8:b2df3588d8e0 51 lcd->filled_rectangle(x - 1, 126, x + 17, 127, 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 8:b2df3588d8e0 56 lcd->filled_rectangle(x - 1, 126, x + 17, 127, WHITE);
fkhan39 8:b2df3588d8e0 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 8:b2df3588d8e0 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 8:b2df3588d8e0 69 top -= 4;
fkhan39 3:058e10b8ecf6 70 stackOfFood.push_back(*collided);
fkhan39 3:058e10b8ecf6 71 draw();
fkhan39 0:de9ffb858be9 72 }