Adventure game written for ECE2035 at the Georgia Institute of Technology

Dependencies:   mbed wave_player 4DGL-uLCD-SE MMA8452

Committer:
trmontgomery
Date:
Tue Apr 17 17:17:20 2018 +0000
Revision:
2:0876296d9473
Parent:
0:35660d7952f7
Child:
3:289762133fd6
Baseline completed + 3 features

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
rconnorlawson 0:35660d7952f7 58 void draw_wall(int u, int v)
rconnorlawson 0:35660d7952f7 59 {
trmontgomery 2:0876296d9473 60 uLCD.filled_rectangle(u, v, u+10, v+10, BLUE);
trmontgomery 2:0876296d9473 61 }
trmontgomery 2:0876296d9473 62
trmontgomery 2:0876296d9473 63 void draw_door(int u, int v)
trmontgomery 2:0876296d9473 64 {
trmontgomery 2:0876296d9473 65 uLCD.filled_rectangle(u, v, u+5, v+5, RED);
rconnorlawson 0:35660d7952f7 66 }
rconnorlawson 0:35660d7952f7 67
rconnorlawson 0:35660d7952f7 68 void draw_plant(int u, int v)
rconnorlawson 0:35660d7952f7 69 {
rconnorlawson 0:35660d7952f7 70 uLCD.filled_rectangle(u, v, u+10, v+10, GREEN);
rconnorlawson 0:35660d7952f7 71 }
rconnorlawson 0:35660d7952f7 72
trmontgomery 2:0876296d9473 73 void draw_spike(int u, int v)
trmontgomery 2:0876296d9473 74 {
trmontgomery 2:0876296d9473 75 uLCD.triangle(u, v, u+10, v+10, u, v+10, PINK1);
trmontgomery 2:0876296d9473 76 }
trmontgomery 2:0876296d9473 77
trmontgomery 2:0876296d9473 78 #define GRAY 0x9096A0
trmontgomery 2:0876296d9473 79 void draw_rock(int u, int v)
trmontgomery 2:0876296d9473 80 {
trmontgomery 2:0876296d9473 81 uLCD.filled_rectangle(u, v, u+10, v+10, GRAY);
trmontgomery 2:0876296d9473 82 }
trmontgomery 2:0876296d9473 83
trmontgomery 2:0876296d9473 84 void draw_goal(int u, int v)
trmontgomery 2:0876296d9473 85 {
trmontgomery 2:0876296d9473 86 uLCD.filled_rectangle(u, v, u+10, v+10, BROWN);
trmontgomery 2:0876296d9473 87 }
trmontgomery 2:0876296d9473 88
trmontgomery 2:0876296d9473 89 void draw_upper_status(int health)
rconnorlawson 0:35660d7952f7 90 {
rconnorlawson 0:35660d7952f7 91 // Draw bottom border of status bar
trmontgomery 2:0876296d9473 92 if (health == 0){
trmontgomery 2:0876296d9473 93 uLCD.filled_rectangle(health, 9, 127, 0, GREEN);
trmontgomery 2:0876296d9473 94 } else{
trmontgomery 2:0876296d9473 95 uLCD.filled_rectangle(0, 9, health+10, 0, RED);
trmontgomery 2:0876296d9473 96 }
trmontgomery 2:0876296d9473 97 //draw_img(0, 0, heart);
rconnorlawson 0:35660d7952f7 98
rconnorlawson 0:35660d7952f7 99 // Add other status info drawing code here
trmontgomery 2:0876296d9473 100
trmontgomery 2:0876296d9473 101
rconnorlawson 0:35660d7952f7 102 }
rconnorlawson 0:35660d7952f7 103
trmontgomery 2:0876296d9473 104 void draw_lower_status(int x, int y)
rconnorlawson 0:35660d7952f7 105 {
trmontgomery 2:0876296d9473 106 //uLCD.filled_rectangle(0, 128, 128, 110, 0x000000);
rconnorlawson 0:35660d7952f7 107 // Draw top border of status bar
trmontgomery 2:0876296d9473 108 //uLCD.line(0, 118, 127, 118, GREEN);
rconnorlawson 0:35660d7952f7 109
rconnorlawson 0:35660d7952f7 110 // Add other status info drawing code here
trmontgomery 2:0876296d9473 111 char str[30];
trmontgomery 2:0876296d9473 112 sprintf(str, "Coord: (%d, %d)", x, y);
trmontgomery 2:0876296d9473 113 uLCD.text_mode(OPAQUE);
trmontgomery 2:0876296d9473 114 uLCD.textbackground_color(BLACK);
trmontgomery 2:0876296d9473 115 uLCD.text_string(str, 0, 15, FONT_7X8, 0xFFFFFF);
rconnorlawson 0:35660d7952f7 116 }
rconnorlawson 0:35660d7952f7 117
rconnorlawson 0:35660d7952f7 118 void draw_border()
rconnorlawson 0:35660d7952f7 119 {
rconnorlawson 0:35660d7952f7 120 uLCD.filled_rectangle(0, 9, 127, 14, WHITE); // Top
rconnorlawson 0:35660d7952f7 121 uLCD.filled_rectangle(0, 13, 2, 114, WHITE); // Left
rconnorlawson 0:35660d7952f7 122 uLCD.filled_rectangle(0, 114, 127, 117, WHITE); // Bottom
rconnorlawson 0:35660d7952f7 123 uLCD.filled_rectangle(124, 14, 127, 117, WHITE); // Right
rconnorlawson 0:35660d7952f7 124 }
rconnorlawson 0:35660d7952f7 125
trmontgomery 2:0876296d9473 126 void draw_game_over(){
trmontgomery 2:0876296d9473 127 uLCD.filled_rectangle(0, 128, 128, 0, WHITE);
trmontgomery 2:0876296d9473 128 uLCD.locate(1,5);
trmontgomery 2:0876296d9473 129 uLCD.text_mode(TRANSPARENT);
trmontgomery 2:0876296d9473 130 uLCD.color(BLACK);
trmontgomery 2:0876296d9473 131 uLCD.printf("GAME OVER!");
trmontgomery 2:0876296d9473 132 }
rconnorlawson 0:35660d7952f7 133