Faizan and Pages fun little game

Dependencies:   4DGL-uLCD-SE mbed SDFileSystem wave_player

Committer:
fkhan39
Date:
Mon Oct 31 00:59:12 2016 +0000
Revision:
2:4c5f409d6bb8
Parent:
1:9eeeb0d8f036
Child:
3:058e10b8ecf6
MORE;

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 "food.h"
fkhan39 0:de9ffb858be9 4 #include "stack.h"
fkhan39 1:9eeeb0d8f036 5 #include <ctime>
fkhan39 1:9eeeb0d8f036 6 #include <cstdlib>
fkhan39 2:4c5f409d6bb8 7 #include <vector>
fkhan39 0:de9ffb858be9 8
fkhan39 0:de9ffb858be9 9 #define BREAD 1
fkhan39 0:de9ffb858be9 10 #define LETTUCE 2
fkhan39 0:de9ffb858be9 11 #define CHEESE 3
fkhan39 0:de9ffb858be9 12 #define TOMATO 4
fkhan39 0:de9ffb858be9 13 #define BADLETTUCE 5
fkhan39 0:de9ffb858be9 14 #define BADCHEESE 6
fkhan39 0:de9ffb858be9 15 #define BADTOMATO 7
fkhan39 0:de9ffb858be9 16
fkhan39 0:de9ffb858be9 17 uLCD_4DGL lcd(p9,p10,p11);
fkhan39 1:9eeeb0d8f036 18 vector<Food> foods;
fkhan39 2:4c5f409d6bb8 19 Food collided(&lcd);
fkhan39 1:9eeeb0d8f036 20 Stack sandwich(64,&lcd);
fkhan39 2:4c5f409d6bb8 21 DigitalIn right(p19);
fkhan39 2:4c5f409d6bb8 22 DigitalIn left(p20);
fkhan39 2:4c5f409d6bb8 23 int score, lives;
fkhan39 2:4c5f409d6bb8 24 float clk, clk2;
fkhan39 2:4c5f409d6bb8 25 Timer t;
fkhan39 2:4c5f409d6bb8 26
fkhan39 2:4c5f409d6bb8 27 bool collisionCheck();
fkhan39 0:de9ffb858be9 28
fkhan39 0:de9ffb858be9 29 int main() {
fkhan39 0:de9ffb858be9 30
fkhan39 1:9eeeb0d8f036 31 score = 0;
fkhan39 2:4c5f409d6bb8 32 lives = 3;
fkhan39 1:9eeeb0d8f036 33 left.mode(PullUp);
fkhan39 1:9eeeb0d8f036 34 right.mode(PullUp);
fkhan39 2:4c5f409d6bb8 35 t.start();
fkhan39 1:9eeeb0d8f036 36 srand(time(NULL));
fkhan39 2:4c5f409d6bb8 37 clk = clk2 = 0;
fkhan39 1:9eeeb0d8f036 38
fkhan39 2:4c5f409d6bb8 39 lcd.line(1, 112, 126, 112, WHITE);
fkhan39 1:9eeeb0d8f036 40
fkhan39 2:4c5f409d6bb8 41 while(lives) {
fkhan39 1:9eeeb0d8f036 42 if (!left) {
fkhan39 1:9eeeb0d8f036 43 sandwich.move(-1);
fkhan39 2:4c5f409d6bb8 44 } else if (!right) {
fkhan39 1:9eeeb0d8f036 45 sandwich.move(+1);
fkhan39 1:9eeeb0d8f036 46 }
fkhan39 1:9eeeb0d8f036 47 if (collisionCheck()) {
fkhan39 1:9eeeb0d8f036 48 // if the collided object is bad
fkhan39 1:9eeeb0d8f036 49 // loss of life
fkhan39 1:9eeeb0d8f036 50 // if the collided object is bread
fkhan39 1:9eeeb0d8f036 51 // close up the sandwich, add the points to the overall score, re draw
fkhan39 1:9eeeb0d8f036 52 // else
fkhan39 1:9eeeb0d8f036 53 // add to stack, remove from falling object list, redraw
fkhan39 1:9eeeb0d8f036 54 }
fkhan39 1:9eeeb0d8f036 55 // every 3 seconds add new food! use timer.
fkhan39 2:4c5f409d6bb8 56 float curr = t.read();
fkhan39 2:4c5f409d6bb8 57 if (curr - clk >= 3.0) {
fkhan39 2:4c5f409d6bb8 58 clk = curr;
fkhan39 2:4c5f409d6bb8 59 // lcd.printf(" new ");
fkhan39 2:4c5f409d6bb8 60 int x = rand()%110+1;
fkhan39 2:4c5f409d6bb8 61 int type = rand()%7+1;
fkhan39 2:4c5f409d6bb8 62 Food item(type, x, &lcd);
fkhan39 2:4c5f409d6bb8 63 foods.push_back(item);
fkhan39 2:4c5f409d6bb8 64 // add new food
fkhan39 2:4c5f409d6bb8 65 }
fkhan39 1:9eeeb0d8f036 66 // every .2 second each food should fall a lil bit! use timer.
fkhan39 2:4c5f409d6bb8 67 if (curr - clk2 >= 0.2) {
fkhan39 2:4c5f409d6bb8 68 clk2 = curr;
fkhan39 2:4c5f409d6bb8 69 // lcd.printf(" fall ");
fkhan39 2:4c5f409d6bb8 70 for (int i = 0; i < foods.size(); i++) {
fkhan39 2:4c5f409d6bb8 71 Food * f = &foods[i];
fkhan39 2:4c5f409d6bb8 72 f->fall();
fkhan39 2:4c5f409d6bb8 73 }
fkhan39 2:4c5f409d6bb8 74 // each food should fall a lil bit!
fkhan39 2:4c5f409d6bb8 75 }
fkhan39 0:de9ffb858be9 76 }
fkhan39 2:4c5f409d6bb8 77
fkhan39 2:4c5f409d6bb8 78 lcd.printf("Your score is: %i", score);
fkhan39 0:de9ffb858be9 79 }
fkhan39 1:9eeeb0d8f036 80
fkhan39 1:9eeeb0d8f036 81 bool collisionCheck() {
fkhan39 1:9eeeb0d8f036 82
fkhan39 1:9eeeb0d8f036 83
fkhan39 1:9eeeb0d8f036 84 // remove foods from vector that are off screen
fkhan39 1:9eeeb0d8f036 85 // find foods that have an (x,y) that is within the range of the top of the stack
fkhan39 1:9eeeb0d8f036 86 // if nothing found w/i the range
fkhan39 1:9eeeb0d8f036 87 // return false
fkhan39 1:9eeeb0d8f036 88 // if something found
fkhan39 1:9eeeb0d8f036 89 // collidedFood = that food item
fkhan39 1:9eeeb0d8f036 90 // return true
fkhan39 2:4c5f409d6bb8 91 return NULL;
fkhan39 2:4c5f409d6bb8 92 }
fkhan39 1:9eeeb0d8f036 93