ELEC2645 (2019/20) / Mbed 2 deprecated ELEC2645_Project_el19tb

Dependencies:   mbed

Committer:
el19tb
Date:
Fri May 15 22:47:35 2020 +0000
Revision:
27:e2af196bd9ab
Parent:
22:17ea297c19b5
made end posts for level one, made the sprite as well as position of the post

Who changed what in which revision?

UserRevisionLine numberNew contents of line
el19tb 3:648c9d5001be 1 #include "GraphicEngine.h"
el19tb 3:648c9d5001be 2
el19tb 3:648c9d5001be 3 N5110 lcd;
el19tb 3:648c9d5001be 4
el19tb 5:6e3afee7eac3 5 GraphicEngine::GraphicEngine(Chicken *chicken){
el19tb 5:6e3afee7eac3 6 this->chick = chicken;
el19tb 5:6e3afee7eac3 7 }
el19tb 5:6e3afee7eac3 8
el19tb 5:6e3afee7eac3 9 void GraphicEngine::init(){
el19tb 5:6e3afee7eac3 10 lcd.init();
el19tb 5:6e3afee7eac3 11 }
el19tb 5:6e3afee7eac3 12
el19tb 5:6e3afee7eac3 13 void GraphicEngine::showChicken(){
el19tb 5:6e3afee7eac3 14 //fill the chicken with black color
el19tb 5:6e3afee7eac3 15 lcd.drawRect(chick->x, chick->y, chick->width, chick->width, FILL_BLACK);
el19tb 5:6e3afee7eac3 16 }
el19tb 4:aae7f8d4ab78 17
el19tb 19:6d9721ffc078 18 void GraphicEngine::createSafetyLanes(const std::vector<Safety>& safety_lane)
el19tb 19:6d9721ffc078 19 {
el19tb 19:6d9721ffc078 20 Safety temp;
el19tb 19:6d9721ffc078 21 for(unsigned int i = 0; i < safety_lane.size(); i++){
el19tb 19:6d9721ffc078 22 temp.x = safety_lane[i].x;
el19tb 19:6d9721ffc078 23 temp.row = safety_lane[i].row;
el19tb 19:6d9721ffc078 24 temp.c = safety_lane[i].c;
el19tb 19:6d9721ffc078 25
el19tb 19:6d9721ffc078 26 drawIndividualSafety(temp);
el19tb 19:6d9721ffc078 27 }
el19tb 19:6d9721ffc078 28 }
el19tb 19:6d9721ffc078 29
el19tb 27:e2af196bd9ab 30 void GraphicEngine::drawGoals(int x, int y)
el19tb 27:e2af196bd9ab 31 {
el19tb 27:e2af196bd9ab 32 lcd.drawSprite(x, y, 8, 8, (int *)end_post);
el19tb 27:e2af196bd9ab 33 }
el19tb 27:e2af196bd9ab 34
el19tb 19:6d9721ffc078 35 void GraphicEngine::drawIndividualSafety(&Safety lane_obj)
el19tb 19:6d9721ffc078 36 {
el19tb 19:6d9721ffc078 37 switch(lane_obj.c)
el19tb 19:6d9721ffc078 38 {
el19tb 19:6d9721ffc078 39 case 'K':
el19tb 19:6d9721ffc078 40 lcd.drawSprite(lane_obj.x, 48 - 4*lane_obj.row, 4, 4, (int *)safety_lanes_one);
el19tb 19:6d9721ffc078 41 break;
el19tb 19:6d9721ffc078 42 case 'K':
el19tb 19:6d9721ffc078 43 lcd.drawSprite(lane_obj.x, 48 - 4*lane_obj.row, 4, 4, (int *)safety_lanes_two);
el19tb 19:6d9721ffc078 44 break;
el19tb 19:6d9721ffc078 45 }
el19tb 19:6d9721ffc078 46 }
el19tb 19:6d9721ffc078 47
el19tb 16:8a65cccd9685 48 void GraphicEngine::drawFirstSafetyBackground(int x, int row)
el19tb 16:8a65cccd9685 49 {
el19tb 16:8a65cccd9685 50 lcd.drawSprite(x, 48 - 4*row, 4, 4, (int *)safety_lanes_one);
el19tb 16:8a65cccd9685 51 }
el19tb 16:8a65cccd9685 52
el19tb 16:8a65cccd9685 53 void GraphicEngine::drawSecondSafetyBackground(int x, int row)
el19tb 16:8a65cccd9685 54 {
el19tb 16:8a65cccd9685 55 lcd.drawSprite(x, 48 - 4*row, 4, 4, (int *)safety_lane_two);
el19tb 16:8a65cccd9685 56 )
el19tb 16:8a65cccd9685 57
el19tb 15:b15bf9357cd9 58 // this is just going to be white blocks
el19tb 15:b15bf9357cd9 59 // road == '.'
el19tb 15:b15bf9357cd9 60 void GraphhicEngine::drawRoads(int row)
el19tb 15:b15bf9357cd9 61 {
el19tb 15:b15bf9357cd9 62 // draw across the screen width
el19tb 15:b15bf9357cd9 63 for(int a = 0; a < 22; a++){
el19tb 15:b15bf9357cd9 64 showEachRoad(a, row); // x pos is the value of a
el19tb 15:b15bf9357cd9 65 }
el19tb 15:b15bf9357cd9 66 }
el19tb 15:b15bf9357cd9 67
el19tb 15:b15bf9357cd9 68 void GraphicEngine::showEachRoad(int x, int row)
el19tb 15:b15bf9357cd9 69 {
el19tb 15:b15bf9357cd9 70 lcd.drawSprite(x, 48 - 4*row,4, 4, (int *)road);
el19tb 15:b15bf9357cd9 71 }
el19tb 15:b15bf9357cd9 72
el19tb 4:aae7f8d4ab78 73 void GraphicEngine::showCar(Car *car){
el19tb 5:6e3afee7eac3 74 // safety lane
el19tb 5:6e3afee7eac3 75 lcd.drawRect(0, 48 - 4, 84, 4, FILL_TRANSPARENT);
el19tb 5:6e3afee7eac3 76 lcd.drawRect(0, 48 - 4*6, 84, 4, FILL_TRANSPARENT);
el19tb 5:6e3afee7eac3 77
el19tb 15:b15bf9357cd9 78 // draw to screen0
el19tb 5:6e3afee7eac3 79 // create an enum to determine the vehicle type
el19tb 7:1dce07fd0867 80 for(int y = 0; y < 4; y++){
el19tb 5:6e3afee7eac3 81 showIndividualCar(&car[y]);
el19tb 5:6e3afee7eac3 82 }
el19tb 5:6e3afee7eac3 83 }
el19tb 5:6e3afee7eac3 84
el19tb 22:17ea297c19b5 85 void GraphicEngine::displayVehicle(int x, int row, char c)
el19tb 22:17ea297c19b5 86 {
el19tb 22:17ea297c19b5 87 switch(obj)
el19tb 22:17ea297c19b5 88 {
el19tb 22:17ea297c19b5 89 case 'L': lcd.drawSprite(x, 48 - 4y, 4, 4, (int *)left_racer);
el19tb 22:17ea297c19b5 90 break;
el19tb 22:17ea297c19b5 91 case 'R' : lcd.drawSprite(x, 48 - 4*y, 4, 4, (int *)right_racer);
el19tb 22:17ea297c19b5 92 break;
el19tb 22:17ea297c19b5 93 case 'B': lcd.drawSprite(x, 48 - 4*y, 4, 6, (int *)bus);
el19tb 22:17ea297c19b5 94 break;
el19tb 22:17ea297c19b5 95 case 'N': lcd.drawSprite(x, 48 - 4*y, 4, 4, (int *)right_normal);
el19tb 22:17ea297c19b5 96 break;
el19tb 22:17ea297c19b5 97 case 'X': lcd.drawSprite(x, 48 - 4*y, 4, 4, (int *)left_normal);
el19tb 22:17ea297c19b5 98 break;
el19tb 22:17ea297c19b5 99 case '-': lcd.drawSprite(x, 48 - 4*y, 4, 4, FILL_WHITE);
el19tb 22:17ea297c19b5 100 break;
el19tb 22:17ea297c19b5 101 }
el19tb 22:17ea297c19b5 102 }
el19tb 22:17ea297c19b5 103
el19tb 5:6e3afee7eac3 104 void GraphicEngine::showIndividualCar(Car *car){
el19tb 5:6e3afee7eac3 105 DrawCar temp_car;
el19tb 5:6e3afee7eac3 106
el19tb 5:6e3afee7eac3 107 temp_car.x = car->vehicle.x;
el19tb 5:6e3afee7eac3 108 temp_car.y = car->vehicle.y;
el19tb 5:6e3afee7eac3 109 temp_car.width = car->vehicle.width;
el19tb 5:6e3afee7eac3 110 temp_car.height = car->vehicle.height;
el19tb 5:6e3afee7eac3 111
el19tb 5:6e3afee7eac3 112 displayCar(temp_car);
el19tb 5:6e3afee7eac3 113 }
el19tb 5:6e3afee7eac3 114
el19tb 17:67dbdfcdcec2 115 void GraphicEngine::showWater(Water *water)
el19tb 17:67dbdfcdcec2 116 {
el19tb 17:67dbdfcdcec2 117 for(int i = 0; i < 22; i++)
el19tb 17:67dbdfcdcec2 118 {
el19tb 17:67dbdfcdcec2 119 showIndividualWater(&water[i]);
el19tb 17:67dbdfcdcec2 120 }
el19tb 17:67dbdfcdcec2 121 }
el19tb 17:67dbdfcdcec2 122
el19tb 17:67dbdfcdcec2 123 void GraphicEngine::showIndividualWater(Water *water)
el19tb 17:67dbdfcdcec2 124 {
el19tb 17:67dbdfcdcec2 125 // POTENTIAL BUG, add break later
el19tb 17:67dbdfcdcec2 126 switch(water->sprite){
el19tb 17:67dbdfcdcec2 127 case 'F':
el19tb 17:67dbdfcdcec2 128 displayFirstWater(water);
el19tb 17:67dbdfcdcec2 129 case 'S':
el19tb 17:67dbdfcdcec2 130 displaySecondWater(water);
el19tb 17:67dbdfcdcec2 131 case 'T':
el19tb 17:67dbdfcdcec2 132 displayThirdWater(water);
el19tb 17:67dbdfcdcec2 133 }
el19tb 17:67dbdfcdcec2 134 }
el19tb 17:67dbdfcdcec2 135
el19tb 19:6d9721ffc078 136 void GraphicEngine::drawWater(std::vector<Water> &water_lane)
el19tb 17:67dbdfcdcec2 137 {
el19tb 19:6d9721ffc078 138 Water temp;
el19tb 19:6d9721ffc078 139 for(unsigned int i = 0; i < water_lane.size(); i++)
el19tb 19:6d9721ffc078 140 {
el19tb 19:6d9721ffc078 141 temp.x = water_lane[i].x;
el19tb 19:6d9721ffc078 142 temp.row = water_lane[i].row;
el19tb 19:6d9721ffc078 143 temp.char = water_lane[i].c;
el19tb 19:6d9721ffc078 144
el19tb 19:6d9721ffc078 145 drawIndividualWater(&temp);
el19tb 19:6d9721ffc078 146 }
el19tb 17:67dbdfcdcec2 147 }
el19tb 17:67dbdfcdcec2 148
el19tb 19:6d9721ffc078 149 void GraphicEngine::showIndividualWater(Water &temp)
el19tb 17:67dbdfcdcec2 150 {
el19tb 19:6d9721ffc078 151 switch(temp.c)
el19tb 19:6d9721ffc078 152 {
el19tb 19:6d9721ffc078 153 case 'F':
el19tb 19:6d9721ffc078 154 lcd.drawSprite(temp.x,48 - 4*temp.y, 4, 4, (int *)first_water);
el19tb 19:6d9721ffc078 155 break;
el19tb 19:6d9721ffc078 156 case 'S':
el19tb 19:6d9721ffc078 157 lcd.drawSprite(temp.x,48 - 4*temp.y, 4, 4, (int *)second_water);
el19tb 19:6d9721ffc078 158 break;
el19tb 19:6d9721ffc078 159 case 'T':
el19tb 19:6d9721ffc078 160 lcd.drawSprite(temp.x, 48 - 4*temp.y, 4, 4, (int *)third_water);
el19tb 19:6d9721ffc078 161 break;
el19tb 19:6d9721ffc078 162 }
el19tb 17:67dbdfcdcec2 163 }
el19tb 13:cd6d2f999057 164
el19tb 14:6fe667ec957e 165 // water = ','
el19tb 14:6fe667ec957e 166 void GraphicEngine::drawWater(char water, int x, int y, int row, in col)
el19tb 14:6fe667ec957e 167 {
el19tb 14:6fe667ec957e 168 int rand_water = 0;
el19tb 14:6fe667ec957e 169 rand_water = (rand() % 3) + 1;
el19tb 14:6fe667ec957e 170
el19tb 15:b15bf9357cd9 171 // for design purposes the water will have different sprites
el19tb 14:6fe667ec957e 172 switch(rand_water)
el19tb 14:6fe667ec957e 173 {
el19tb 15:b15bf9357cd9 174 case 1:
el19tb 15:b15bf9357cd9 175 lcd.drawSprite(x, y, rows, cols, (int *)first_water);
el19tb 15:b15bf9357cd9 176
el19tb 15:b15bf9357cd9 177 case 2:
el19tb 15:b15bf9357cd9 178 lcd.drawSprite(x, y, rows, cols, (int *)second_water);
el19tb 15:b15bf9357cd9 179
el19tb 15:b15bf9357cd9 180 case 3:
el19tb 15:b15bf9357cd9 181 lcd.drawSprite(x, y, rows, cols, (int *)third_water);
el19tb 15:b15bf9357cd9 182 }
el19tb 14:6fe667ec957e 183 }
el19tb 13:cd6d2f999057 184
el19tb 15:b15bf9357cd9 185 void GraphicEngine::displayCar(DrawCar &size)
el19tb 15:b15bf9357cd9 186 {
el19tb 8:52794de935b2 187 lcd.drawRect(size.x, size.y, size.width, size.height, FILL_TRANSPARENT);
el19tb 5:6e3afee7eac3 188 }
el19tb 5:6e3afee7eac3 189
el19tb 18:6be4c3c94a3d 190 void GraphicEngine::getRoadObjects(const std::vector<Background>& road_lanes)
el19tb 18:6be4c3c94a3d 191 {
el19tb 18:6be4c3c94a3d 192 DrawRoad road;
el19tb 18:6be4c3c94a3d 193
el19tb 18:6be4c3c94a3d 194 for(unsigned int i = 0; i < road_lanes.size(); i++)
el19tb 18:6be4c3c94a3d 195 {
el19tb 18:6be4c3c94a3d 196 road.x = road_lanes[i].x;
el19tb 18:6be4c3c94a3d 197 road.row = road_lanes[i].row;
el19tb 18:6be4c3c94a3d 198 drawIndividualRoadObj(road);
el19tb 18:6be4c3c94a3d 199 }
el19tb 18:6be4c3c94a3d 200 }
el19tb 18:6be4c3c94a3d 201
el19tb 18:6be4c3c94a3d 202 void GraphicEngine::drawIndividualRoadObj(DrawRoad &obj)
el19tb 18:6be4c3c94a3d 203 {
el19tb 18:6be4c3c94a3d 204 lcd.drawSprite(obj.x, 48 - 4*obj.y, 4, 4, (int *) road);
el19tb 18:6be4c3c94a3d 205 }
el19tb 18:6be4c3c94a3d 206
el19tb 5:6e3afee7eac3 207 void GraphicEngine::printTest(){
el19tb 8:52794de935b2 208 lcd.printString("SQUISHED", 1, 1);
el19tb 8:52794de935b2 209 }
el19tb 8:52794de935b2 210
el19tb 8:52794de935b2 211 void GraphicEngine::print(){
el19tb 8:52794de935b2 212 lcd.printString("DROWNED",1,1);
el19tb 3:648c9d5001be 213 }
el19tb 3:648c9d5001be 214
el19tb 3:648c9d5001be 215 void GraphicEngine::contrast(){
el19tb 3:648c9d5001be 216 lcd.setContrast(0.4);
el19tb 3:648c9d5001be 217 }
el19tb 3:648c9d5001be 218
el19tb 3:648c9d5001be 219 void GraphicEngine::clear(){
el19tb 3:648c9d5001be 220 lcd.clear();
el19tb 3:648c9d5001be 221 }
el19tb 3:648c9d5001be 222
el19tb 3:648c9d5001be 223 void GraphicEngine::refresh(){
el19tb 3:648c9d5001be 224 lcd.refresh();
el19tb 3:648c9d5001be 225 }
el19tb 3:648c9d5001be 226
el19tb 3:648c9d5001be 227 void GraphicEngine::backLightOn(){
el19tb 3:648c9d5001be 228 lcd.backLightOn();
el19tb 3:648c9d5001be 229 }