Adventure game written for ECE2035 at the Georgia Institute of Technology

Dependencies:   mbed wave_player 4DGL-uLCD-SE MMA8452

Committer:
trmontgomery
Date:
Sat Oct 26 15:44:26 2019 +0000
Revision:
5:93a4c396c1af
Parent:
4:cdc54191ff07
test

Who changed what in which revision?

UserRevisionLine numberNew contents of line
rconnorlawson 0:35660d7952f7 1 #include "graphics.h"
rconnorlawson 0:35660d7952f7 2
rconnorlawson 0:35660d7952f7 3 #include "globals.h"
rconnorlawson 0:35660d7952f7 4
trmontgomery 4:cdc54191ff07 5 #define DARKGREEN 0x154f08
trmontgomery 4:cdc54191ff07 6 #define N_BROWN 0x493505
trmontgomery 4:cdc54191ff07 7
trmontgomery 4:cdc54191ff07 8
rconnorlawson 0:35660d7952f7 9
rconnorlawson 0:35660d7952f7 10
trmontgomery 4:cdc54191ff07 11 char heart[122] = "BBBBBBBBBBB"
trmontgomery 4:cdc54191ff07 12 "BBPPBBBPPBB"
trmontgomery 4:cdc54191ff07 13 "BPPPPBPPPPB"
trmontgomery 4:cdc54191ff07 14 "BPPPPPPPPPB"
trmontgomery 4:cdc54191ff07 15 "BBPPPPPPPBB"
trmontgomery 4:cdc54191ff07 16 "BBPPPPPPPBB"
trmontgomery 4:cdc54191ff07 17 "BBBPPPPPBBB"
trmontgomery 4:cdc54191ff07 18 "BBBBPPPBBBB"
trmontgomery 4:cdc54191ff07 19 "BBBBBPBBBBB"
trmontgomery 2:0876296d9473 20 "BBBBBBBBBBB"
trmontgomery 2:0876296d9473 21 "BBBBBBBBBBB";
trmontgomery 4:cdc54191ff07 22
trmontgomery 4:cdc54191ff07 23 char matt[122] = "BBB11111BBB"
trmontgomery 4:cdc54191ff07 24 "BBB1B1B1BBB"
trmontgomery 4:cdc54191ff07 25 "BBB11111BBB"
trmontgomery 4:cdc54191ff07 26 "BBWWWWWWWBB"
trmontgomery 4:cdc54191ff07 27 "BBW44W44WBB"
trmontgomery 4:cdc54191ff07 28 "BBW55W55WBB"
trmontgomery 4:cdc54191ff07 29 "BBW66W66WBB"
trmontgomery 4:cdc54191ff07 30 "BBW33W33WBB"
trmontgomery 4:cdc54191ff07 31 "BBB22222BBB"
trmontgomery 4:cdc54191ff07 32 "BBB22B22BBB"
trmontgomery 4:cdc54191ff07 33 "BBB22B22BBB";
trmontgomery 4:cdc54191ff07 34 char mattwkey[122] = "BBB11111BBB"
trmontgomery 4:cdc54191ff07 35 "BBB1B1B1BBB"
trmontgomery 4:cdc54191ff07 36 "BBB11111BBB"
trmontgomery 4:cdc54191ff07 37 "BBWWWWWWWBB"
trmontgomery 4:cdc54191ff07 38 "BBW44W44WBB"
trmontgomery 4:cdc54191ff07 39 "BBW55W55WRR"
trmontgomery 4:cdc54191ff07 40 "BBW66W66WRR"
trmontgomery 4:cdc54191ff07 41 "BBW33W33WRR"
trmontgomery 4:cdc54191ff07 42 "BBB22222BBB"
trmontgomery 4:cdc54191ff07 43 "BBB22B22BBB"
trmontgomery 4:cdc54191ff07 44 "BBB22B22BBB";
trmontgomery 4:cdc54191ff07 45
trmontgomery 4:cdc54191ff07 46 char shrub[122] = "BBBBBBBBBBB"
trmontgomery 4:cdc54191ff07 47 "BBBBBBBBBBB"
trmontgomery 4:cdc54191ff07 48 "BBBBBBBBBBB"
trmontgomery 4:cdc54191ff07 49 "BBBBBBBBBBB"
trmontgomery 4:cdc54191ff07 50 "BBBBBBBBBBB"
trmontgomery 4:cdc54191ff07 51 "BBBBBBBBBBB"
trmontgomery 4:cdc54191ff07 52 "BBBBBBBBBBB"
trmontgomery 4:cdc54191ff07 53 "BBGGBGBBGGG"
trmontgomery 4:cdc54191ff07 54 "GGGGGGGBGGB"
trmontgomery 4:cdc54191ff07 55 "BGGGGGGGGGB"
trmontgomery 4:cdc54191ff07 56 "BBGGGGGGGBB";
trmontgomery 4:cdc54191ff07 57
trmontgomery 4:cdc54191ff07 58 char lbush_str[122] = "BBGGBGBBGGG"
trmontgomery 4:cdc54191ff07 59 "GGGG6GGBGGB"
trmontgomery 4:cdc54191ff07 60 "BGGGGGG6GGB"
trmontgomery 4:cdc54191ff07 61 "BB6GBGBBGGG"
trmontgomery 4:cdc54191ff07 62 "GGGGG6GBGGB"
trmontgomery 4:cdc54191ff07 63 "BGGGGGGGGGB"
trmontgomery 4:cdc54191ff07 64 "BBGG6GGGGBB"
trmontgomery 4:cdc54191ff07 65 "BBGGB6BBGGG"
trmontgomery 4:cdc54191ff07 66 "GG6GGGGBGGB"
trmontgomery 4:cdc54191ff07 67 "BGGGG6GGGGB"
trmontgomery 4:cdc54191ff07 68 "BBGGGGGGGBB";
trmontgomery 4:cdc54191ff07 69
trmontgomery 4:cdc54191ff07 70 char redman[122] = "BBB77777BBB"
trmontgomery 4:cdc54191ff07 71 "BBB7B7B7BBB"
trmontgomery 4:cdc54191ff07 72 "BBB77777BBB"
trmontgomery 4:cdc54191ff07 73 "BB7RRRRR7BB"
trmontgomery 4:cdc54191ff07 74 "BB7RRRRR7BB"
trmontgomery 4:cdc54191ff07 75 "BB7RRRRR7BB"
trmontgomery 4:cdc54191ff07 76 "BB7RRRRR7BB"
trmontgomery 4:cdc54191ff07 77 "BB7RRRRR7BB"
trmontgomery 4:cdc54191ff07 78 "BBBVVVVVBBB"
trmontgomery 4:cdc54191ff07 79 "BBBVVBVVBBB"
trmontgomery 4:cdc54191ff07 80 "BBBVVBVVBBB";
trmontgomery 2:0876296d9473 81
rconnorlawson 0:35660d7952f7 82 void draw_player(int u, int v, int key)
rconnorlawson 0:35660d7952f7 83 {
trmontgomery 4:cdc54191ff07 84 //uLCD.filled_rectangle(u, v, u+11, v+11, RED);
trmontgomery 4:cdc54191ff07 85 if (key){
trmontgomery 4:cdc54191ff07 86 draw_img(u, v, mattwkey);
trmontgomery 4:cdc54191ff07 87 } else{
trmontgomery 4:cdc54191ff07 88 draw_img(u, v, matt);
trmontgomery 4:cdc54191ff07 89 }
rconnorlawson 0:35660d7952f7 90 }
rconnorlawson 0:35660d7952f7 91
trmontgomery 2:0876296d9473 92
trmontgomery 2:0876296d9473 93 void draw_npc(int u, int v)
trmontgomery 2:0876296d9473 94 {
trmontgomery 4:cdc54191ff07 95 draw_img(u, v, redman);
trmontgomery 2:0876296d9473 96 }
trmontgomery 2:0876296d9473 97
trmontgomery 2:0876296d9473 98
rconnorlawson 0:35660d7952f7 99 #define BROWN 0xD2691E
rconnorlawson 0:35660d7952f7 100 #define DIRT BROWN
trmontgomery 4:cdc54191ff07 101 #define CREAM 0xecd5c3 //1
trmontgomery 4:cdc54191ff07 102 #define M_BROWN 0x5a300f //2
trmontgomery 4:cdc54191ff07 103 #define M_BLUE 0x0834db //3
trmontgomery 4:cdc54191ff07 104 #define M_RED 0xd92626 //4
trmontgomery 4:cdc54191ff07 105 #define M_YELLOW 0xfff700 //5
trmontgomery 4:cdc54191ff07 106 #define M_GREEN 0x2ddd03 //6
rconnorlawson 0:35660d7952f7 107 void draw_img(int u, int v, const char* img)
rconnorlawson 0:35660d7952f7 108 {
rconnorlawson 0:35660d7952f7 109 int colors[11*11];
rconnorlawson 0:35660d7952f7 110 for (int i = 0; i < 11*11; i++)
rconnorlawson 0:35660d7952f7 111 {
rconnorlawson 0:35660d7952f7 112 if (img[i] == 'R') colors[i] = RED;
rconnorlawson 0:35660d7952f7 113 else if (img[i] == 'Y') colors[i] = YELLOW;
rconnorlawson 0:35660d7952f7 114 else if (img[i] == 'G') colors[i] = GREEN;
rconnorlawson 0:35660d7952f7 115 else if (img[i] == 'D') colors[i] = DIRT;
rconnorlawson 0:35660d7952f7 116 else if (img[i] == '5') colors[i] = LGREY;
rconnorlawson 0:35660d7952f7 117 else if (img[i] == '3') colors[i] = DGREY;
trmontgomery 2:0876296d9473 118 else if (img[i] == 'P') colors[i] = PINK1;
trmontgomery 2:0876296d9473 119 else if (img[i] == 'V') colors[i] = LIGHTPINK;
trmontgomery 4:cdc54191ff07 120 else if (img[i] == '1') colors[i] = CREAM;
trmontgomery 4:cdc54191ff07 121 else if (img[i] == '2') colors[i] = M_BROWN;
trmontgomery 4:cdc54191ff07 122 else if (img[i] == '3') colors[i] = M_BLUE;
trmontgomery 4:cdc54191ff07 123 else if (img[i] == '4') colors[i] = M_RED;
trmontgomery 4:cdc54191ff07 124 else if (img[i] == '5') colors[i] = M_YELLOW;
trmontgomery 4:cdc54191ff07 125 else if (img[i] == '6') colors[i] = M_GREEN;
trmontgomery 4:cdc54191ff07 126 else if (img[i] == '7') colors[i] = N_BROWN;
trmontgomery 4:cdc54191ff07 127 else if (img[i] == 'W') colors[i] = 0xFFFFFF;
trmontgomery 4:cdc54191ff07 128 else colors[i] = DARKGREEN;
rconnorlawson 0:35660d7952f7 129 }
rconnorlawson 0:35660d7952f7 130 uLCD.BLIT(u, v, 11, 11, colors);
rconnorlawson 0:35660d7952f7 131 wait_us(250); // Recovery time!
rconnorlawson 0:35660d7952f7 132 }
rconnorlawson 0:35660d7952f7 133
trmontgomery 4:cdc54191ff07 134
trmontgomery 4:cdc54191ff07 135
rconnorlawson 0:35660d7952f7 136 void draw_nothing(int u, int v)
rconnorlawson 0:35660d7952f7 137 {
rconnorlawson 0:35660d7952f7 138 // Fill a tile with blackness
trmontgomery 4:cdc54191ff07 139 uLCD.filled_rectangle(u, v, u+10, v+10, DARKGREEN);
trmontgomery 4:cdc54191ff07 140 }
trmontgomery 4:cdc54191ff07 141
trmontgomery 4:cdc54191ff07 142 void draw_rhouse1(int u, int v)
trmontgomery 4:cdc54191ff07 143 {
trmontgomery 4:cdc54191ff07 144 // Fill a tile with blackness
trmontgomery 4:cdc54191ff07 145 uLCD.filled_rectangle(u, v, u+10, v+10, RED);
trmontgomery 4:cdc54191ff07 146 }
trmontgomery 4:cdc54191ff07 147
trmontgomery 4:cdc54191ff07 148 void draw_rhouse2(int u, int v)
trmontgomery 4:cdc54191ff07 149 {
trmontgomery 4:cdc54191ff07 150 // Fill a tile with blackness
trmontgomery 4:cdc54191ff07 151 uLCD.filled_rectangle(u, v, u+10, v+10, M_RED);
trmontgomery 4:cdc54191ff07 152 }
trmontgomery 4:cdc54191ff07 153
trmontgomery 4:cdc54191ff07 154 void draw_bhouse1(int u, int v)
trmontgomery 4:cdc54191ff07 155 {
trmontgomery 4:cdc54191ff07 156
trmontgomery 4:cdc54191ff07 157 uLCD.filled_rectangle(u, v, u+10, v+10, BLUE);
trmontgomery 4:cdc54191ff07 158 }
trmontgomery 4:cdc54191ff07 159
trmontgomery 4:cdc54191ff07 160 void draw_bhouse2(int u, int v)
trmontgomery 4:cdc54191ff07 161 {
trmontgomery 4:cdc54191ff07 162
trmontgomery 4:cdc54191ff07 163 uLCD.filled_rectangle(u, v, u+10, v+10, M_BLUE);
rconnorlawson 0:35660d7952f7 164 }
rconnorlawson 0:35660d7952f7 165
trmontgomery 3:289762133fd6 166 void draw_house_floor(int u, int v)
trmontgomery 3:289762133fd6 167 {
trmontgomery 3:289762133fd6 168 // Fill a tile with brown (wood)
trmontgomery 3:289762133fd6 169 uLCD.filled_rectangle(u, v, u+10, v+10, BROWN);
trmontgomery 3:289762133fd6 170 }
trmontgomery 3:289762133fd6 171
rconnorlawson 0:35660d7952f7 172 void draw_wall(int u, int v)
rconnorlawson 0:35660d7952f7 173 {
trmontgomery 4:cdc54191ff07 174 uLCD.filled_rectangle(u, v, u+10, v+10, BLACK);
trmontgomery 2:0876296d9473 175 }
trmontgomery 2:0876296d9473 176
trmontgomery 2:0876296d9473 177 void draw_door(int u, int v)
trmontgomery 2:0876296d9473 178 {
trmontgomery 4:cdc54191ff07 179 uLCD.filled_rectangle(u, v, u+10, v+10, N_BROWN);
rconnorlawson 0:35660d7952f7 180 }
rconnorlawson 0:35660d7952f7 181
rconnorlawson 0:35660d7952f7 182 void draw_plant(int u, int v)
rconnorlawson 0:35660d7952f7 183 {
trmontgomery 4:cdc54191ff07 184 draw_img(u, v, shrub);
trmontgomery 4:cdc54191ff07 185 }
trmontgomery 4:cdc54191ff07 186
trmontgomery 4:cdc54191ff07 187 void draw_lbush(int u, int v)
trmontgomery 4:cdc54191ff07 188 {
trmontgomery 4:cdc54191ff07 189 draw_img(u, v, lbush_str);
trmontgomery 4:cdc54191ff07 190 }
trmontgomery 4:cdc54191ff07 191
trmontgomery 4:cdc54191ff07 192
trmontgomery 4:cdc54191ff07 193 #define GRAY2 0x9096B0
trmontgomery 4:cdc54191ff07 194 void draw_road(int u, int v)
trmontgomery 4:cdc54191ff07 195 {
trmontgomery 4:cdc54191ff07 196
trmontgomery 4:cdc54191ff07 197 uLCD.filled_rectangle(u, v, u+10, v+10, GRAY2);
rconnorlawson 0:35660d7952f7 198 }
rconnorlawson 0:35660d7952f7 199
trmontgomery 2:0876296d9473 200 void draw_spike(int u, int v)
trmontgomery 2:0876296d9473 201 {
trmontgomery 4:cdc54191ff07 202 char spikeg[122] = "BBBBBBBBBBB"
trmontgomery 4:cdc54191ff07 203 "BBBBBBBBBBB"
trmontgomery 4:cdc54191ff07 204 "BBBBBBBBBBB"
trmontgomery 4:cdc54191ff07 205 "BBBBBBBBBBB"
trmontgomery 4:cdc54191ff07 206 "BBBBBBBBBBB"
trmontgomery 4:cdc54191ff07 207 "BBBBBBBBBBB"
trmontgomery 4:cdc54191ff07 208 "BBB3BBBBBBB"
trmontgomery 4:cdc54191ff07 209 "BB333BB33BB"
trmontgomery 4:cdc54191ff07 210 "BB333333BBB"
trmontgomery 4:cdc54191ff07 211 "B333333333B"
trmontgomery 4:cdc54191ff07 212 "33333333333";
trmontgomery 4:cdc54191ff07 213 draw_img(u, v, spikeg);
trmontgomery 2:0876296d9473 214 }
trmontgomery 2:0876296d9473 215
trmontgomery 2:0876296d9473 216 #define GRAY 0x9096A0
trmontgomery 2:0876296d9473 217 void draw_rock(int u, int v)
trmontgomery 2:0876296d9473 218 {
trmontgomery 4:cdc54191ff07 219
trmontgomery 2:0876296d9473 220 uLCD.filled_rectangle(u, v, u+10, v+10, GRAY);
trmontgomery 2:0876296d9473 221 }
trmontgomery 2:0876296d9473 222
trmontgomery 2:0876296d9473 223 void draw_goal(int u, int v)
trmontgomery 2:0876296d9473 224 {
trmontgomery 4:cdc54191ff07 225 uLCD.filled_rectangle(u, v, u+10, v+10, PINK1);
trmontgomery 4:cdc54191ff07 226 }
trmontgomery 4:cdc54191ff07 227
trmontgomery 4:cdc54191ff07 228 void draw_gem1(int u, int v)
trmontgomery 4:cdc54191ff07 229 {
trmontgomery 4:cdc54191ff07 230 uLCD.filled_circle(u+3, v+3, 3, RED);
trmontgomery 4:cdc54191ff07 231 }
trmontgomery 4:cdc54191ff07 232
trmontgomery 4:cdc54191ff07 233 void draw_gem2(int u, int v)
trmontgomery 4:cdc54191ff07 234 {
trmontgomery 4:cdc54191ff07 235 uLCD.filled_circle(u+3, v+3, 3, YELLOW);
trmontgomery 4:cdc54191ff07 236 }
trmontgomery 4:cdc54191ff07 237
trmontgomery 4:cdc54191ff07 238 void draw_gem3(int u, int v)
trmontgomery 4:cdc54191ff07 239 {
trmontgomery 4:cdc54191ff07 240 uLCD.filled_circle(u+3, v+3, 3, BLUE);
trmontgomery 2:0876296d9473 241 }
trmontgomery 2:0876296d9473 242
trmontgomery 2:0876296d9473 243 void draw_upper_status(int health)
rconnorlawson 0:35660d7952f7 244 {
rconnorlawson 0:35660d7952f7 245 // Draw bottom border of status bar
trmontgomery 2:0876296d9473 246 if (health == 0){
trmontgomery 2:0876296d9473 247 uLCD.filled_rectangle(health, 9, 127, 0, GREEN);
trmontgomery 2:0876296d9473 248 } else{
trmontgomery 2:0876296d9473 249 uLCD.filled_rectangle(0, 9, health+10, 0, RED);
trmontgomery 2:0876296d9473 250 }
trmontgomery 2:0876296d9473 251 //draw_img(0, 0, heart);
rconnorlawson 0:35660d7952f7 252
rconnorlawson 0:35660d7952f7 253 // Add other status info drawing code here
trmontgomery 2:0876296d9473 254
trmontgomery 2:0876296d9473 255
rconnorlawson 0:35660d7952f7 256 }
rconnorlawson 0:35660d7952f7 257
trmontgomery 2:0876296d9473 258 void draw_lower_status(int x, int y)
rconnorlawson 0:35660d7952f7 259 {
trmontgomery 2:0876296d9473 260 //uLCD.filled_rectangle(0, 128, 128, 110, 0x000000);
rconnorlawson 0:35660d7952f7 261 // Draw top border of status bar
trmontgomery 2:0876296d9473 262 //uLCD.line(0, 118, 127, 118, GREEN);
rconnorlawson 0:35660d7952f7 263
rconnorlawson 0:35660d7952f7 264 // Add other status info drawing code here
trmontgomery 2:0876296d9473 265 char str[30];
trmontgomery 2:0876296d9473 266 sprintf(str, "Coord: (%d, %d)", x, y);
trmontgomery 2:0876296d9473 267 uLCD.text_mode(OPAQUE);
trmontgomery 2:0876296d9473 268 uLCD.textbackground_color(BLACK);
trmontgomery 2:0876296d9473 269 uLCD.text_string(str, 0, 15, FONT_7X8, 0xFFFFFF);
rconnorlawson 0:35660d7952f7 270 }
rconnorlawson 0:35660d7952f7 271
rconnorlawson 0:35660d7952f7 272 void draw_border()
rconnorlawson 0:35660d7952f7 273 {
rconnorlawson 0:35660d7952f7 274 uLCD.filled_rectangle(0, 9, 127, 14, WHITE); // Top
rconnorlawson 0:35660d7952f7 275 uLCD.filled_rectangle(0, 13, 2, 114, WHITE); // Left
rconnorlawson 0:35660d7952f7 276 uLCD.filled_rectangle(0, 114, 127, 117, WHITE); // Bottom
rconnorlawson 0:35660d7952f7 277 uLCD.filled_rectangle(124, 14, 127, 117, WHITE); // Right
rconnorlawson 0:35660d7952f7 278 }
rconnorlawson 0:35660d7952f7 279
trmontgomery 2:0876296d9473 280 void draw_game_over(){
trmontgomery 4:cdc54191ff07 281
trmontgomery 2:0876296d9473 282 uLCD.filled_rectangle(0, 128, 128, 0, WHITE);
trmontgomery 2:0876296d9473 283 uLCD.locate(1,5);
trmontgomery 2:0876296d9473 284 uLCD.text_mode(TRANSPARENT);
trmontgomery 2:0876296d9473 285 uLCD.color(BLACK);
trmontgomery 4:cdc54191ff07 286 uLCD.printf("YOU WON!");
trmontgomery 4:cdc54191ff07 287 for (int i=0; i<500; i=i+100) {
trmontgomery 4:cdc54191ff07 288 speaker.period(1.0/float(i));
trmontgomery 4:cdc54191ff07 289 speaker=0.25;
trmontgomery 4:cdc54191ff07 290 wait(.1);
trmontgomery 4:cdc54191ff07 291 }
trmontgomery 4:cdc54191ff07 292 speaker=0.0;
trmontgomery 4:cdc54191ff07 293 wait(2);
trmontgomery 2:0876296d9473 294 }
rconnorlawson 0:35660d7952f7 295