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 "food.h"
fkhan39 1:9eeeb0d8f036 4 #include <algorithm>
fkhan39 1:9eeeb0d8f036 5
fkhan39 0:de9ffb858be9 6 #define BREAD 1
fkhan39 0:de9ffb858be9 7 #define LETTUCE 2
fkhan39 0:de9ffb858be9 8 #define CHEESE 3
fkhan39 0:de9ffb858be9 9 #define TOMATO 4
fkhan39 0:de9ffb858be9 10 #define BADLETTUCE 5
fkhan39 0:de9ffb858be9 11 #define BADCHEESE 6
fkhan39 0:de9ffb858be9 12 #define BADTOMATO 7
fkhan39 0:de9ffb858be9 13
fkhan39 1:9eeeb0d8f036 14 #define MAX(i) std::max(i,0)
fkhan39 1:9eeeb0d8f036 15 #define MIN(i) std::min(i,128)
fkhan39 0:de9ffb858be9 16
fkhan39 2:4c5f409d6bb8 17 #define MAROON 0x8b0000
fkhan39 2:4c5f409d6bb8 18 #define DARKBROWN 0x654321
fkhan39 2:4c5f409d6bb8 19 #define YELLOW 0xffff00
fkhan39 2:4c5f409d6bb8 20 #define PURPLE 0x551a8b
fkhan39 2:4c5f409d6bb8 21 #define BROWN 0xf4a460
fkhan39 2:4c5f409d6bb8 22
fkhan39 2:4c5f409d6bb8 23 Food::Food(uLCD_4DGL * uLCD) {
fkhan39 2:4c5f409d6bb8 24 lcd = uLCD;
fkhan39 2:4c5f409d6bb8 25 typeOfFood = BREAD;
fkhan39 2:4c5f409d6bb8 26 isBad = false;
fkhan39 2:4c5f409d6bb8 27 // leave x and y uninitialized?
fkhan39 2:4c5f409d6bb8 28 }
fkhan39 1:9eeeb0d8f036 29
fkhan39 1:9eeeb0d8f036 30 Food::Food(int type, int location, uLCD_4DGL * uLCD) {
fkhan39 1:9eeeb0d8f036 31 lcd = uLCD;
fkhan39 0:de9ffb858be9 32 typeOfFood = type;
fkhan39 0:de9ffb858be9 33 isBad = (type == BADLETTUCE
fkhan39 0:de9ffb858be9 34 || type == BADTOMATO || type == BADCHEESE) ? true : false;
fkhan39 1:9eeeb0d8f036 35 x = location;
fkhan39 2:4c5f409d6bb8 36 y = 1;
fkhan39 0:de9ffb858be9 37 }
fkhan39 0:de9ffb858be9 38
fkhan39 0:de9ffb858be9 39 void Food::draw() {
fkhan39 0:de9ffb858be9 40 switch (typeOfFood) {
fkhan39 1:9eeeb0d8f036 41 case LETTUCE: drawLettuce(GREEN);
fkhan39 1:9eeeb0d8f036 42 break;
fkhan39 2:4c5f409d6bb8 43 case TOMATO: drawTomato(RED);
fkhan39 1:9eeeb0d8f036 44 break;
fkhan39 1:9eeeb0d8f036 45 case CHEESE: drawCheese(YELLOW);
fkhan39 1:9eeeb0d8f036 46 break;
fkhan39 1:9eeeb0d8f036 47 case BREAD: drawBread();
fkhan39 0:de9ffb858be9 48 break;
fkhan39 1:9eeeb0d8f036 49 case BADLETTUCE: drawLettuce(PURPLE);
fkhan39 1:9eeeb0d8f036 50 break;
fkhan39 1:9eeeb0d8f036 51 case BADTOMATO: drawTomato(PURPLE);
fkhan39 1:9eeeb0d8f036 52 break;
fkhan39 1:9eeeb0d8f036 53 case BADCHEESE: drawCheese(PURPLE);
fkhan39 1:9eeeb0d8f036 54 break;
fkhan39 0:de9ffb858be9 55 }
fkhan39 0:de9ffb858be9 56 }
fkhan39 0:de9ffb858be9 57
fkhan39 1:9eeeb0d8f036 58 void Food::drawLettuce(int color) {
fkhan39 8:b2df3588d8e0 59 lcd->filled_rectangle(x, y, x + 15, y + 3, color);
fkhan39 8:b2df3588d8e0 60 /*
fkhan39 2:4c5f409d6bb8 61 lcd->pixel(x + 1, y, BLACK);
fkhan39 2:4c5f409d6bb8 62 lcd->pixel(x + 3, y, BLACK);
fkhan39 2:4c5f409d6bb8 63 lcd->pixel(x + 5, y, BLACK);
fkhan39 2:4c5f409d6bb8 64 lcd->pixel(x, y + 3, BLACK);
fkhan39 2:4c5f409d6bb8 65 lcd->pixel(x + 6, y + 3, BLACK);
fkhan39 2:4c5f409d6bb8 66 lcd->pixel(x + 7, y + 3, BLACK);
fkhan39 8:b2df3588d8e0 67 */
fkhan39 1:9eeeb0d8f036 68 }
fkhan39 1:9eeeb0d8f036 69
fkhan39 1:9eeeb0d8f036 70 void Food::drawTomato(int color) {
fkhan39 8:b2df3588d8e0 71 lcd->filled_rectangle(x, y, x + 15, y + 3, color);
fkhan39 8:b2df3588d8e0 72 /*
fkhan39 2:4c5f409d6bb8 73 lcd->line(x + 2, y, x + 5, y, 0x8b0000);
fkhan39 2:4c5f409d6bb8 74 lcd->line(x + 2, y + 3, x + 5, y + 3, color);
fkhan39 2:4c5f409d6bb8 75 lcd->line(x, y + 1, x + 1, y + 1, MAROON);
fkhan39 2:4c5f409d6bb8 76 lcd->line(x, y + 6, x + 1, y + 7, MAROON);
fkhan39 8:b2df3588d8e0 77 */
fkhan39 1:9eeeb0d8f036 78 }
fkhan39 1:9eeeb0d8f036 79
fkhan39 1:9eeeb0d8f036 80 void Food::drawCheese(int color) {
fkhan39 8:b2df3588d8e0 81 lcd->filled_rectangle(x, y, x + 15, y + 3, color);
fkhan39 8:b2df3588d8e0 82 /*
fkhan39 2:4c5f409d6bb8 83 lcd->pixel(x, y + 7, WHITE);
fkhan39 2:4c5f409d6bb8 84 lcd->pixel(x + 1, y + 5, WHITE);
fkhan39 2:4c5f409d6bb8 85 lcd->filled_rectangle(x + 2, y + 2, x + 3, y + 3, WHITE);
fkhan39 8:b2df3588d8e0 86 */
fkhan39 1:9eeeb0d8f036 87 }
fkhan39 1:9eeeb0d8f036 88
fkhan39 1:9eeeb0d8f036 89 void Food::drawBread() {
fkhan39 8:b2df3588d8e0 90 lcd->filled_rectangle(x, y, x + 15, y + 3, BROWN);
fkhan39 8:b2df3588d8e0 91 /*
fkhan39 2:4c5f409d6bb8 92 lcd->pixel(x, y, BLACK);
fkhan39 2:4c5f409d6bb8 93 lcd->pixel(x, y + 3, BLACK);
fkhan39 2:4c5f409d6bb8 94 lcd->pixel(x, y + 1, DARKBROWN);
fkhan39 2:4c5f409d6bb8 95 lcd->pixel(x, y + 2, DARKBROWN);
fkhan39 8:b2df3588d8e0 96 */
fkhan39 2:4c5f409d6bb8 97 }
fkhan39 2:4c5f409d6bb8 98
fkhan39 2:4c5f409d6bb8 99 void Food::erase() {
fkhan39 8:b2df3588d8e0 100 lcd->filled_rectangle(x, y, x + 15, y + 3, BLACK);
fkhan39 2:4c5f409d6bb8 101 }
fkhan39 2:4c5f409d6bb8 102
fkhan39 2:4c5f409d6bb8 103 void Food::fall() {
fkhan39 2:4c5f409d6bb8 104 erase();
fkhan39 2:4c5f409d6bb8 105 y = y + 1;
fkhan39 2:4c5f409d6bb8 106 draw();
fkhan39 1:9eeeb0d8f036 107 }