ELEC2645 (2019/20) / Mbed 2 deprecated ELEC2645_Project_el19tb

Dependencies:   mbed

Committer:
el19tb
Date:
Mon May 25 02:18:57 2020 +0000
Revision:
50:9ffeb4a10c0a
Parent:
49:6cad8b6ec5f2
Child:
51:4c1f49729d88
created tutorial page, main screen, level progression, structured code, adjusted end post

Who changed what in which revision?

UserRevisionLine numberNew contents of line
el19tb 35:db257b7bdefc 1 #include "GraphicEngine.h"
el19tb 35:db257b7bdefc 2
el19tb 50:9ffeb4a10c0a 3 GraphicEngine::GraphicEngine(){}
el19tb 50:9ffeb4a10c0a 4
el19tb 50:9ffeb4a10c0a 5 void GraphicEngine::getPointerPos(int sel)
el19tb 50:9ffeb4a10c0a 6 {
el19tb 50:9ffeb4a10c0a 7 switch(sel)
el19tb 50:9ffeb4a10c0a 8 {
el19tb 50:9ffeb4a10c0a 9 case 0:
el19tb 50:9ffeb4a10c0a 10 lcd.drawSprite(30, 48 - 4*12, 8, 12, (int *)frog);
el19tb 50:9ffeb4a10c0a 11 break;
el19tb 50:9ffeb4a10c0a 12 case 1:
el19tb 50:9ffeb4a10c0a 13 lcd.drawSprite(55, 44 - 4*7, 8, 12, (int *)frog);
el19tb 50:9ffeb4a10c0a 14 break;
el19tb 50:9ffeb4a10c0a 15 case 2:
el19tb 50:9ffeb4a10c0a 16 lcd.drawSprite(50, 48 - 4*4, 8, 12, (int *)frog);
el19tb 50:9ffeb4a10c0a 17 break;
el19tb 50:9ffeb4a10c0a 18 }
el19tb 50:9ffeb4a10c0a 19
el19tb 50:9ffeb4a10c0a 20 wait_ms(10);
el19tb 50:9ffeb4a10c0a 21 }
el19tb 43:2cd1cfe07770 22
el19tb 50:9ffeb4a10c0a 23 void GraphicEngine::drawMenu()
el19tb 50:9ffeb4a10c0a 24 {
el19tb 50:9ffeb4a10c0a 25 lcd.printString("Play",3, 0);
el19tb 50:9ffeb4a10c0a 26 lcd.drawRect(-1, 48 - 4*12, 30, 11, FILL_TRANSPARENT);
el19tb 50:9ffeb4a10c0a 27
el19tb 50:9ffeb4a10c0a 28 lcd.printString("Tutorial",3,2);
el19tb 50:9ffeb4a10c0a 29 lcd.drawRect(-1, 50 - 4*9, 55, 10, FILL_TRANSPARENT);
el19tb 50:9ffeb4a10c0a 30
el19tb 50:9ffeb4a10c0a 31 lcd.printString("Setting",3,4);
el19tb 50:9ffeb4a10c0a 32 lcd.drawRect(-1, 50 - 4*5, 50, 10, FILL_TRANSPARENT);
el19tb 50:9ffeb4a10c0a 33 }
el19tb 50:9ffeb4a10c0a 34
el19tb 50:9ffeb4a10c0a 35 void GraphicEngine::drawTutor1()
el19tb 50:9ffeb4a10c0a 36 {
el19tb 50:9ffeb4a10c0a 37 lcd.printString("Tutorial: (A) ", 0,0);
el19tb 50:9ffeb4a10c0a 38 lcd.printString("To move frog ", 0,1);
el19tb 50:9ffeb4a10c0a 39 lcd.printString("press X(UP), ", 0,2);
el19tb 50:9ffeb4a10c0a 40 lcd.printString("B(DOWN) ", 0,3);
el19tb 50:9ffeb4a10c0a 41 lcd.printString("A(LEFT), ", 0,4);
el19tb 50:9ffeb4a10c0a 42 lcd.printString("Y(right) ", 0,5);
el19tb 50:9ffeb4a10c0a 43 wait_ms(20);
el19tb 50:9ffeb4a10c0a 44 }
el19tb 50:9ffeb4a10c0a 45
el19tb 50:9ffeb4a10c0a 46 void GraphicEngine::drawTutor2()
el19tb 50:9ffeb4a10c0a 47 {
el19tb 50:9ffeb4a10c0a 48 lcd.printString("Tutorial: (A) ", 0,0);
el19tb 50:9ffeb4a10c0a 49 lcd.printString("Avoid, water, ", 0,1);
el19tb 50:9ffeb4a10c0a 50 lcd.printString("vehicles, ", 0,2);
el19tb 50:9ffeb4a10c0a 51 lcd.printString("snakes ", 0,3);
el19tb 50:9ffeb4a10c0a 52 lcd.printString("jump on logs, ", 0,4);
el19tb 50:9ffeb4a10c0a 53 lcd.printString("reach the goal", 0,5);
el19tb 50:9ffeb4a10c0a 54 wait_ms(20);
el19tb 43:2cd1cfe07770 55 }
el19tb 35:db257b7bdefc 56
el19tb 50:9ffeb4a10c0a 57 void GraphicEngine::drawTutor3()
el19tb 50:9ffeb4a10c0a 58 {
el19tb 50:9ffeb4a10c0a 59 lcd.printString("Tutorial: (A) ", 0,0);
el19tb 50:9ffeb4a10c0a 60 lcd.printString("Most ", 0,1);
el19tb 50:9ffeb4a10c0a 61 lcd.printString("importantly ", 0,2);
el19tb 50:9ffeb4a10c0a 62 lcd.printString("Have fun :) ", 0,3);
el19tb 50:9ffeb4a10c0a 63 lcd.printString("Press A ", 0,4);
el19tb 50:9ffeb4a10c0a 64 lcd.printString("to play! ", 0,5);
el19tb 50:9ffeb4a10c0a 65 wait_ms(20);
el19tb 50:9ffeb4a10c0a 66 }
el19tb 50:9ffeb4a10c0a 67
el19tb 50:9ffeb4a10c0a 68 void GraphicEngine::newLevel1()
el19tb 50:9ffeb4a10c0a 69 {
el19tb 50:9ffeb4a10c0a 70 lcd.printString("|------------|", 0,0);
el19tb 50:9ffeb4a10c0a 71 lcd.printString("| 1 |", 0,1);
el19tb 50:9ffeb4a10c0a 72 lcd.printString("| |", 0,2);
el19tb 50:9ffeb4a10c0a 73 lcd.printString("| |", 0,3);
el19tb 50:9ffeb4a10c0a 74 lcd.printString("| |", 0,4);
el19tb 50:9ffeb4a10c0a 75 lcd.printString("|------------|", 0,5);
el19tb 50:9ffeb4a10c0a 76 }
el19tb 50:9ffeb4a10c0a 77
el19tb 50:9ffeb4a10c0a 78
el19tb 50:9ffeb4a10c0a 79 void GraphicEngine::newLevel2()
el19tb 50:9ffeb4a10c0a 80 {
el19tb 50:9ffeb4a10c0a 81 lcd.printString("|------------|", 0,0);
el19tb 50:9ffeb4a10c0a 82 lcd.printString("| |", 0,1);
el19tb 50:9ffeb4a10c0a 83 lcd.printString("| 2 |", 0,2);
el19tb 50:9ffeb4a10c0a 84 lcd.printString("| |", 0,3);
el19tb 50:9ffeb4a10c0a 85 lcd.printString("| |", 0,4);
el19tb 50:9ffeb4a10c0a 86 lcd.printString("|------------|", 0,5);
el19tb 50:9ffeb4a10c0a 87 }
el19tb 50:9ffeb4a10c0a 88
el19tb 50:9ffeb4a10c0a 89
el19tb 50:9ffeb4a10c0a 90 void GraphicEngine::newLevel3()
el19tb 50:9ffeb4a10c0a 91 {
el19tb 50:9ffeb4a10c0a 92 lcd.printString("|------------|", 0,0);
el19tb 50:9ffeb4a10c0a 93 lcd.printString("| |", 0,1);
el19tb 50:9ffeb4a10c0a 94 lcd.printString("| 3 |", 0,2);
el19tb 50:9ffeb4a10c0a 95 lcd.printString("| |", 0,3);
el19tb 50:9ffeb4a10c0a 96 lcd.printString("| |", 0,4);
el19tb 50:9ffeb4a10c0a 97 lcd.printString("|------------|", 0,5);
el19tb 50:9ffeb4a10c0a 98 }
el19tb 50:9ffeb4a10c0a 99
el19tb 50:9ffeb4a10c0a 100
el19tb 50:9ffeb4a10c0a 101 void GraphicEngine::newLevelIntro()
el19tb 50:9ffeb4a10c0a 102 {
el19tb 50:9ffeb4a10c0a 103 lcd.printString("|------------|", 0,0);
el19tb 50:9ffeb4a10c0a 104 lcd.printString("| |", 0,1);
el19tb 50:9ffeb4a10c0a 105 lcd.printString("| |", 0,2);
el19tb 50:9ffeb4a10c0a 106 lcd.printString("| LEVEL 2 |", 0,3);
el19tb 50:9ffeb4a10c0a 107 lcd.printString("| |", 0,4);
el19tb 50:9ffeb4a10c0a 108 lcd.printString("|------------|", 0,5);
el19tb 50:9ffeb4a10c0a 109 }
el19tb 50:9ffeb4a10c0a 110
el19tb 50:9ffeb4a10c0a 111 void GraphicEngine::newLevelGo()
el19tb 50:9ffeb4a10c0a 112 {
el19tb 50:9ffeb4a10c0a 113 lcd.printString("|------------|", 0,0);
el19tb 50:9ffeb4a10c0a 114 lcd.printString("| |", 0,1);
el19tb 50:9ffeb4a10c0a 115 lcd.printString("| |", 0,2);
el19tb 50:9ffeb4a10c0a 116 lcd.printString("| |", 0,3);
el19tb 50:9ffeb4a10c0a 117 lcd.printString("| GO! |", 0,4);
el19tb 50:9ffeb4a10c0a 118 lcd.printString("|------------|", 0,5);
el19tb 50:9ffeb4a10c0a 119 }
el19tb 42:04e326dcf09b 120 void GraphicEngine::init()
el19tb 42:04e326dcf09b 121 {
el19tb 35:db257b7bdefc 122 lcd.init();
el19tb 35:db257b7bdefc 123 }
el19tb 35:db257b7bdefc 124
el19tb 42:04e326dcf09b 125 /* TO-DO: ADD CONTROLS FOR BACKLIGHT */
el19tb 42:04e326dcf09b 126 void GraphicEngine::contrast()
el19tb 42:04e326dcf09b 127 {
el19tb 48:8ccfc74b60a5 128 lcd.setContrast(0.45);
el19tb 42:04e326dcf09b 129 }
el19tb 42:04e326dcf09b 130
el19tb 42:04e326dcf09b 131 void GraphicEngine::clear()
el19tb 42:04e326dcf09b 132 {
el19tb 42:04e326dcf09b 133 lcd.clear();
el19tb 35:db257b7bdefc 134 }
el19tb 35:db257b7bdefc 135
el19tb 42:04e326dcf09b 136 void GraphicEngine::refresh()
el19tb 42:04e326dcf09b 137 {
el19tb 42:04e326dcf09b 138 lcd.refresh();
el19tb 42:04e326dcf09b 139 }
el19tb 42:04e326dcf09b 140
el19tb 42:04e326dcf09b 141 void GraphicEngine::backLightOn()
el19tb 35:db257b7bdefc 142 {
el19tb 42:04e326dcf09b 143 lcd.backLightOn();
el19tb 42:04e326dcf09b 144 }
el19tb 42:04e326dcf09b 145
el19tb 44:f02510eeb165 146 void GraphicEngine::showObj(Object *obj)
el19tb 42:04e326dcf09b 147 {
el19tb 44:f02510eeb165 148 if(obj->object.c == 'G' || obj->object.c == 'M' || obj->object.c == 'T') {
el19tb 44:f02510eeb165 149 displayLog(obj->object.x, obj->object.y, obj->object.c);
el19tb 42:04e326dcf09b 150 } else {
el19tb 44:f02510eeb165 151 displayVehicle(obj->object.x, obj->object.y, obj->object.c);
el19tb 35:db257b7bdefc 152 }
el19tb 35:db257b7bdefc 153 }
el19tb 49:6cad8b6ec5f2 154 void GraphicEngine::drawDangerZone()
el19tb 49:6cad8b6ec5f2 155 {
el19tb 49:6cad8b6ec5f2 156 lcd.drawSprite(0, 48 - 4*11, 7, 83, (int *)danger_zone);
el19tb 49:6cad8b6ec5f2 157 }
el19tb 35:db257b7bdefc 158
el19tb 42:04e326dcf09b 159 void GraphicEngine::displayVehicle(int x, int y, char c)
el19tb 35:db257b7bdefc 160 {
el19tb 42:04e326dcf09b 161 switch(c)
el19tb 35:db257b7bdefc 162 {
el19tb 44:f02510eeb165 163 case 'L':
el19tb 46:e39abe665271 164 lcd.drawSprite(x, y, 4, 12, (int *)left_racer);
el19tb 42:04e326dcf09b 165 break;
el19tb 44:f02510eeb165 166 case 'R' :
el19tb 46:e39abe665271 167 lcd.drawSprite(x, y, 4, 12, (int *)right_racer);
el19tb 42:04e326dcf09b 168 break;
el19tb 44:f02510eeb165 169 case 'B':
el19tb 46:e39abe665271 170 lcd.drawSprite(x, y, 4, 16, (int *)bus);
el19tb 35:db257b7bdefc 171 break;
el19tb 44:f02510eeb165 172 case 'N':
el19tb 46:e39abe665271 173 lcd.drawSprite(x, y, 4, 10, (int *)right_normal);
el19tb 42:04e326dcf09b 174 break;
el19tb 44:f02510eeb165 175 case 'X':
el19tb 46:e39abe665271 176 lcd.drawSprite(x, y, 4, 10, (int *)left_normal);
el19tb 42:04e326dcf09b 177 break;
el19tb 42:04e326dcf09b 178 }
el19tb 35:db257b7bdefc 179 }
el19tb 35:db257b7bdefc 180
el19tb 42:04e326dcf09b 181 void GraphicEngine::displayLog(int x, int y, char c)
el19tb 35:db257b7bdefc 182 {
el19tb 42:04e326dcf09b 183 switch(c)
el19tb 42:04e326dcf09b 184 {
el19tb 42:04e326dcf09b 185 case 'G':
el19tb 46:e39abe665271 186 lcd.drawSprite(x, y, 4, 20, (int *)log_big);
el19tb 42:04e326dcf09b 187 break;
el19tb 42:04e326dcf09b 188
el19tb 42:04e326dcf09b 189 case 'M':
el19tb 46:e39abe665271 190 lcd.drawSprite(x, y, 4, 16, (int *)medium_log);
el19tb 42:04e326dcf09b 191 break;
el19tb 42:04e326dcf09b 192
el19tb 42:04e326dcf09b 193 case 'T':
el19tb 43:2cd1cfe07770 194 lcd.drawSprite(x, y, 4, 12, (int *)turtles);
el19tb 42:04e326dcf09b 195 break;
el19tb 42:04e326dcf09b 196 }
el19tb 35:db257b7bdefc 197 }
el19tb 35:db257b7bdefc 198
el19tb 42:04e326dcf09b 199 /* TO-DO: ADD SPRITES AND SPRITE STATE */
el19tb 47:29c4796a49e5 200 void GraphicEngine::showFrog(float x, int y, int width, int height, int state)
el19tb 35:db257b7bdefc 201 {
el19tb 47:29c4796a49e5 202 switch(state)
el19tb 47:29c4796a49e5 203 {
el19tb 47:29c4796a49e5 204 case 0:
el19tb 47:29c4796a49e5 205 lcd.drawSprite(x, y, 4, 6, (int *)frog_state_up);
el19tb 47:29c4796a49e5 206 break;
el19tb 47:29c4796a49e5 207 case 1:
el19tb 47:29c4796a49e5 208 lcd.drawSprite(x, y, 4, 6, (int *)frog_state_left);
el19tb 47:29c4796a49e5 209 break;
el19tb 47:29c4796a49e5 210 case 2:
el19tb 47:29c4796a49e5 211 lcd.drawSprite(x, y, 4, 6, (int *)frog_state_right);
el19tb 47:29c4796a49e5 212 break;
el19tb 47:29c4796a49e5 213 case 3:
el19tb 47:29c4796a49e5 214 lcd.drawSprite(x, y, 4, 6, (int *)frog_state_down);
el19tb 47:29c4796a49e5 215 break;
el19tb 47:29c4796a49e5 216 }
el19tb 42:04e326dcf09b 217 }
el19tb 35:db257b7bdefc 218
el19tb 42:04e326dcf09b 219 void GraphicEngine::drawSafetyLanes()
el19tb 42:04e326dcf09b 220 {
el19tb 49:6cad8b6ec5f2 221 lcd.drawSprite(0, 48 - 4, 4, 83, (int *)safety_zone); // row 0 -> bottom
el19tb 49:6cad8b6ec5f2 222
el19tb 49:6cad8b6ec5f2 223 lcd.drawSprite(0, 48 - 4*6, 4, 83, (int *)safety_zone); // row 6 -> middle(ish)
el19tb 49:6cad8b6ec5f2 224 }
el19tb 49:6cad8b6ec5f2 225
el19tb 50:9ffeb4a10c0a 226 void GraphicEngine::drawEndPost(int x_pos)
el19tb 49:6cad8b6ec5f2 227 {
el19tb 50:9ffeb4a10c0a 228 lcd.drawSprite(x_pos, 48 - 4*11, 8, 12, (int *)goal_post);
el19tb 35:db257b7bdefc 229 }
el19tb 35:db257b7bdefc 230
el19tb 44:f02510eeb165 231 void GraphicEngine::printTest()
el19tb 44:f02510eeb165 232 {
el19tb 35:db257b7bdefc 233 lcd.printString("SQUISHED", 1, 1);
el19tb 35:db257b7bdefc 234 }
el19tb 35:db257b7bdefc 235
el19tb 44:f02510eeb165 236 void GraphicEngine::print()
el19tb 44:f02510eeb165 237 {
el19tb 35:db257b7bdefc 238 lcd.printString("DROWNED",1,1);
el19tb 35:db257b7bdefc 239 }
el19tb 43:2cd1cfe07770 240
el19tb 44:f02510eeb165 241 void GraphicEngine::printLoser()
el19tb 44:f02510eeb165 242 {
el19tb 44:f02510eeb165 243 lcd.printString("LOSER!!!!",1,1);
el19tb 44:f02510eeb165 244 }
el19tb 44:f02510eeb165 245
el19tb 50:9ffeb4a10c0a 246 void GraphicEngine::printCongrats()
el19tb 50:9ffeb4a10c0a 247 {
el19tb 50:9ffeb4a10c0a 248 lcd.printString("CONGTATS NEXT LEVEL!!!!",1,1);
el19tb 50:9ffeb4a10c0a 249 }
el19tb 50:9ffeb4a10c0a 250