Faizan and Pages fun little game
Dependencies: 4DGL-uLCD-SE mbed SDFileSystem wave_player
food.cpp@2:4c5f409d6bb8, 2016-10-31 (annotated)
- Committer:
- fkhan39
- Date:
- Mon Oct 31 00:59:12 2016 +0000
- Revision:
- 2:4c5f409d6bb8
- Parent:
- 1:9eeeb0d8f036
- Child:
- 7:7cbff8cf583b
- Child:
- 8:b2df3588d8e0
MORE;
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 | 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 | 2:4c5f409d6bb8 | 59 | lcd->filled_rectangle(x, y, x + 7, y + 3, color); |
fkhan39 | 2:4c5f409d6bb8 | 60 | lcd->pixel(x + 1, y, BLACK); |
fkhan39 | 2:4c5f409d6bb8 | 61 | lcd->pixel(x + 3, y, BLACK); |
fkhan39 | 2:4c5f409d6bb8 | 62 | lcd->pixel(x + 5, y, BLACK); |
fkhan39 | 2:4c5f409d6bb8 | 63 | lcd->pixel(x, y + 3, BLACK); |
fkhan39 | 2:4c5f409d6bb8 | 64 | lcd->pixel(x + 6, y + 3, BLACK); |
fkhan39 | 2:4c5f409d6bb8 | 65 | lcd->pixel(x + 7, y + 3, BLACK); |
fkhan39 | 1:9eeeb0d8f036 | 66 | } |
fkhan39 | 1:9eeeb0d8f036 | 67 | |
fkhan39 | 1:9eeeb0d8f036 | 68 | void Food::drawTomato(int color) { |
fkhan39 | 2:4c5f409d6bb8 | 69 | lcd->filled_rectangle(MAX(x + 1), MAX(y), MIN(x + 2), MIN(y + 7), color); |
fkhan39 | 2:4c5f409d6bb8 | 70 | lcd->line(x + 2, y, x + 5, y, 0x8b0000); |
fkhan39 | 2:4c5f409d6bb8 | 71 | lcd->line(x + 2, y + 3, x + 5, y + 3, color); |
fkhan39 | 2:4c5f409d6bb8 | 72 | lcd->line(x, y + 1, x + 1, y + 1, MAROON); |
fkhan39 | 2:4c5f409d6bb8 | 73 | lcd->line(x, y + 6, x + 1, y + 7, MAROON); |
fkhan39 | 1:9eeeb0d8f036 | 74 | } |
fkhan39 | 1:9eeeb0d8f036 | 75 | |
fkhan39 | 1:9eeeb0d8f036 | 76 | void Food::drawCheese(int color) { |
fkhan39 | 2:4c5f409d6bb8 | 77 | lcd->filled_rectangle(MAX(x), MAX(y), MIN(x + 7), MIN(y + 3), color); |
fkhan39 | 2:4c5f409d6bb8 | 78 | lcd->pixel(x, y + 7, WHITE); |
fkhan39 | 2:4c5f409d6bb8 | 79 | lcd->pixel(x + 1, y + 5, WHITE); |
fkhan39 | 2:4c5f409d6bb8 | 80 | lcd->filled_rectangle(x + 2, y + 2, x + 3, y + 3, WHITE); |
fkhan39 | 1:9eeeb0d8f036 | 81 | } |
fkhan39 | 1:9eeeb0d8f036 | 82 | |
fkhan39 | 1:9eeeb0d8f036 | 83 | void Food::drawBread() { |
fkhan39 | 2:4c5f409d6bb8 | 84 | lcd->filled_rectangle(MAX(x), MAX(y), MIN(x + 7), MIN(y + 3), BROWN); |
fkhan39 | 2:4c5f409d6bb8 | 85 | lcd->pixel(x, y, BLACK); |
fkhan39 | 2:4c5f409d6bb8 | 86 | lcd->pixel(x, y + 3, BLACK); |
fkhan39 | 2:4c5f409d6bb8 | 87 | lcd->pixel(x, y + 1, DARKBROWN); |
fkhan39 | 2:4c5f409d6bb8 | 88 | lcd->pixel(x, y + 2, DARKBROWN); |
fkhan39 | 2:4c5f409d6bb8 | 89 | } |
fkhan39 | 2:4c5f409d6bb8 | 90 | |
fkhan39 | 2:4c5f409d6bb8 | 91 | void Food::erase() { |
fkhan39 | 2:4c5f409d6bb8 | 92 | lcd->filled_rectangle(MAX(x), MAX(y), MIN(x + 7), MIN(y + 3), BLACK); |
fkhan39 | 2:4c5f409d6bb8 | 93 | } |
fkhan39 | 2:4c5f409d6bb8 | 94 | |
fkhan39 | 2:4c5f409d6bb8 | 95 | void Food::fall() { |
fkhan39 | 2:4c5f409d6bb8 | 96 | erase(); |
fkhan39 | 2:4c5f409d6bb8 | 97 | y = y + 1; |
fkhan39 | 2:4c5f409d6bb8 | 98 | draw(); |
fkhan39 | 1:9eeeb0d8f036 | 99 | } |