Faizan and Pages fun little game

Dependencies:   4DGL-uLCD-SE mbed SDFileSystem wave_player

Revision:
2:4c5f409d6bb8
Parent:
1:9eeeb0d8f036
Child:
7:7cbff8cf583b
Child:
8:b2df3588d8e0
--- a/food.cpp	Sat Oct 29 19:35:46 2016 +0000
+++ b/food.cpp	Mon Oct 31 00:59:12 2016 +0000
@@ -14,8 +14,18 @@
 #define MAX(i) std::max(i,0)
 #define MIN(i) std::min(i,128)
 
-#define MAROON 0x8b0000;
-#define DARKBROWN 0x654321;
+#define MAROON 0x8b0000
+#define DARKBROWN 0x654321
+#define YELLOW 0xffff00
+#define PURPLE 0x551a8b
+#define BROWN 0xf4a460
+
+Food::Food(uLCD_4DGL * uLCD) {
+    lcd = uLCD;
+    typeOfFood = BREAD;
+    isBad = false;
+    // leave x and y uninitialized?
+}
 
 Food::Food(int type, int location, uLCD_4DGL * uLCD) {
     lcd = uLCD;
@@ -23,14 +33,14 @@
     isBad = (type == BADLETTUCE
         || type == BADTOMATO || type == BADCHEESE) ? true : false;
     x = location;
-    y = -3;
+    y = 1;
 }
 
 void Food::draw() {
     switch (typeOfFood) {
         case LETTUCE: drawLettuce(GREEN);
             break;
-        case TOMATO: drawTomato(RED):
+        case TOMATO: drawTomato(RED);
             break;
         case CHEESE: drawCheese(YELLOW);
             break;
@@ -42,40 +52,48 @@
             break;
         case BADCHEESE: drawCheese(PURPLE);
             break;
-        case
-        default:
     }
 }
 
 void Food::drawLettuce(int color) {
-    lcd.filled_rectangle(MAX(x), MAX(y), MIN(x + 7), MIN(y + 3), color);
-    lcd.pixel(x + 1, y, BLACK);
-    lcd.pixel(x + 3, y, BLACK);
-    lcd.pixel(x + 5, y, BLACK);
-    lcd.pixel(x, y + 3, BLACK);
-    lcd.pixel(x + 6, y + 3, BLACK);
-    lcd.pixel(x + 7, y + 3, BLACK);
+    lcd->filled_rectangle(x, y, x + 7, y + 3, color);
+    lcd->pixel(x + 1, y, BLACK);
+    lcd->pixel(x + 3, y, BLACK);
+    lcd->pixel(x + 5, y, BLACK);
+    lcd->pixel(x, y + 3, BLACK);
+    lcd->pixel(x + 6, y + 3, BLACK);
+    lcd->pixel(x + 7, y + 3, BLACK);
 }
 
 void Food::drawTomato(int color) {
-    lcd.filled_rectangle(MAX(x + 1), MAX(y), MIN(x + 2), MIN(y + 7), color);
-    lcd.line(x + 2, y, x + 5, y, MAROON);
-    lcd.line(x + 2, y + 3, x + 5, y + 3, color);
-    lcd.line(x, y + 1, x + 1, y + 1, MAROON);
-    lcd.line(x, y + 6, x + 1, y + 7, MAROON);
+    lcd->filled_rectangle(MAX(x + 1), MAX(y), MIN(x + 2), MIN(y + 7), color);
+    lcd->line(x + 2, y, x + 5, y, 0x8b0000);
+    lcd->line(x + 2, y + 3, x + 5, y + 3, color);
+    lcd->line(x, y + 1, x + 1, y + 1, MAROON);
+    lcd->line(x, y + 6, x + 1, y + 7, MAROON);
 }
 
 void Food::drawCheese(int color) {
-    lcd.filled_rectangle(MAX(x), MAX(y), MIN(x + 7), MIN(y + 3), color);
-    lcd.pixel(x, y + 7, WHITE);
-    lcd.pixel(x + 1, y + 5, WHITE);
-    lcd.filled_rectangle(x + 2, y + 2, x + 3, y + 3, WHITE);
+    lcd->filled_rectangle(MAX(x), MAX(y), MIN(x + 7), MIN(y + 3), color);
+    lcd->pixel(x, y + 7, WHITE);
+    lcd->pixel(x + 1, y + 5, WHITE);
+    lcd->filled_rectangle(x + 2, y + 2, x + 3, y + 3, WHITE);
 }
 
 void Food::drawBread() {
-    lcd.filled_rectangle(MAX(x), MAX(y), MIN(x + 7), MIN(y + 3), BROWN);
-    lcd.pixel(x, y, BLACK);
-    lcd.pixel(x, y + 3, BLACK);
-    lcd.pixel(x, y + 1, DARKBROWN);
-    lcd.pixel(x, y + 2, DARKBROWN);
+    lcd->filled_rectangle(MAX(x), MAX(y), MIN(x + 7), MIN(y + 3), BROWN);
+    lcd->pixel(x, y, BLACK);
+    lcd->pixel(x, y + 3, BLACK);
+    lcd->pixel(x, y + 1, DARKBROWN);
+    lcd->pixel(x, y + 2, DARKBROWN);
+}
+
+void Food::erase() {
+    lcd->filled_rectangle(MAX(x), MAX(y), MIN(x + 7), MIN(y + 3), BLACK);
+}
+
+void Food::fall() {
+    erase();
+    y = y + 1;
+    draw();
 }
\ No newline at end of file