Undertale
Dependencies: mbed wave_player 4DGL-uLCD-SE MMA8452
graphics.cpp
- Committer:
- cdong49
- Date:
- 2019-04-14
- Revision:
- 4:3883ea0930ec
- Parent:
- 3:ab8f2b4b44b0
File content as of revision 4:3883ea0930ec:
#include "graphics.h" #include "globals.h" void draw_player(int u, int v, int key) { if(key == 0) { draw_img(u, v, "LLDDDDDDDLLLLDYYDYDDLLLDYYLYLYYDLLDYYYYYYYDLLDLYYLYYLDLLLLLBBBLLLLLLLPPPPPLLLLLBBBBBBBLLLLYPPPPPYLLLLLBBBBBLLLLLLLDLDLLLL"); } else if(key == 1) { draw_img(u, v, "LLDDDDDDDLLLLDYYDYDDLLLDYYLYLYYDLLDYYYYYYYDLLDLYYLYYLDLLLLLGGGLLLLLLLYYYYYLLLLLGGGGGGGLLLLYYYYYYYLLLLLGGGGGLLLLLLLDLDLLLL"); } } void draw_leaf(int u, int v) { draw_img(u, v, "LLLLGGGLLLLLLGGGGGGGLLLGGGGGGGGGLLLGGGGGGGGGLGGGGGGGGGGGGGGGGGGGGGLGGGGGGGGGLGGGGGGGGGGGLGGGGGGGGGLLLGGGGGGGLLLLLGGGGGLLL"); } void draw_wood(int u, int v) { draw_img(u, v, "LLLDDDDDLLLLLDDDDDDDLLLDDDDDDDDDLLDDDDDDDDDLLDDDDDDDDDLLDDDDDDDDDLLDDDDDDDDDLLDDDDDDDDDLLDDDDDDDDDLDDDDDDDDDDDDDDDDDDDDDD"); } #define YELLOW 0xFFFF00 #define BROWN 0xD2691E #define BLUE 0x0000FF #define DIRT BROWN #define PURPLE 0X9400D3 void draw_img(int u, int v, const char* img) { int colors[11*11]; for (int i = 0; i < 11*11; i++) { if (img[i] == 'R') colors[i] = RED; else if (img[i] == 'Y') colors[i] = YELLOW; else if (img[i] == 'G') colors[i] = GREEN; else if (img[i] == 'D') colors[i] = DIRT; else if (img[i] == '5') colors[i] = LGREY; else if (img[i] == '3') colors[i] = DGREY; else if (img[i] == 'P') colors[i] = PURPLE; else if (img[i] == 'B') colors[i] = BLUE; else if(img[i] == 'W') colors[i] = WHITE; else colors[i] = BLACK; } uLCD.BLIT(u, v, 11, 11, colors); wait_us(250); // Recovery time! } void draw_nothing(int u, int v) { // Fill a tile with blackness uLCD.filled_rectangle(u, v, u+10, v+10, BLACK); } void draw_wall(int u, int v) { uLCD.filled_rectangle(u, v, u+10, v+10, BROWN); } void draw_plant(int u, int v) { draw_img(u, v, "LYYYYYYYYYLYYLLLWLLLYYYLLWLWLWLLYYLLLLYLLLLYYWWWWWWWWWYYLLWWWWWLLYYLWLLLLLWLYYLWLWWWLWLYYWLWLWLWLWYYYWLLLLLWYYLYYYYYYYYYL"); } void draw_upper_status(int x, int y) { // Draw bottom border of status bar uLCD.line(0, 9, 127, 9, GREEN); uLCD.color(GREEN); uLCD.locate(0, 0); uLCD.printf("(%d,%d)",x,y); // Add other status info drawing code here } void draw_lower_status() { // Draw top border of status bar uLCD.line(0, 118, 127, 118, GREEN); // Add other status info drawing code here } void draw_start() { uLCD.color(GREEN); uLCD.text_bold(TEXTBOLD); uLCD.locate(0, 5); uLCD.text_height(2); uLCD.text_width(2); uLCD.printf("UNDERTALE"); uLCD.text_height(1); uLCD.text_width(1); uLCD.locate(3,8); uLCD.printf("BY PETER DONG"); uLCD.locate(1,10); uLCD.printf("Follow me on ig:"); uLCD.locate(5,12); uLCD.printf("@cpeterr"); } void draw_game_over() { uLCD.cls(); uLCD.color(GREEN); uLCD.text_bold(TEXTBOLD); uLCD.locate(5, 4); uLCD.printf("GAME OVER"); uLCD.locate(0, 6); uLCD.printf("Thanks for playing"); uLCD.locate(9, 9); uLCD.printf("Peter"); wait_ms(5000); } void draw_menu(char* a, char* b, int health_count, int key, int chest, int run) { uLCD.cls(); uLCD.color(GREEN); uLCD.text_bold(TEXTBOLD); uLCD.locate(0, 4); uLCD.printf("task: %s", a); uLCD.color(RED); uLCD.text_bold(TEXTBOLD); uLCD.locate(0, 7); uLCD.printf("hint: %s", b); if(key == 1) { uLCD.color(WHITE); uLCD.text_bold(TEXTBOLD); uLCD.locate(0, 10); uLCD.printf("inventory: Chara's shirt"); if(chest==1) { uLCD.printf(", Treasure chest"); } if(run == 1) { uLCD.printf(", Running shoes"); } } if (health_count == 3) { draw_img(85, 10, "LRRRLLLRRRLRRRRRLRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRLRRRRRRRRRLLRRRRRRRRRLLLRRRRRRRLLLLRRRRRRRLLLLLRRRRRLLLLLLLRRRLLLL"); draw_img(50, 10, "LRRRLLLRRRLRRRRRLRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRLRRRRRRRRRLLRRRRRRRRRLLLRRRRRRRLLLLRRRRRRRLLLLLRRRRRLLLLLLLRRRLLLL"); draw_img(20, 10, "LRRRLLLRRRLRRRRRLRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRLRRRRRRRRRLLRRRRRRRRRLLLRRRRRRRLLLLRRRRRRRLLLLLRRRRRLLLLLLLRRRLLLL"); } else if(health_count == 2) { draw_img(50, 10, "LRRRLLLRRRLRRRRRLRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRLRRRRRRRRRLLRRRRRRRRRLLLRRRRRRRLLLLRRRRRRRLLLLLRRRRRLLLLLLLRRRLLLL"); draw_img(20, 10, "LRRRLLLRRRLRRRRRLRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRLRRRRRRRRRLLRRRRRRRRRLLLRRRRRRRLLLLRRRRRRRLLLLLRRRRRLLLLLLLRRRLLLL"); } else if(health_count == 1) { draw_img(20, 10, "LRRRLLLRRRLRRRRRLRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRLRRRRRRRRRLLRRRRRRRRRLLLRRRRRRRLLLLRRRRRRRLLLLLRRRRRLLLLLLLRRRLLLL"); } wait_ms(3000); } void draw_border() { uLCD.filled_rectangle(0, 9, 127, 14, WHITE); // Top uLCD.filled_rectangle(0, 13, 2, 114, WHITE); // Left uLCD.filled_rectangle(0, 114, 127, 117, WHITE); // Bottom uLCD.filled_rectangle(124, 14, 127, 117, WHITE); // Right } void draw_sign(int u, int v) { draw_img(u, v, "LLDDDDDDDLLLDWWWWWWWDLDWWLLWLWWWDDWWWWWWWWWDDLLWWWLLLWDDWWLLWWWWWDLDDDDDDDDDLLLLLDYDLLLLLLLLDYDLLLLLLLLDYDLLLLLLLLDDDLLLL"); } void draw_door_locked(int u, int v) { draw_img(u, v, "LLLLLLLLLLLDDDDDDDDDDDDDDDDDDDDDDLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL"); } void draw_door_unlocked(int u, int v) { draw_img(u, v, "LLLLLLLLLLLDDLLLLLLLLLDDDLLLLLLLLLDDDLLLLLLLLLDDDLLLLLLLLLDDDLLLLLLLLLDDDLLLLLLLLLDDDLLLLLLLLLDDDLLLLLLLLLDDLLLLLLLLLLLLL"); } void draw_flowey_friendly(int u, int v) { draw_img(u, v, "LYYYYYYYYYLYYWWWWWWWYYYWWWLWLWWWYYWWWLWLWWWYYWLWWWWWLWYYYWLLLLLWYYLLYYYYYYYLLLLLLGGLLLLLLLLGGLLLLLLLGLGGLLGLLLLGGGGGGGLLL"); } void draw_flowey_wink(int u, int v) { draw_img(u, v, "LYYYYYYYYYLYYWWLWWWWYYYWWWLWLLWWYYWLWWWWWWWYYWWLLLLLWWYYYWRRWWWWYYLLYYYYYYYLLLLLLGGLLLLLLLLGGLLLLLLLGLGGLLGLLLLGGGGGGGLLL"); } void draw_flowey_creepy(int u, int v) { draw_img(u, v, "LYYYYYYYYYLYYLLLWLLLYYYLLWLWLWLLYYLLLLYLLLLYYWWWWWWWWWYYLLWWWWWLLYYLWLLLLLWLYYLWLWWWLWLYYWLWLWLWLWYYYWLLLLLWYYLYYYYYYYYYL"); } void draw_toby(int u, int v) { draw_img(u, v, "LLYLLLYLLLLLYWLLLWLLLLYWWWWWWYLLLYWLWWLWYYLLYWWWWWWWYYLYWWLLWWWYYYYLWLWWLWWWYYWLLLLWWWWYYWWWWWWWWWYLYWYWYYWYYYLLYLYLLYLLY"); } void draw_toby_bone(int u, int v) { draw_img(u, v, "LLYLLLYLLLLLYWYYYWYLLLYWWWWWWYLLLYWLWWLWYYLLYWWWWWWWYYLYWWLLWWWYYYYLWLWWLRRWYYWLLLLRWRWYRRRRRRRWRWWWWWWWWWWRWWRRRRRRRRWWW"); } void draw_red_button(int u, int v) { draw_img(u, v, "LLRRRRRRRLLLRRRRRRRRRLRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRLRRRRRRRRRLLLRRRRRRRLLLLLRRRRRLLLLLLRRRRRLLLLRRRRRRRRRLRRRRRRRRRRR"); } void draw_green_button(int u, int v) { draw_img(u, v, "LLGGGGGGGLLLGGGGGGGGGLGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGLGGGGGGGGGLLLGGGGGGGLLLLLGGGGGLLLLLLGGGGGLLLLGGGGGGGGGLGGGGGGGGGGG"); } void draw_chest(int u, int v) { draw_img(u, v, "LLLYYYYYLLLLLYDDDDDYLLLYDDDDDDDYLYDDDDDDDDDYYDDDYYYDDDYYDDDDYDDDDDLLLLLLLLLLLYDDDDDDDDDYYDDDDDDDDDYYYDDDDDDDYYYYYYYYYYYYY"); } void draw_blue_button(int u, int v) { draw_img(u, v, "LLBBBBBBBLLLBBBBBBBBBLBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBLBBBBBBBBBLLLBBBBBBBLLLLLBBBBBLLLLLLBBBBBLLLLBBBBBBBBBLBBBBBBBBBBB"); } void draw_river_man(int u, int v) { draw_img(u, v, "LLLPPPPPPLLLLPBLLBBPPLLLPBLLBBBBPLLPBLLBBBBPLLPBLLBBPPBDLLPBBBBPLLDLPBBBBBPLLDDPBBBBBPDDDDPBBBBBPDDDDDPPPPPDDDPDDDDDDDDDL"); }