ELEC2645 (2019/20) / Mbed 2 deprecated ELEC2645_Project_el19tb

Dependencies:   mbed

Committer:
el19tb
Date:
Sun May 24 02:30:49 2020 +0000
Revision:
49:6cad8b6ec5f2
Parent:
48:8ccfc74b60a5
Child:
50:9ffeb4a10c0a
fixed bugs regarding car reappearence, created sprites for objets, background

Who changed what in which revision?

UserRevisionLine numberNew contents of line
el19tb 35:db257b7bdefc 1 #include "GraphicEngine.h"
el19tb 35:db257b7bdefc 2
el19tb 44:f02510eeb165 3 //GraphicEngine::GraphicEngine(){}
el19tb 44:f02510eeb165 4 GraphicEngine::GraphicEngine(){
el19tb 44:f02510eeb165 5 //this->frog = frogptr;
el19tb 43:2cd1cfe07770 6
el19tb 43:2cd1cfe07770 7 }
el19tb 35:db257b7bdefc 8
el19tb 42:04e326dcf09b 9 void GraphicEngine::init()
el19tb 42:04e326dcf09b 10 {
el19tb 35:db257b7bdefc 11 lcd.init();
el19tb 35:db257b7bdefc 12 }
el19tb 35:db257b7bdefc 13
el19tb 42:04e326dcf09b 14 /* TO-DO: ADD CONTROLS FOR BACKLIGHT */
el19tb 42:04e326dcf09b 15 void GraphicEngine::contrast()
el19tb 42:04e326dcf09b 16 {
el19tb 48:8ccfc74b60a5 17 lcd.setContrast(0.45);
el19tb 42:04e326dcf09b 18 }
el19tb 42:04e326dcf09b 19
el19tb 42:04e326dcf09b 20 void GraphicEngine::clear()
el19tb 42:04e326dcf09b 21 {
el19tb 42:04e326dcf09b 22 lcd.clear();
el19tb 35:db257b7bdefc 23 }
el19tb 35:db257b7bdefc 24
el19tb 42:04e326dcf09b 25 void GraphicEngine::refresh()
el19tb 42:04e326dcf09b 26 {
el19tb 42:04e326dcf09b 27 lcd.refresh();
el19tb 42:04e326dcf09b 28 }
el19tb 42:04e326dcf09b 29
el19tb 42:04e326dcf09b 30 void GraphicEngine::backLightOn()
el19tb 35:db257b7bdefc 31 {
el19tb 42:04e326dcf09b 32 lcd.backLightOn();
el19tb 42:04e326dcf09b 33 }
el19tb 42:04e326dcf09b 34
el19tb 44:f02510eeb165 35 void GraphicEngine::showObj(Object *obj)
el19tb 42:04e326dcf09b 36 {
el19tb 44:f02510eeb165 37 if(obj->object.c == 'G' || obj->object.c == 'M' || obj->object.c == 'T') {
el19tb 44:f02510eeb165 38 displayLog(obj->object.x, obj->object.y, obj->object.c);
el19tb 42:04e326dcf09b 39 } else {
el19tb 44:f02510eeb165 40 displayVehicle(obj->object.x, obj->object.y, obj->object.c);
el19tb 35:db257b7bdefc 41 }
el19tb 35:db257b7bdefc 42 }
el19tb 49:6cad8b6ec5f2 43 void GraphicEngine::drawDangerZone()
el19tb 49:6cad8b6ec5f2 44 {
el19tb 49:6cad8b6ec5f2 45 lcd.drawSprite(0, 48 - 4*11, 7, 83, (int *)danger_zone);
el19tb 49:6cad8b6ec5f2 46 }
el19tb 35:db257b7bdefc 47
el19tb 42:04e326dcf09b 48 void GraphicEngine::displayVehicle(int x, int y, char c)
el19tb 35:db257b7bdefc 49 {
el19tb 42:04e326dcf09b 50 switch(c)
el19tb 35:db257b7bdefc 51 {
el19tb 44:f02510eeb165 52 case 'L':
el19tb 46:e39abe665271 53 lcd.drawSprite(x, y, 4, 12, (int *)left_racer);
el19tb 42:04e326dcf09b 54 break;
el19tb 44:f02510eeb165 55 case 'R' :
el19tb 46:e39abe665271 56 lcd.drawSprite(x, y, 4, 12, (int *)right_racer);
el19tb 42:04e326dcf09b 57 break;
el19tb 44:f02510eeb165 58 case 'B':
el19tb 46:e39abe665271 59 lcd.drawSprite(x, y, 4, 16, (int *)bus);
el19tb 35:db257b7bdefc 60 break;
el19tb 44:f02510eeb165 61 case 'N':
el19tb 46:e39abe665271 62 lcd.drawSprite(x, y, 4, 10, (int *)right_normal);
el19tb 42:04e326dcf09b 63 break;
el19tb 44:f02510eeb165 64 case 'X':
el19tb 46:e39abe665271 65 lcd.drawSprite(x, y, 4, 10, (int *)left_normal);
el19tb 42:04e326dcf09b 66 break;
el19tb 42:04e326dcf09b 67 }
el19tb 35:db257b7bdefc 68 }
el19tb 35:db257b7bdefc 69
el19tb 42:04e326dcf09b 70 void GraphicEngine::displayLog(int x, int y, char c)
el19tb 35:db257b7bdefc 71 {
el19tb 42:04e326dcf09b 72 switch(c)
el19tb 42:04e326dcf09b 73 {
el19tb 42:04e326dcf09b 74 case 'G':
el19tb 46:e39abe665271 75 lcd.drawSprite(x, y, 4, 20, (int *)log_big);
el19tb 42:04e326dcf09b 76 break;
el19tb 42:04e326dcf09b 77
el19tb 42:04e326dcf09b 78 case 'M':
el19tb 46:e39abe665271 79 lcd.drawSprite(x, y, 4, 16, (int *)medium_log);
el19tb 42:04e326dcf09b 80 break;
el19tb 42:04e326dcf09b 81
el19tb 42:04e326dcf09b 82 case 'T':
el19tb 43:2cd1cfe07770 83 lcd.drawSprite(x, y, 4, 12, (int *)turtles);
el19tb 42:04e326dcf09b 84 break;
el19tb 42:04e326dcf09b 85 }
el19tb 35:db257b7bdefc 86 }
el19tb 35:db257b7bdefc 87
el19tb 42:04e326dcf09b 88 /* TO-DO: ADD SPRITES AND SPRITE STATE */
el19tb 47:29c4796a49e5 89 void GraphicEngine::showFrog(float x, int y, int width, int height, int state)
el19tb 35:db257b7bdefc 90 {
el19tb 47:29c4796a49e5 91 switch(state)
el19tb 47:29c4796a49e5 92 {
el19tb 47:29c4796a49e5 93 case 0:
el19tb 47:29c4796a49e5 94 lcd.drawSprite(x, y, 4, 6, (int *)frog_state_up);
el19tb 47:29c4796a49e5 95 break;
el19tb 47:29c4796a49e5 96 case 1:
el19tb 47:29c4796a49e5 97 lcd.drawSprite(x, y, 4, 6, (int *)frog_state_left);
el19tb 47:29c4796a49e5 98 break;
el19tb 47:29c4796a49e5 99 case 2:
el19tb 47:29c4796a49e5 100 lcd.drawSprite(x, y, 4, 6, (int *)frog_state_right);
el19tb 47:29c4796a49e5 101 break;
el19tb 47:29c4796a49e5 102 case 3:
el19tb 47:29c4796a49e5 103 lcd.drawSprite(x, y, 4, 6, (int *)frog_state_down);
el19tb 47:29c4796a49e5 104 break;
el19tb 47:29c4796a49e5 105 }
el19tb 42:04e326dcf09b 106 }
el19tb 35:db257b7bdefc 107
el19tb 42:04e326dcf09b 108 void GraphicEngine::drawSafetyLanes()
el19tb 42:04e326dcf09b 109 {
el19tb 49:6cad8b6ec5f2 110 lcd.drawSprite(0, 48 - 4, 4, 83, (int *)safety_zone); // row 0 -> bottom
el19tb 49:6cad8b6ec5f2 111
el19tb 49:6cad8b6ec5f2 112 lcd.drawSprite(0, 48 - 4*6, 4, 83, (int *)safety_zone); // row 6 -> middle(ish)
el19tb 49:6cad8b6ec5f2 113 }
el19tb 49:6cad8b6ec5f2 114
el19tb 49:6cad8b6ec5f2 115 void GraphicEngine::drawEndPost()
el19tb 49:6cad8b6ec5f2 116 {
el19tb 49:6cad8b6ec5f2 117 lcd.drawSprite(24, 48 - 4*11, 8, 12, (int *)goal_post);
el19tb 35:db257b7bdefc 118 }
el19tb 35:db257b7bdefc 119
el19tb 44:f02510eeb165 120 void GraphicEngine::printTest()
el19tb 44:f02510eeb165 121 {
el19tb 35:db257b7bdefc 122 lcd.printString("SQUISHED", 1, 1);
el19tb 35:db257b7bdefc 123 }
el19tb 35:db257b7bdefc 124
el19tb 44:f02510eeb165 125 void GraphicEngine::print()
el19tb 44:f02510eeb165 126 {
el19tb 35:db257b7bdefc 127 lcd.printString("DROWNED",1,1);
el19tb 35:db257b7bdefc 128 }
el19tb 43:2cd1cfe07770 129
el19tb 44:f02510eeb165 130 void GraphicEngine::printLoser()
el19tb 44:f02510eeb165 131 {
el19tb 44:f02510eeb165 132 lcd.printString("LOSER!!!!",1,1);
el19tb 44:f02510eeb165 133 }
el19tb 44:f02510eeb165 134