ELEC2645 (2019/20) / Mbed 2 deprecated ELEC2645_Project_el19tb

Dependencies:   mbed

Committer:
el19tb
Date:
Tue May 26 20:51:56 2020 +0000
Revision:
56:2797166656e0
Parent:
53:b6bb4dab7823
Child:
61:3714af9caab6
created an intro screen, made the frog die if it goes to void area in bonus

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 53:b6bb4dab7823 31 lcd.printString("Bonus",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 51:4c1f49729d88 71 lcd.printString("|Congrats! |", 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 51:4c1f49729d88 82 lcd.printString("| Loading |", 0,1);
el19tb 51:4c1f49729d88 83 lcd.printString("| |", 0,2);
el19tb 51:4c1f49729d88 84 lcd.printString("| Level 2 |", 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 56:2797166656e0 89 void GraphicEngine::introOne()
el19tb 56:2797166656e0 90 {
el19tb 56:2797166656e0 91 lcd.printString("|Project |", 0,0);
el19tb 56:2797166656e0 92 lcd.printString("| by |", 0,1);
el19tb 56:2797166656e0 93 lcd.printString("| Tarek |", 0,2);
el19tb 56:2797166656e0 94 lcd.printString("| Bessalah |", 0,3);
el19tb 56:2797166656e0 95 lcd.printString("| |", 0,4);
el19tb 56:2797166656e0 96 lcd.printString("|201344887 |", 0,5);
el19tb 56:2797166656e0 97 }
el19tb 56:2797166656e0 98
el19tb 56:2797166656e0 99 void GraphicEngine::introTwo()
el19tb 56:2797166656e0 100 {
el19tb 56:2797166656e0 101 lcd.drawSprite(20, 48-4*12, 36, 43,(int *)frogger_intro);
el19tb 56:2797166656e0 102 lcd.printString("| FROGGER! |", 0,5);
el19tb 56:2797166656e0 103
el19tb 56:2797166656e0 104 }
el19tb 56:2797166656e0 105
el19tb 56:2797166656e0 106
el19tb 42:04e326dcf09b 107 void GraphicEngine::init()
el19tb 42:04e326dcf09b 108 {
el19tb 35:db257b7bdefc 109 lcd.init();
el19tb 35:db257b7bdefc 110 }
el19tb 35:db257b7bdefc 111
el19tb 42:04e326dcf09b 112 /* TO-DO: ADD CONTROLS FOR BACKLIGHT */
el19tb 42:04e326dcf09b 113 void GraphicEngine::contrast()
el19tb 42:04e326dcf09b 114 {
el19tb 48:8ccfc74b60a5 115 lcd.setContrast(0.45);
el19tb 42:04e326dcf09b 116 }
el19tb 42:04e326dcf09b 117
el19tb 42:04e326dcf09b 118 void GraphicEngine::clear()
el19tb 42:04e326dcf09b 119 {
el19tb 42:04e326dcf09b 120 lcd.clear();
el19tb 35:db257b7bdefc 121 }
el19tb 35:db257b7bdefc 122
el19tb 42:04e326dcf09b 123 void GraphicEngine::refresh()
el19tb 42:04e326dcf09b 124 {
el19tb 42:04e326dcf09b 125 lcd.refresh();
el19tb 42:04e326dcf09b 126 }
el19tb 42:04e326dcf09b 127
el19tb 42:04e326dcf09b 128 void GraphicEngine::backLightOn()
el19tb 35:db257b7bdefc 129 {
el19tb 42:04e326dcf09b 130 lcd.backLightOn();
el19tb 42:04e326dcf09b 131 }
el19tb 42:04e326dcf09b 132
el19tb 52:1145e99264ea 133 void GraphicEngine::showObj(Object *obj, int turtles_state)
el19tb 42:04e326dcf09b 134 {
el19tb 52:1145e99264ea 135 if(obj->object.c == 'G' || obj->object.c == 'M') {
el19tb 44:f02510eeb165 136 displayLog(obj->object.x, obj->object.y, obj->object.c);
el19tb 52:1145e99264ea 137 } else if(obj->object.c == 'T') {
el19tb 52:1145e99264ea 138 displayTurtles(obj->object.x, obj->object.y, obj->object.c, turtles_state);
el19tb 53:b6bb4dab7823 139 } else if(obj->object.c == 'S') {
el19tb 53:b6bb4dab7823 140 displayBonusObjects(obj->object.x, obj->object.y, obj->object.c);
el19tb 42:04e326dcf09b 141 } else {
el19tb 44:f02510eeb165 142 displayVehicle(obj->object.x, obj->object.y, obj->object.c);
el19tb 52:1145e99264ea 143 }
el19tb 35:db257b7bdefc 144 }
el19tb 52:1145e99264ea 145
el19tb 53:b6bb4dab7823 146 void GraphicEngine::displayBonusObjects(int x, int y, char c)
el19tb 53:b6bb4dab7823 147 {
el19tb 53:b6bb4dab7823 148 lcd.drawSprite(x, y, 4, 12, (int *)star);
el19tb 53:b6bb4dab7823 149 }
el19tb 53:b6bb4dab7823 150
el19tb 49:6cad8b6ec5f2 151 void GraphicEngine::drawDangerZone()
el19tb 49:6cad8b6ec5f2 152 {
el19tb 49:6cad8b6ec5f2 153 lcd.drawSprite(0, 48 - 4*11, 7, 83, (int *)danger_zone);
el19tb 49:6cad8b6ec5f2 154 }
el19tb 35:db257b7bdefc 155
el19tb 53:b6bb4dab7823 156 void GraphicEngine::drawVoidBackGround()
el19tb 53:b6bb4dab7823 157 {
el19tb 53:b6bb4dab7823 158 lcd.drawRect(0, 0, 35, 48, FILL_BLACK);
el19tb 53:b6bb4dab7823 159 lcd.drawRect(55, 0, 35, 48, FILL_BLACK);
el19tb 53:b6bb4dab7823 160 }
el19tb 53:b6bb4dab7823 161
el19tb 52:1145e99264ea 162 void GraphicEngine::displayTurtles(int x, int y, char c, int turtle_sate){
el19tb 52:1145e99264ea 163 switch(turtle_sate)
el19tb 52:1145e99264ea 164 {
el19tb 52:1145e99264ea 165 case 0 ... 1000:
el19tb 52:1145e99264ea 166 lcd.drawSprite(x, y, 4, 20, (int *)turtles_state_one);
el19tb 52:1145e99264ea 167 break;
el19tb 52:1145e99264ea 168 case 1001 ... 2000:
el19tb 52:1145e99264ea 169 lcd.drawSprite(x, y, 4, 20, (int *)turtles_state_one);
el19tb 52:1145e99264ea 170 break;
el19tb 52:1145e99264ea 171 case 2001 ... 3000:
el19tb 52:1145e99264ea 172 lcd.drawSprite(x, y, 4, 20, (int *)turtles_state_two);
el19tb 52:1145e99264ea 173 break;
el19tb 52:1145e99264ea 174 case 3001 ... 4000:
el19tb 52:1145e99264ea 175 lcd.drawSprite(x, y, 4, 20, (int *)turtles_state_two);
el19tb 52:1145e99264ea 176 break;
el19tb 52:1145e99264ea 177 case 4001 ... 5000:
el19tb 52:1145e99264ea 178 lcd.drawSprite(x, y, 4, 20, (int *)turtles_state_three);
el19tb 52:1145e99264ea 179 break;
el19tb 52:1145e99264ea 180 }
el19tb 52:1145e99264ea 181 }
el19tb 52:1145e99264ea 182
el19tb 42:04e326dcf09b 183 void GraphicEngine::displayVehicle(int x, int y, char c)
el19tb 35:db257b7bdefc 184 {
el19tb 42:04e326dcf09b 185 switch(c)
el19tb 35:db257b7bdefc 186 {
el19tb 44:f02510eeb165 187 case 'L':
el19tb 46:e39abe665271 188 lcd.drawSprite(x, y, 4, 12, (int *)left_racer);
el19tb 42:04e326dcf09b 189 break;
el19tb 44:f02510eeb165 190 case 'R' :
el19tb 46:e39abe665271 191 lcd.drawSprite(x, y, 4, 12, (int *)right_racer);
el19tb 42:04e326dcf09b 192 break;
el19tb 44:f02510eeb165 193 case 'B':
el19tb 46:e39abe665271 194 lcd.drawSprite(x, y, 4, 16, (int *)bus);
el19tb 35:db257b7bdefc 195 break;
el19tb 44:f02510eeb165 196 case 'N':
el19tb 46:e39abe665271 197 lcd.drawSprite(x, y, 4, 10, (int *)right_normal);
el19tb 42:04e326dcf09b 198 break;
el19tb 44:f02510eeb165 199 case 'X':
el19tb 46:e39abe665271 200 lcd.drawSprite(x, y, 4, 10, (int *)left_normal);
el19tb 42:04e326dcf09b 201 break;
el19tb 42:04e326dcf09b 202 }
el19tb 35:db257b7bdefc 203 }
el19tb 35:db257b7bdefc 204
el19tb 42:04e326dcf09b 205 void GraphicEngine::displayLog(int x, int y, char c)
el19tb 35:db257b7bdefc 206 {
el19tb 42:04e326dcf09b 207 switch(c)
el19tb 42:04e326dcf09b 208 {
el19tb 42:04e326dcf09b 209 case 'G':
el19tb 46:e39abe665271 210 lcd.drawSprite(x, y, 4, 20, (int *)log_big);
el19tb 42:04e326dcf09b 211 break;
el19tb 42:04e326dcf09b 212
el19tb 42:04e326dcf09b 213 case 'M':
el19tb 46:e39abe665271 214 lcd.drawSprite(x, y, 4, 16, (int *)medium_log);
el19tb 42:04e326dcf09b 215 break;
el19tb 42:04e326dcf09b 216 }
el19tb 35:db257b7bdefc 217 }
el19tb 35:db257b7bdefc 218
el19tb 42:04e326dcf09b 219 /* TO-DO: ADD SPRITES AND SPRITE STATE */
el19tb 47:29c4796a49e5 220 void GraphicEngine::showFrog(float x, int y, int width, int height, int state)
el19tb 35:db257b7bdefc 221 {
el19tb 47:29c4796a49e5 222 switch(state)
el19tb 47:29c4796a49e5 223 {
el19tb 47:29c4796a49e5 224 case 0:
el19tb 47:29c4796a49e5 225 lcd.drawSprite(x, y, 4, 6, (int *)frog_state_up);
el19tb 47:29c4796a49e5 226 break;
el19tb 52:1145e99264ea 227 case 1:
el19tb 47:29c4796a49e5 228 lcd.drawSprite(x, y, 4, 6, (int *)frog_state_left);
el19tb 47:29c4796a49e5 229 break;
el19tb 47:29c4796a49e5 230 case 2:
el19tb 47:29c4796a49e5 231 lcd.drawSprite(x, y, 4, 6, (int *)frog_state_right);
el19tb 47:29c4796a49e5 232 break;
el19tb 47:29c4796a49e5 233 case 3:
el19tb 47:29c4796a49e5 234 lcd.drawSprite(x, y, 4, 6, (int *)frog_state_down);
el19tb 47:29c4796a49e5 235 break;
el19tb 47:29c4796a49e5 236 }
el19tb 42:04e326dcf09b 237 }
el19tb 35:db257b7bdefc 238
el19tb 42:04e326dcf09b 239 void GraphicEngine::drawSafetyLanes()
el19tb 42:04e326dcf09b 240 {
el19tb 49:6cad8b6ec5f2 241 lcd.drawSprite(0, 48 - 4, 4, 83, (int *)safety_zone); // row 0 -> bottom
el19tb 49:6cad8b6ec5f2 242
el19tb 49:6cad8b6ec5f2 243 lcd.drawSprite(0, 48 - 4*6, 4, 83, (int *)safety_zone); // row 6 -> middle(ish)
el19tb 49:6cad8b6ec5f2 244 }
el19tb 49:6cad8b6ec5f2 245
el19tb 50:9ffeb4a10c0a 246 void GraphicEngine::drawEndPost(int x_pos)
el19tb 49:6cad8b6ec5f2 247 {
el19tb 53:b6bb4dab7823 248 lcd.drawSprite(x_pos, 48 - 4*11, 8, 18, (int *)goal_post);
el19tb 35:db257b7bdefc 249 }
el19tb 35:db257b7bdefc 250
el19tb 44:f02510eeb165 251 void GraphicEngine::printTest()
el19tb 44:f02510eeb165 252 {
el19tb 35:db257b7bdefc 253 lcd.printString("SQUISHED", 1, 1);
el19tb 35:db257b7bdefc 254 }
el19tb 35:db257b7bdefc 255
el19tb 44:f02510eeb165 256 void GraphicEngine::print()
el19tb 44:f02510eeb165 257 {
el19tb 35:db257b7bdefc 258 lcd.printString("DROWNED",1,1);
el19tb 35:db257b7bdefc 259 }
el19tb 43:2cd1cfe07770 260
el19tb 44:f02510eeb165 261 void GraphicEngine::printLoser()
el19tb 44:f02510eeb165 262 {
el19tb 44:f02510eeb165 263 lcd.printString("LOSER!!!!",1,1);
el19tb 44:f02510eeb165 264 }
el19tb 44:f02510eeb165 265
el19tb 50:9ffeb4a10c0a 266 void GraphicEngine::printCongrats()
el19tb 50:9ffeb4a10c0a 267 {
el19tb 53:b6bb4dab7823 268 lcd.printString("CONGTATS NEXT LEVEL!!!!",1,1);
el19tb 52:1145e99264ea 269 }