Adventure game written for ECE2035 at the Georgia Institute of Technology

Dependencies:   mbed wave_player 4DGL-uLCD-SE MMA8452

Committer:
trmontgomery
Date:
Wed Apr 18 20:18:51 2018 +0000
Revision:
3:289762133fd6
Parent:
2:0876296d9473
Child:
4:cdc54191ff07
The second map works!

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
rconnorlawson 0:35660d7952f7 5
rconnorlawson 0:35660d7952f7 6
trmontgomery 2:0876296d9473 7 char heart[122] = "BPPPVBBPPPV"
trmontgomery 2:0876296d9473 8 "PPPPPVPPPPP"
trmontgomery 2:0876296d9473 9 "PPPPPPPPPPP"
trmontgomery 2:0876296d9473 10 "PPPPPPPPPPP"
trmontgomery 2:0876296d9473 11 "PPPPPPPPPPP"
trmontgomery 2:0876296d9473 12 "PPPPPPPPPPP"
trmontgomery 2:0876296d9473 13 "PPPPPPPPPPP"
trmontgomery 2:0876296d9473 14 "PPPPPPPPPPP"
trmontgomery 2:0876296d9473 15 "BPPPPPPPPPV"
trmontgomery 2:0876296d9473 16 "BBBBBBBBBBB"
trmontgomery 2:0876296d9473 17 "BBBBBBBBBBB";
trmontgomery 2:0876296d9473 18
rconnorlawson 0:35660d7952f7 19 void draw_player(int u, int v, int key)
rconnorlawson 0:35660d7952f7 20 {
rconnorlawson 0:35660d7952f7 21 uLCD.filled_rectangle(u, v, u+11, v+11, RED);
rconnorlawson 0:35660d7952f7 22 }
rconnorlawson 0:35660d7952f7 23
trmontgomery 2:0876296d9473 24
trmontgomery 2:0876296d9473 25 void draw_npc(int u, int v)
trmontgomery 2:0876296d9473 26 {
trmontgomery 2:0876296d9473 27 uLCD.filled_rectangle(u, v, u+11, v+11, YELLOW);
trmontgomery 2:0876296d9473 28 }
trmontgomery 2:0876296d9473 29
trmontgomery 2:0876296d9473 30
rconnorlawson 0:35660d7952f7 31 #define BROWN 0xD2691E
rconnorlawson 0:35660d7952f7 32 #define DIRT BROWN
rconnorlawson 0:35660d7952f7 33 void draw_img(int u, int v, const char* img)
rconnorlawson 0:35660d7952f7 34 {
rconnorlawson 0:35660d7952f7 35 int colors[11*11];
rconnorlawson 0:35660d7952f7 36 for (int i = 0; i < 11*11; i++)
rconnorlawson 0:35660d7952f7 37 {
rconnorlawson 0:35660d7952f7 38 if (img[i] == 'R') colors[i] = RED;
rconnorlawson 0:35660d7952f7 39 else if (img[i] == 'Y') colors[i] = YELLOW;
rconnorlawson 0:35660d7952f7 40 else if (img[i] == 'G') colors[i] = GREEN;
rconnorlawson 0:35660d7952f7 41 else if (img[i] == 'D') colors[i] = DIRT;
rconnorlawson 0:35660d7952f7 42 else if (img[i] == '5') colors[i] = LGREY;
rconnorlawson 0:35660d7952f7 43 else if (img[i] == '3') colors[i] = DGREY;
trmontgomery 2:0876296d9473 44 else if (img[i] == 'P') colors[i] = PINK1;
trmontgomery 2:0876296d9473 45 else if (img[i] == 'V') colors[i] = LIGHTPINK;
rconnorlawson 0:35660d7952f7 46 else colors[i] = BLACK;
rconnorlawson 0:35660d7952f7 47 }
rconnorlawson 0:35660d7952f7 48 uLCD.BLIT(u, v, 11, 11, colors);
rconnorlawson 0:35660d7952f7 49 wait_us(250); // Recovery time!
rconnorlawson 0:35660d7952f7 50 }
rconnorlawson 0:35660d7952f7 51
rconnorlawson 0:35660d7952f7 52 void draw_nothing(int u, int v)
rconnorlawson 0:35660d7952f7 53 {
rconnorlawson 0:35660d7952f7 54 // Fill a tile with blackness
rconnorlawson 0:35660d7952f7 55 uLCD.filled_rectangle(u, v, u+10, v+10, BLACK);
rconnorlawson 0:35660d7952f7 56 }
rconnorlawson 0:35660d7952f7 57
trmontgomery 3:289762133fd6 58 void draw_house_floor(int u, int v)
trmontgomery 3:289762133fd6 59 {
trmontgomery 3:289762133fd6 60 // Fill a tile with brown (wood)
trmontgomery 3:289762133fd6 61 uLCD.filled_rectangle(u, v, u+10, v+10, BROWN);
trmontgomery 3:289762133fd6 62 }
trmontgomery 3:289762133fd6 63
rconnorlawson 0:35660d7952f7 64 void draw_wall(int u, int v)
rconnorlawson 0:35660d7952f7 65 {
trmontgomery 2:0876296d9473 66 uLCD.filled_rectangle(u, v, u+10, v+10, BLUE);
trmontgomery 2:0876296d9473 67 }
trmontgomery 2:0876296d9473 68
trmontgomery 2:0876296d9473 69 void draw_door(int u, int v)
trmontgomery 2:0876296d9473 70 {
trmontgomery 2:0876296d9473 71 uLCD.filled_rectangle(u, v, u+5, v+5, RED);
rconnorlawson 0:35660d7952f7 72 }
rconnorlawson 0:35660d7952f7 73
rconnorlawson 0:35660d7952f7 74 void draw_plant(int u, int v)
rconnorlawson 0:35660d7952f7 75 {
rconnorlawson 0:35660d7952f7 76 uLCD.filled_rectangle(u, v, u+10, v+10, GREEN);
rconnorlawson 0:35660d7952f7 77 }
rconnorlawson 0:35660d7952f7 78
trmontgomery 2:0876296d9473 79 void draw_spike(int u, int v)
trmontgomery 2:0876296d9473 80 {
trmontgomery 2:0876296d9473 81 uLCD.triangle(u, v, u+10, v+10, u, v+10, PINK1);
trmontgomery 2:0876296d9473 82 }
trmontgomery 2:0876296d9473 83
trmontgomery 2:0876296d9473 84 #define GRAY 0x9096A0
trmontgomery 2:0876296d9473 85 void draw_rock(int u, int v)
trmontgomery 2:0876296d9473 86 {
trmontgomery 2:0876296d9473 87 uLCD.filled_rectangle(u, v, u+10, v+10, GRAY);
trmontgomery 2:0876296d9473 88 }
trmontgomery 2:0876296d9473 89
trmontgomery 2:0876296d9473 90 void draw_goal(int u, int v)
trmontgomery 2:0876296d9473 91 {
trmontgomery 2:0876296d9473 92 uLCD.filled_rectangle(u, v, u+10, v+10, BROWN);
trmontgomery 2:0876296d9473 93 }
trmontgomery 2:0876296d9473 94
trmontgomery 2:0876296d9473 95 void draw_upper_status(int health)
rconnorlawson 0:35660d7952f7 96 {
rconnorlawson 0:35660d7952f7 97 // Draw bottom border of status bar
trmontgomery 2:0876296d9473 98 if (health == 0){
trmontgomery 2:0876296d9473 99 uLCD.filled_rectangle(health, 9, 127, 0, GREEN);
trmontgomery 2:0876296d9473 100 } else{
trmontgomery 2:0876296d9473 101 uLCD.filled_rectangle(0, 9, health+10, 0, RED);
trmontgomery 2:0876296d9473 102 }
trmontgomery 2:0876296d9473 103 //draw_img(0, 0, heart);
rconnorlawson 0:35660d7952f7 104
rconnorlawson 0:35660d7952f7 105 // Add other status info drawing code here
trmontgomery 2:0876296d9473 106
trmontgomery 2:0876296d9473 107
rconnorlawson 0:35660d7952f7 108 }
rconnorlawson 0:35660d7952f7 109
trmontgomery 2:0876296d9473 110 void draw_lower_status(int x, int y)
rconnorlawson 0:35660d7952f7 111 {
trmontgomery 2:0876296d9473 112 //uLCD.filled_rectangle(0, 128, 128, 110, 0x000000);
rconnorlawson 0:35660d7952f7 113 // Draw top border of status bar
trmontgomery 2:0876296d9473 114 //uLCD.line(0, 118, 127, 118, GREEN);
rconnorlawson 0:35660d7952f7 115
rconnorlawson 0:35660d7952f7 116 // Add other status info drawing code here
trmontgomery 2:0876296d9473 117 char str[30];
trmontgomery 2:0876296d9473 118 sprintf(str, "Coord: (%d, %d)", x, y);
trmontgomery 2:0876296d9473 119 uLCD.text_mode(OPAQUE);
trmontgomery 2:0876296d9473 120 uLCD.textbackground_color(BLACK);
trmontgomery 2:0876296d9473 121 uLCD.text_string(str, 0, 15, FONT_7X8, 0xFFFFFF);
rconnorlawson 0:35660d7952f7 122 }
rconnorlawson 0:35660d7952f7 123
rconnorlawson 0:35660d7952f7 124 void draw_border()
rconnorlawson 0:35660d7952f7 125 {
rconnorlawson 0:35660d7952f7 126 uLCD.filled_rectangle(0, 9, 127, 14, WHITE); // Top
rconnorlawson 0:35660d7952f7 127 uLCD.filled_rectangle(0, 13, 2, 114, WHITE); // Left
rconnorlawson 0:35660d7952f7 128 uLCD.filled_rectangle(0, 114, 127, 117, WHITE); // Bottom
rconnorlawson 0:35660d7952f7 129 uLCD.filled_rectangle(124, 14, 127, 117, WHITE); // Right
rconnorlawson 0:35660d7952f7 130 }
rconnorlawson 0:35660d7952f7 131
trmontgomery 2:0876296d9473 132 void draw_game_over(){
trmontgomery 2:0876296d9473 133 uLCD.filled_rectangle(0, 128, 128, 0, WHITE);
trmontgomery 2:0876296d9473 134 uLCD.locate(1,5);
trmontgomery 2:0876296d9473 135 uLCD.text_mode(TRANSPARENT);
trmontgomery 2:0876296d9473 136 uLCD.color(BLACK);
trmontgomery 2:0876296d9473 137 uLCD.printf("GAME OVER!");
trmontgomery 2:0876296d9473 138 }
rconnorlawson 0:35660d7952f7 139