Faizan and Pages fun little game
Dependencies: 4DGL-uLCD-SE mbed SDFileSystem wave_player
food.cpp@1:9eeeb0d8f036, 2016-10-29 (annotated)
- Committer:
- fkhan39
- Date:
- Sat Oct 29 19:35:46 2016 +0000
- Revision:
- 1:9eeeb0d8f036
- Parent:
- 0:de9ffb858be9
- Child:
- 2:4c5f409d6bb8
.
Who changed what in which revision?
User | Revision | Line number | New 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 | 1:9eeeb0d8f036 | 17 | #define MAROON 0x8b0000; |
fkhan39 | 1:9eeeb0d8f036 | 18 | #define DARKBROWN 0x654321; |
fkhan39 | 1:9eeeb0d8f036 | 19 | |
fkhan39 | 1:9eeeb0d8f036 | 20 | Food::Food(int type, int location, uLCD_4DGL * uLCD) { |
fkhan39 | 1:9eeeb0d8f036 | 21 | lcd = uLCD; |
fkhan39 | 0:de9ffb858be9 | 22 | typeOfFood = type; |
fkhan39 | 0:de9ffb858be9 | 23 | isBad = (type == BADLETTUCE |
fkhan39 | 0:de9ffb858be9 | 24 | || type == BADTOMATO || type == BADCHEESE) ? true : false; |
fkhan39 | 1:9eeeb0d8f036 | 25 | x = location; |
fkhan39 | 1:9eeeb0d8f036 | 26 | y = -3; |
fkhan39 | 0:de9ffb858be9 | 27 | } |
fkhan39 | 0:de9ffb858be9 | 28 | |
fkhan39 | 0:de9ffb858be9 | 29 | void Food::draw() { |
fkhan39 | 0:de9ffb858be9 | 30 | switch (typeOfFood) { |
fkhan39 | 1:9eeeb0d8f036 | 31 | case LETTUCE: drawLettuce(GREEN); |
fkhan39 | 1:9eeeb0d8f036 | 32 | break; |
fkhan39 | 1:9eeeb0d8f036 | 33 | case TOMATO: drawTomato(RED): |
fkhan39 | 1:9eeeb0d8f036 | 34 | break; |
fkhan39 | 1:9eeeb0d8f036 | 35 | case CHEESE: drawCheese(YELLOW); |
fkhan39 | 1:9eeeb0d8f036 | 36 | break; |
fkhan39 | 1:9eeeb0d8f036 | 37 | case BREAD: drawBread(); |
fkhan39 | 0:de9ffb858be9 | 38 | break; |
fkhan39 | 1:9eeeb0d8f036 | 39 | case BADLETTUCE: drawLettuce(PURPLE); |
fkhan39 | 1:9eeeb0d8f036 | 40 | break; |
fkhan39 | 1:9eeeb0d8f036 | 41 | case BADTOMATO: drawTomato(PURPLE); |
fkhan39 | 1:9eeeb0d8f036 | 42 | break; |
fkhan39 | 1:9eeeb0d8f036 | 43 | case BADCHEESE: drawCheese(PURPLE); |
fkhan39 | 1:9eeeb0d8f036 | 44 | break; |
fkhan39 | 1:9eeeb0d8f036 | 45 | case |
fkhan39 | 1:9eeeb0d8f036 | 46 | default: |
fkhan39 | 0:de9ffb858be9 | 47 | } |
fkhan39 | 0:de9ffb858be9 | 48 | } |
fkhan39 | 0:de9ffb858be9 | 49 | |
fkhan39 | 1:9eeeb0d8f036 | 50 | void Food::drawLettuce(int color) { |
fkhan39 | 1:9eeeb0d8f036 | 51 | lcd.filled_rectangle(MAX(x), MAX(y), MIN(x + 7), MIN(y + 3), color); |
fkhan39 | 1:9eeeb0d8f036 | 52 | lcd.pixel(x + 1, y, BLACK); |
fkhan39 | 1:9eeeb0d8f036 | 53 | lcd.pixel(x + 3, y, BLACK); |
fkhan39 | 1:9eeeb0d8f036 | 54 | lcd.pixel(x + 5, y, BLACK); |
fkhan39 | 1:9eeeb0d8f036 | 55 | lcd.pixel(x, y + 3, BLACK); |
fkhan39 | 1:9eeeb0d8f036 | 56 | lcd.pixel(x + 6, y + 3, BLACK); |
fkhan39 | 1:9eeeb0d8f036 | 57 | lcd.pixel(x + 7, y + 3, BLACK); |
fkhan39 | 1:9eeeb0d8f036 | 58 | } |
fkhan39 | 1:9eeeb0d8f036 | 59 | |
fkhan39 | 1:9eeeb0d8f036 | 60 | void Food::drawTomato(int color) { |
fkhan39 | 1:9eeeb0d8f036 | 61 | lcd.filled_rectangle(MAX(x + 1), MAX(y), MIN(x + 2), MIN(y + 7), color); |
fkhan39 | 1:9eeeb0d8f036 | 62 | lcd.line(x + 2, y, x + 5, y, MAROON); |
fkhan39 | 1:9eeeb0d8f036 | 63 | lcd.line(x + 2, y + 3, x + 5, y + 3, color); |
fkhan39 | 1:9eeeb0d8f036 | 64 | lcd.line(x, y + 1, x + 1, y + 1, MAROON); |
fkhan39 | 1:9eeeb0d8f036 | 65 | lcd.line(x, y + 6, x + 1, y + 7, MAROON); |
fkhan39 | 1:9eeeb0d8f036 | 66 | } |
fkhan39 | 1:9eeeb0d8f036 | 67 | |
fkhan39 | 1:9eeeb0d8f036 | 68 | void Food::drawCheese(int color) { |
fkhan39 | 1:9eeeb0d8f036 | 69 | lcd.filled_rectangle(MAX(x), MAX(y), MIN(x + 7), MIN(y + 3), color); |
fkhan39 | 1:9eeeb0d8f036 | 70 | lcd.pixel(x, y + 7, WHITE); |
fkhan39 | 1:9eeeb0d8f036 | 71 | lcd.pixel(x + 1, y + 5, WHITE); |
fkhan39 | 1:9eeeb0d8f036 | 72 | lcd.filled_rectangle(x + 2, y + 2, x + 3, y + 3, WHITE); |
fkhan39 | 1:9eeeb0d8f036 | 73 | } |
fkhan39 | 1:9eeeb0d8f036 | 74 | |
fkhan39 | 1:9eeeb0d8f036 | 75 | void Food::drawBread() { |
fkhan39 | 1:9eeeb0d8f036 | 76 | lcd.filled_rectangle(MAX(x), MAX(y), MIN(x + 7), MIN(y + 3), BROWN); |
fkhan39 | 1:9eeeb0d8f036 | 77 | lcd.pixel(x, y, BLACK); |
fkhan39 | 1:9eeeb0d8f036 | 78 | lcd.pixel(x, y + 3, BLACK); |
fkhan39 | 1:9eeeb0d8f036 | 79 | lcd.pixel(x, y + 1, DARKBROWN); |
fkhan39 | 1:9eeeb0d8f036 | 80 | lcd.pixel(x, y + 2, DARKBROWN); |
fkhan39 | 1:9eeeb0d8f036 | 81 | } |