ELEC2645 (2019/20) / Mbed 2 deprecated ELEC2645_Project_el19tb

Dependencies:   mbed

Committer:
el19tb
Date:
Sat May 23 03:53:33 2020 +0000
Revision:
47:29c4796a49e5
Parent:
46:e39abe665271
Child:
48:8ccfc74b60a5
added frog animation, frog states, and sprites

Who changed what in which revision?

UserRevisionLine numberNew contents of line
el19tb 37:65c9e5a65738 1 #include "Frogger.h"
el19tb 35:db257b7bdefc 2
el19tb 37:65c9e5a65738 3 // level one initiailization has already been done
el19tb 44:f02510eeb165 4 Frogger::Frogger(Frog *frog, int grid, int w, int h)
el19tb 35:db257b7bdefc 5 {
el19tb 35:db257b7bdefc 6 this->frog = frog; // one frog object per run
el19tb 35:db257b7bdefc 7
el19tb 42:04e326dcf09b 8 current_level = 1;
el19tb 37:65c9e5a65738 9 initializeParams(w, h, grid); // initialize the software parameters
el19tb 35:db257b7bdefc 10 initializeEmbeddedSystem(); // initialize the hardware paramaters
el19tb 44:f02510eeb165 11 setupLevelOne();
el19tb 35:db257b7bdefc 12 }
el19tb 35:db257b7bdefc 13
el19tb 44:f02510eeb165 14 GraphicEngine graphics;
el19tb 44:f02510eeb165 15
el19tb 37:65c9e5a65738 16 void Frogger::initializeParams(int w, int h, int grid)
el19tb 35:db257b7bdefc 17 {
el19tb 35:db257b7bdefc 18 // screen sizes
el19tb 37:65c9e5a65738 19 lcd_w = w; // width
el19tb 37:65c9e5a65738 20 lcd_h = h; // height
el19tb 47:29c4796a49e5 21 state_frog = 0 ;
el19tb 35:db257b7bdefc 22
el19tb 35:db257b7bdefc 23 // grid values
el19tb 35:db257b7bdefc 24 grid = 4; // size of game grid system
el19tb 35:db257b7bdefc 25 grid_width = 22; // size of screen width in grid units
el19tb 35:db257b7bdefc 26 }
el19tb 35:db257b7bdefc 27
el19tb 37:65c9e5a65738 28 void Frogger::initializeLevelTwo()
el19tb 37:65c9e5a65738 29 {
el19tb 44:f02510eeb165 30 setupLevelTwo();
el19tb 37:65c9e5a65738 31 }
el19tb 37:65c9e5a65738 32
el19tb 35:db257b7bdefc 33 void Frogger::initializeEmbeddedSystem()
el19tb 35:db257b7bdefc 34 {
el19tb 35:db257b7bdefc 35 //game setup
el19tb 44:f02510eeb165 36 graphics.init(); // initialize the LCD object
el19tb 44:f02510eeb165 37 graphics.contrast(); // set the contrast to 0.4
el19tb 44:f02510eeb165 38 graphics.backLightOn(); // turn on the backlight
el19tb 42:04e326dcf09b 39
el19tb 42:04e326dcf09b 40 gamepad.init(); // initialize the actual embedded system
el19tb 42:04e326dcf09b 41 }
el19tb 42:04e326dcf09b 42
el19tb 44:f02510eeb165 43 void Frogger::setupLevelOne()
el19tb 44:f02510eeb165 44 {
el19tb 44:f02510eeb165 45 // vehicle objects
el19tb 44:f02510eeb165 46 setupLevelOneRow();
el19tb 44:f02510eeb165 47 setupLevelOneXPos();
el19tb 44:f02510eeb165 48 setupLevelOneSprites();
el19tb 44:f02510eeb165 49 setupLevelOneDir();
el19tb 44:f02510eeb165 50
el19tb 44:f02510eeb165 51 // log objects
el19tb 44:f02510eeb165 52 setupLogsLevelOne();
el19tb 44:f02510eeb165 53 }
el19tb 44:f02510eeb165 54
el19tb 44:f02510eeb165 55 // called by frogger engine
el19tb 44:f02510eeb165 56 void Frogger::setupLevelTwo()
el19tb 44:f02510eeb165 57 {
el19tb 44:f02510eeb165 58 // setup vehicles
el19tb 44:f02510eeb165 59 setupLevelTwoRows();
el19tb 44:f02510eeb165 60 setupLevelTwoXPos();
el19tb 44:f02510eeb165 61 setupLevelTwoSprites();
el19tb 44:f02510eeb165 62 setupLevelTwoDir();
el19tb 44:f02510eeb165 63
el19tb 44:f02510eeb165 64 //log objects
el19tb 44:f02510eeb165 65 setupLogLevelTwo();
el19tb 44:f02510eeb165 66 }
el19tb 44:f02510eeb165 67
el19tb 44:f02510eeb165 68 /* SETUP CALLS */
el19tb 44:f02510eeb165 69 void Frogger::setupLogsLevelOne()
el19tb 44:f02510eeb165 70 {
el19tb 44:f02510eeb165 71 setLogLevelOneXPos();
el19tb 44:f02510eeb165 72 setLogLevelOneRow();
el19tb 44:f02510eeb165 73 setLogLevelOneDir();
el19tb 44:f02510eeb165 74 setLogLevelOneSprites();
el19tb 44:f02510eeb165 75 }
el19tb 44:f02510eeb165 76
el19tb 44:f02510eeb165 77 void Frogger::setupLogLevelTwo()
el19tb 44:f02510eeb165 78 {
el19tb 44:f02510eeb165 79 setLogLevelTwoXPos();
el19tb 44:f02510eeb165 80 setLogLevelTwoRow();
el19tb 44:f02510eeb165 81 setLogLevelTwoSprite();
el19tb 44:f02510eeb165 82 setLogLevelTwoDir();
el19tb 44:f02510eeb165 83 }
el19tb 44:f02510eeb165 84 /* SETUP CALLS */
el19tb 44:f02510eeb165 85
el19tb 42:04e326dcf09b 86 //main function that starts the game
el19tb 42:04e326dcf09b 87 void Frogger::start()
el19tb 42:04e326dcf09b 88 {
el19tb 42:04e326dcf09b 89 //keep reading and processing user input
el19tb 42:04e326dcf09b 90 while(1) {
el19tb 44:f02510eeb165 91 graphics.clear(); // clear the lcd screen
el19tb 42:04e326dcf09b 92
el19tb 42:04e326dcf09b 93 runCurrentLevel(); // add velocity to level vehicles and logs
el19tb 42:04e326dcf09b 94
el19tb 44:f02510eeb165 95 graphics.drawSafetyLanes();
el19tb 47:29c4796a49e5 96
el19tb 47:29c4796a49e5 97 graphics.showFrog(frog->x, frog->y, frog->width, frog->height, state_frog); // display current position of frog
el19tb 42:04e326dcf09b 98 process_input(); // user controls the frog object
el19tb 42:04e326dcf09b 99
el19tb 44:f02510eeb165 100 checkFrogOnWater(); // check if the frog is in the water level
el19tb 42:04e326dcf09b 101
el19tb 44:f02510eeb165 102 graphics.refresh(); // refresh the lcd screen
el19tb 42:04e326dcf09b 103
el19tb 46:e39abe665271 104 wait_ms(85); // fpms
el19tb 42:04e326dcf09b 105 }
el19tb 35:db257b7bdefc 106 }
el19tb 35:db257b7bdefc 107
el19tb 47:29c4796a49e5 108 void Frogger::process_input()
el19tb 47:29c4796a49e5 109 {
el19tb 35:db257b7bdefc 110 //determine the input
el19tb 35:db257b7bdefc 111 if(gamepad.A_pressed()){
el19tb 47:29c4796a49e5 112 state_frog = 1;
el19tb 42:04e326dcf09b 113 moveFrog(1,0);
el19tb 44:f02510eeb165 114 frogOnLog = false;
el19tb 35:db257b7bdefc 115 } else if(gamepad.X_pressed()){
el19tb 47:29c4796a49e5 116 state_frog = 0;
el19tb 42:04e326dcf09b 117 moveFrog(0,-1);
el19tb 44:f02510eeb165 118 frogOnLog = false;
el19tb 35:db257b7bdefc 119 } else if(gamepad.B_pressed()){
el19tb 47:29c4796a49e5 120 state_frog = 3;
el19tb 42:04e326dcf09b 121 moveFrog(0,1);
el19tb 44:f02510eeb165 122 frogOnLog = false;
el19tb 35:db257b7bdefc 123 } else if(gamepad.Y_pressed()){
el19tb 47:29c4796a49e5 124 state_frog = 2;
el19tb 42:04e326dcf09b 125 moveFrog(-1,0);
el19tb 44:f02510eeb165 126 frogOnLog = false;
el19tb 35:db257b7bdefc 127 }
el19tb 35:db257b7bdefc 128 }
el19tb 35:db257b7bdefc 129
el19tb 47:29c4796a49e5 130 void Frogger::drawFrogStates()
el19tb 47:29c4796a49e5 131 {
el19tb 47:29c4796a49e5 132 //graphics.showFrog(frog->x, frog->y, frog->width, frog->height, state_frog); // display current position of frog
el19tb 47:29c4796a49e5 133 state_frog++;
el19tb 47:29c4796a49e5 134 graphics.showFrog(frog->x, frog->y, frog->width, frog->height, state_frog); // display current position of frog
el19tb 47:29c4796a49e5 135 state_frog--;
el19tb 47:29c4796a49e5 136 }
el19tb 47:29c4796a49e5 137
el19tb 42:04e326dcf09b 138 //moves the frog around the grid
el19tb 42:04e326dcf09b 139 void Frogger::moveFrog(int xWay, int yWay)
el19tb 35:db257b7bdefc 140 {
el19tb 42:04e326dcf09b 141 //increment the left side of the chicken by a value of the grid size
el19tb 42:04e326dcf09b 142 frog->x += xWay * 4;
el19tb 42:04e326dcf09b 143
el19tb 42:04e326dcf09b 144 //increment the top side by a value of grid sizw
el19tb 42:04e326dcf09b 145 frog->y += yWay * 4;
el19tb 35:db257b7bdefc 146
el19tb 46:e39abe665271 147 // update rect parameters
el19tb 42:04e326dcf09b 148 frog->left_side = frog->x;
el19tb 46:e39abe665271 149 frog->right_side = 6 + frog->x;
el19tb 42:04e326dcf09b 150 frog->up = frog->y;
el19tb 46:e39abe665271 151 frog->down = 4 + frog->y;
el19tb 42:04e326dcf09b 152 }
el19tb 42:04e326dcf09b 153
el19tb 44:f02510eeb165 154 /* ENGINE CALLS */
el19tb 44:f02510eeb165 155 void Frogger::runCurrentLevel()
el19tb 44:f02510eeb165 156 {
el19tb 44:f02510eeb165 157 switch (current_level)
el19tb 44:f02510eeb165 158 {
el19tb 44:f02510eeb165 159 case 1:
el19tb 44:f02510eeb165 160 runLevelOne();
el19tb 44:f02510eeb165 161 break;
el19tb 44:f02510eeb165 162 case 2:
el19tb 44:f02510eeb165 163 runLevelTwo();
el19tb 44:f02510eeb165 164 break;
el19tb 44:f02510eeb165 165 }
el19tb 44:f02510eeb165 166 }
el19tb 44:f02510eeb165 167
el19tb 44:f02510eeb165 168 void Frogger::runLevelOne()
el19tb 44:f02510eeb165 169 {
el19tb 44:f02510eeb165 170 moveVehiclesLevelOne(); // increment the x pos and display
el19tb 44:f02510eeb165 171 moveLogsLevelOne();
el19tb 44:f02510eeb165 172 checkFrogOnWater(); // check if the frog needs to jump on log/turtles
el19tb 44:f02510eeb165 173 }
el19tb 44:f02510eeb165 174
el19tb 44:f02510eeb165 175 void Frogger::runLevelTwo()
el19tb 44:f02510eeb165 176 {
el19tb 44:f02510eeb165 177 moveVehiclesLevelTwo();
el19tb 44:f02510eeb165 178 moveLogsLevelTwo();
el19tb 44:f02510eeb165 179 checkFrogOnWater(); // check if it is above a certain height
el19tb 44:f02510eeb165 180 }
el19tb 44:f02510eeb165 181 /* ENGINE CALLS */
el19tb 44:f02510eeb165 182
el19tb 44:f02510eeb165 183 /* ENGINE RUN */
el19tb 44:f02510eeb165 184 void Frogger::moveVehiclesLevelOne()
el19tb 44:f02510eeb165 185 {
el19tb 44:f02510eeb165 186 moveVehicle(car_row_one_one, 'S', 3);
el19tb 46:e39abe665271 187 moveVehicle(car_row_two_one, 'M', 2);
el19tb 44:f02510eeb165 188 moveVehicle(car_row_three_one, 'S', 3);
el19tb 44:f02510eeb165 189 moveVehicle(car_row_four_one, 'M', 4);
el19tb 44:f02510eeb165 190 }
el19tb 44:f02510eeb165 191
el19tb 44:f02510eeb165 192 void Frogger::moveVehiclesLevelTwo()
el19tb 44:f02510eeb165 193 {
el19tb 44:f02510eeb165 194 moveVehicle(car_row_one_two, 'M', 4);
el19tb 44:f02510eeb165 195 moveVehicle(car_row_two_two, 'M', 3);
el19tb 44:f02510eeb165 196 moveVehicle(car_row_three_two, 'F', 4);
el19tb 44:f02510eeb165 197 moveVehicle(car_row_four_two, 'F', 3);
el19tb 44:f02510eeb165 198 }
el19tb 44:f02510eeb165 199
el19tb 44:f02510eeb165 200 void Frogger::moveLogsLevelOne()
el19tb 44:f02510eeb165 201 {
el19tb 44:f02510eeb165 202 moveVehicle(row_one_log, 'S', 3);
el19tb 44:f02510eeb165 203 moveVehicle(row_two_log, 'M', 2);
el19tb 44:f02510eeb165 204 moveVehicle(row_three_log, 'S', 3);
el19tb 44:f02510eeb165 205 }
el19tb 44:f02510eeb165 206
el19tb 44:f02510eeb165 207 void Frogger::moveLogsLevelTwo()
el19tb 44:f02510eeb165 208 {
el19tb 44:f02510eeb165 209 moveVehicle(level_row_one, 'F', 2);
el19tb 44:f02510eeb165 210 moveVehicle(level_row_two, 'M', 2);
el19tb 44:f02510eeb165 211 moveVehicle(level_row_two, 'F', 3);
el19tb 44:f02510eeb165 212 }
el19tb 44:f02510eeb165 213 /* ENGINE RUN */
el19tb 44:f02510eeb165 214
el19tb 44:f02510eeb165 215 void Frogger::checkFrogOnWater()
el19tb 44:f02510eeb165 216 {
el19tb 44:f02510eeb165 217 if(frog->y < 84 - 4*6) // if the frog is past the safety lane
el19tb 44:f02510eeb165 218 {
el19tb 44:f02510eeb165 219 frogWater = true; // frog will die if not on turtle/log
el19tb 44:f02510eeb165 220 }
el19tb 44:f02510eeb165 221 }
el19tb 44:f02510eeb165 222
el19tb 44:f02510eeb165 223 void Frogger::moveVehicle(Object *row, char c, int array_size)
el19tb 44:f02510eeb165 224 {
el19tb 44:f02510eeb165 225 for(int i = 0; i < array_size; i++)
el19tb 44:f02510eeb165 226 {
el19tb 46:e39abe665271 227 moveIndividualObject(&row[i], c);
el19tb 46:e39abe665271 228 checkCollison(row[i]); // check if the frog has crashed/on log
el19tb 44:f02510eeb165 229 }
el19tb 44:f02510eeb165 230 }
el19tb 44:f02510eeb165 231
el19tb 46:e39abe665271 232 void Frogger::moveIndividualObject(Object *vehicle, char c){
el19tb 44:f02510eeb165 233 switch(c)
el19tb 44:f02510eeb165 234 {
el19tb 44:f02510eeb165 235 case 'S':
el19tb 44:f02510eeb165 236 vehicle->speedSlow(vehicle->object.dir);
el19tb 44:f02510eeb165 237 break;
el19tb 44:f02510eeb165 238 case 'M':
el19tb 44:f02510eeb165 239 vehicle->speedMedium(vehicle->object.dir);
el19tb 44:f02510eeb165 240 break;
el19tb 44:f02510eeb165 241 case 'F':
el19tb 44:f02510eeb165 242 vehicle->speedFast(vehicle->object.dir);
el19tb 44:f02510eeb165 243 break;
el19tb 44:f02510eeb165 244 }
el19tb 44:f02510eeb165 245
el19tb 44:f02510eeb165 246 checkOutOfBounds(vehicle);
el19tb 44:f02510eeb165 247 checkFrogOutOfBounds();
el19tb 44:f02510eeb165 248 graphics.showObj(vehicle); // display to screen
el19tb 44:f02510eeb165 249 }
el19tb 44:f02510eeb165 250 /* ENGINE RUN */
el19tb 44:f02510eeb165 251
el19tb 44:f02510eeb165 252 /* CHECKERS */
el19tb 44:f02510eeb165 253 void Frogger::checkOutOfBounds(Object *obj)
el19tb 44:f02510eeb165 254 {
el19tb 44:f02510eeb165 255 if(obj->object.x > 84 + randCars()){
el19tb 44:f02510eeb165 256 obj->object.x = -4;
el19tb 44:f02510eeb165 257
el19tb 45:e40c4f89ed7c 258 } else if(obj->object.x < (-4)) {
el19tb 44:f02510eeb165 259 obj->object.x = 84 + 4;
el19tb 44:f02510eeb165 260 }
el19tb 44:f02510eeb165 261 }
el19tb 44:f02510eeb165 262
el19tb 44:f02510eeb165 263 void Frogger::checkFrogOutOfBounds(){
el19tb 44:f02510eeb165 264 if(frog->x > 84){
el19tb 44:f02510eeb165 265 frog->reset(); // set the frog back to the start
el19tb 44:f02510eeb165 266 graphics.printLoser();
el19tb 44:f02510eeb165 267
el19tb 44:f02510eeb165 268 } else if(frog->x < 0) {
el19tb 44:f02510eeb165 269 frog->reset();
el19tb 44:f02510eeb165 270 graphics.printLoser();
el19tb 44:f02510eeb165 271 }
el19tb 44:f02510eeb165 272 }
el19tb 44:f02510eeb165 273
el19tb 44:f02510eeb165 274 /*
el19tb 44:f02510eeb165 275 void Frogger::checkCurrentLevelCollision()
el19tb 44:f02510eeb165 276 {
el19tb 44:f02510eeb165 277 switch (current_level)
el19tb 44:f02510eeb165 278 {
el19tb 44:f02510eeb165 279 case 1:
el19tb 44:f02510eeb165 280 level->levelOneCollision();
el19tb 44:f02510eeb165 281 break;
el19tb 44:f02510eeb165 282 case 2:
el19tb 44:f02510eeb165 283 level->levelTwoCollision();
el19tb 44:f02510eeb165 284 break;
el19tb 44:f02510eeb165 285 }
el19tb 44:f02510eeb165 286 }
el19tb 44:f02510eeb165 287 */
el19tb 44:f02510eeb165 288
el19tb 46:e39abe665271 289 void Frogger::checkCollison(Object object)
el19tb 44:f02510eeb165 290 {
el19tb 46:e39abe665271 291 if(!(frog->up >= object.rectangle.bottom ||
el19tb 46:e39abe665271 292 (frog->right_side <= object.rectangle.left_side) ||
el19tb 46:e39abe665271 293 (frog->down <= object.rectangle.up) ||
el19tb 46:e39abe665271 294 (frog->left_side >= object.rectangle.right_side))) {
el19tb 44:f02510eeb165 295 checkFrogAction(object);
el19tb 46:e39abe665271 296 graphics.print();
el19tb 46:e39abe665271 297
el19tb 44:f02510eeb165 298 }
el19tb 44:f02510eeb165 299 }
el19tb 44:f02510eeb165 300
el19tb 46:e39abe665271 301 void Frogger::checkFrogAction(Object log)
el19tb 44:f02510eeb165 302 {
el19tb 46:e39abe665271 303 if(frog->y < 48-4*6) {
el19tb 46:e39abe665271 304 //frogOnLog = true;
el19tb 46:e39abe665271 305 //moveFrogWithLog(log);
el19tb 46:e39abe665271 306 graphics.printTest();
el19tb 44:f02510eeb165 307
el19tb 44:f02510eeb165 308 } else { // frog is on the road
el19tb 46:e39abe665271 309 //frog->reset(); // crashed with car so reset
el19tb 44:f02510eeb165 310 }
el19tb 44:f02510eeb165 311 }
el19tb 44:f02510eeb165 312
el19tb 44:f02510eeb165 313 void Frogger::moveFrogWithLog(Object *log)
el19tb 44:f02510eeb165 314 {
el19tb 44:f02510eeb165 315 switch (log->object.dir)
el19tb 44:f02510eeb165 316 {
el19tb 44:f02510eeb165 317 case 1:
el19tb 44:f02510eeb165 318 frog->x += log->speed;
el19tb 44:f02510eeb165 319 break;
el19tb 44:f02510eeb165 320
el19tb 44:f02510eeb165 321 case 2:
el19tb 44:f02510eeb165 322 frog->x -= log->speed;
el19tb 44:f02510eeb165 323 break;
el19tb 44:f02510eeb165 324 }
el19tb 44:f02510eeb165 325 }
el19tb 44:f02510eeb165 326
el19tb 44:f02510eeb165 327 /* CHECKERS */
el19tb 44:f02510eeb165 328
el19tb 44:f02510eeb165 329 /* X POS */
el19tb 44:f02510eeb165 330 void Frogger::setupLevelOneXPos()
el19tb 44:f02510eeb165 331 {
el19tb 44:f02510eeb165 332 setupRowDistance(car_row_one_one, 20 , 3);
el19tb 44:f02510eeb165 333 setupRowDistance(car_row_two_one, 25, 2);
el19tb 44:f02510eeb165 334 setupRowDistance(car_row_three_one, 30, 3);
el19tb 44:f02510eeb165 335 setupRowDistance(car_row_four_one, 25, 4);
el19tb 44:f02510eeb165 336 }
el19tb 44:f02510eeb165 337
el19tb 44:f02510eeb165 338 void Frogger::setLogLevelOneXPos()
el19tb 42:04e326dcf09b 339 {
el19tb 44:f02510eeb165 340 setupRowDistance(row_one_log, 20, 3);
el19tb 44:f02510eeb165 341 setupRowDistance(row_two_log, 30, 2);
el19tb 44:f02510eeb165 342 setupRowDistance(row_three_log, 25, 3);
el19tb 44:f02510eeb165 343 }
el19tb 44:f02510eeb165 344
el19tb 44:f02510eeb165 345 void Frogger::setLogLevelTwoXPos()
el19tb 44:f02510eeb165 346 {
el19tb 44:f02510eeb165 347 setupRowDistance(level_row_one, 20, 2);
el19tb 44:f02510eeb165 348 setupRowDistance(level_row_two, 30, 2);
el19tb 44:f02510eeb165 349 setupRowDistance(level_row_three, 25, 3);
el19tb 44:f02510eeb165 350 }
el19tb 44:f02510eeb165 351
el19tb 44:f02510eeb165 352 void Frogger::setupLevelTwoXPos()
el19tb 44:f02510eeb165 353 {
el19tb 44:f02510eeb165 354 setupRowDistance(car_row_one_two, 15, 4);
el19tb 44:f02510eeb165 355 setupRowDistance(car_row_two_two, 20, 3);
el19tb 44:f02510eeb165 356 setupRowDistance(car_row_three_two, 25, 4);
el19tb 44:f02510eeb165 357 setupRowDistance(car_row_four_two, 25, 3);
el19tb 44:f02510eeb165 358 }
el19tb 44:f02510eeb165 359
el19tb 44:f02510eeb165 360 void Frogger::setupRowDistance(Object *objects, int dis, int array_size)
el19tb 44:f02510eeb165 361 {
el19tb 44:f02510eeb165 362 for(int i = 0; i < array_size; i++)
el19tb 44:f02510eeb165 363 {
el19tb 44:f02510eeb165 364 setDistance(&objects[i], dis);
el19tb 44:f02510eeb165 365 dis += dis; // ensure that each object has appropriate seperation
el19tb 44:f02510eeb165 366 }
el19tb 44:f02510eeb165 367 }
el19tb 44:f02510eeb165 368
el19tb 44:f02510eeb165 369 void Frogger::setDistance(Object *object, int dis)
el19tb 44:f02510eeb165 370 {
el19tb 44:f02510eeb165 371 object->setSeperation(dis);
el19tb 44:f02510eeb165 372 }
el19tb 44:f02510eeb165 373 /* X POS */
el19tb 44:f02510eeb165 374
el19tb 44:f02510eeb165 375 /* ROW */
el19tb 44:f02510eeb165 376
el19tb 44:f02510eeb165 377 void Frogger::setupLevelOneRow()
el19tb 44:f02510eeb165 378 {
el19tb 45:e40c4f89ed7c 379 setRowObjects(car_row_one_one, 2, 3);
el19tb 45:e40c4f89ed7c 380 setRowObjects(car_row_two_one, 3, 2);
el19tb 45:e40c4f89ed7c 381 setRowObjects(car_row_three_one, 4, 3);
el19tb 45:e40c4f89ed7c 382 setRowObjects(car_row_four_one, 5, 4);
el19tb 44:f02510eeb165 383 }
el19tb 44:f02510eeb165 384
el19tb 44:f02510eeb165 385 void Frogger::setupLevelTwoRows()
el19tb 44:f02510eeb165 386 {
el19tb 45:e40c4f89ed7c 387 setRowObjects(car_row_one_two, 2, 4);
el19tb 45:e40c4f89ed7c 388 setRowObjects(car_row_two_two, 3, 3);
el19tb 45:e40c4f89ed7c 389 setRowObjects(car_row_three_two, 4, 4);
el19tb 45:e40c4f89ed7c 390 setRowObjects(car_row_four_two, 5, 3);
el19tb 44:f02510eeb165 391 }
el19tb 44:f02510eeb165 392
el19tb 44:f02510eeb165 393 void Frogger::setLogLevelOneRow()
el19tb 44:f02510eeb165 394 {
el19tb 44:f02510eeb165 395 setRowObjects(row_one_log, 7, 3);
el19tb 44:f02510eeb165 396 setRowObjects(row_two_log, 8, 2);
el19tb 44:f02510eeb165 397 setRowObjects(row_three_log, 9, 3);
el19tb 44:f02510eeb165 398 }
el19tb 44:f02510eeb165 399
el19tb 44:f02510eeb165 400 void Frogger::setLogLevelTwoRow()
el19tb 44:f02510eeb165 401 {
el19tb 44:f02510eeb165 402 setRowObjects(level_row_one, 7, 2);
el19tb 44:f02510eeb165 403 setRowObjects(level_row_two, 8, 2);
el19tb 44:f02510eeb165 404 setRowObjects(level_row_three, 9, 3);
el19tb 44:f02510eeb165 405 }
el19tb 44:f02510eeb165 406
el19tb 44:f02510eeb165 407 void Frogger::setRowObjects(Object *objects, int row, int array_size)
el19tb 44:f02510eeb165 408 {
el19tb 44:f02510eeb165 409 for(int i = 0; i < array_size; i++)
el19tb 44:f02510eeb165 410 {
el19tb 44:f02510eeb165 411 createRow(&objects[i], row);
el19tb 44:f02510eeb165 412 }
el19tb 44:f02510eeb165 413 }
el19tb 44:f02510eeb165 414
el19tb 44:f02510eeb165 415 void Frogger::createRow(Object *object, int row)
el19tb 44:f02510eeb165 416 {
el19tb 44:f02510eeb165 417 object->setRow(row);
el19tb 44:f02510eeb165 418 }
el19tb 44:f02510eeb165 419 /* ROW */
el19tb 44:f02510eeb165 420
el19tb 44:f02510eeb165 421 /* SPRITES */
el19tb 44:f02510eeb165 422 void Frogger::setupLevelOneSprites()
el19tb 44:f02510eeb165 423 {
el19tb 44:f02510eeb165 424 setSpriteObjects(car_row_one_one, 'X', 3);
el19tb 44:f02510eeb165 425 setSpriteObjects(car_row_two_one, 'N', 2);
el19tb 44:f02510eeb165 426 setSpriteObjects(car_row_three_one, 'B', 3);
el19tb 44:f02510eeb165 427 setSpriteObjects(car_row_four_one, 'R', 4);
el19tb 44:f02510eeb165 428 }
el19tb 44:f02510eeb165 429
el19tb 44:f02510eeb165 430 void Frogger::setupLevelTwoSprites()
el19tb 44:f02510eeb165 431 {
el19tb 44:f02510eeb165 432 setSpriteObjects(car_row_one_two, 'R', 4);
el19tb 44:f02510eeb165 433 setSpriteObjects(car_row_two_two, 'L', 3);
el19tb 44:f02510eeb165 434 setSpriteObjects(car_row_three_two, 'N', 4);
el19tb 44:f02510eeb165 435 setSpriteObjects(car_row_four_two, 'X', 3);
el19tb 44:f02510eeb165 436 }
el19tb 44:f02510eeb165 437
el19tb 44:f02510eeb165 438 void Frogger::setLogLevelOneSprites()
el19tb 44:f02510eeb165 439 {
el19tb 44:f02510eeb165 440 setSpriteObjects(row_one_log, 'G',3);
el19tb 44:f02510eeb165 441 setSpriteObjects(row_two_log, 'M', 2);
el19tb 44:f02510eeb165 442 setSpriteObjects(row_three_log, 'G', 3);
el19tb 44:f02510eeb165 443 }
el19tb 44:f02510eeb165 444
el19tb 44:f02510eeb165 445 void Frogger::setLogLevelTwoSprite()
el19tb 44:f02510eeb165 446 {
el19tb 44:f02510eeb165 447 setSpriteObjects(level_row_one, 'G', 2);
el19tb 44:f02510eeb165 448 setSpriteObjects(level_row_two, 'M', 2);
el19tb 44:f02510eeb165 449 setSpriteObjects(level_row_three, 'G', 3);
el19tb 44:f02510eeb165 450 }
el19tb 44:f02510eeb165 451
el19tb 44:f02510eeb165 452 void Frogger::setSpriteObjects(Object *objects, char c, int array_size)
el19tb 44:f02510eeb165 453 {
el19tb 44:f02510eeb165 454 for(int i = 0; i < array_size; i++)
el19tb 44:f02510eeb165 455 {
el19tb 44:f02510eeb165 456 setSprite(&objects[i], c);
el19tb 44:f02510eeb165 457 }
el19tb 44:f02510eeb165 458 }
el19tb 44:f02510eeb165 459
el19tb 44:f02510eeb165 460 void Frogger::setSprite(Object *object, char c)
el19tb 44:f02510eeb165 461 {
el19tb 44:f02510eeb165 462 object->setSprite(c);
el19tb 44:f02510eeb165 463 }
el19tb 44:f02510eeb165 464 /* SPRITES */
el19tb 44:f02510eeb165 465
el19tb 44:f02510eeb165 466 /* DIR */
el19tb 44:f02510eeb165 467 void Frogger::setupLevelOneDir()
el19tb 44:f02510eeb165 468 {
el19tb 44:f02510eeb165 469 setDirObjects(car_row_one_one, 2, 3);
el19tb 44:f02510eeb165 470 setDirObjects(car_row_two_one, 1, 2);
el19tb 44:f02510eeb165 471 setDirObjects(car_row_three_one, 2, 3);
el19tb 44:f02510eeb165 472 setDirObjects(car_row_four_one, 1, 4);
el19tb 44:f02510eeb165 473 }
el19tb 44:f02510eeb165 474
el19tb 44:f02510eeb165 475 void Frogger::setupLevelTwoDir()
el19tb 44:f02510eeb165 476 {
el19tb 44:f02510eeb165 477 setDirObjects(car_row_one_two, 1, 4);
el19tb 44:f02510eeb165 478 setDirObjects(car_row_two_two, 2, 3);
el19tb 44:f02510eeb165 479 setDirObjects(car_row_three_two, 1, 4);
el19tb 44:f02510eeb165 480 setDirObjects(car_row_four_two, 2, 3);
el19tb 44:f02510eeb165 481 }
el19tb 44:f02510eeb165 482
el19tb 44:f02510eeb165 483 void Frogger::setLogLevelOneDir()
el19tb 44:f02510eeb165 484 {
el19tb 44:f02510eeb165 485 setDirObjects(row_one_log, 1, 3);
el19tb 44:f02510eeb165 486 setDirObjects(row_two_log, 2, 2);
el19tb 44:f02510eeb165 487 setDirObjects(row_three_log, 1, 3);
el19tb 44:f02510eeb165 488 }
el19tb 44:f02510eeb165 489
el19tb 44:f02510eeb165 490 void Frogger::setLogLevelTwoDir()
el19tb 44:f02510eeb165 491 {
el19tb 44:f02510eeb165 492 setDirObjects(level_row_one, 1, 2);
el19tb 44:f02510eeb165 493 setDirObjects(level_row_two, 2, 2);
el19tb 44:f02510eeb165 494 setDirObjects(level_row_three, 1, 3);
el19tb 44:f02510eeb165 495 }
el19tb 44:f02510eeb165 496
el19tb 44:f02510eeb165 497 void Frogger::setDirObjects(Object *objects, int dir, int array_size)
el19tb 44:f02510eeb165 498 {
el19tb 44:f02510eeb165 499 for(int i = 0; i < array_size; i++)
el19tb 44:f02510eeb165 500 {
el19tb 44:f02510eeb165 501 setDir(&objects[i], dir);
el19tb 44:f02510eeb165 502 }
el19tb 44:f02510eeb165 503 }
el19tb 44:f02510eeb165 504
el19tb 44:f02510eeb165 505 void Frogger::setDir(Object *object, int dir)
el19tb 44:f02510eeb165 506 {
el19tb 44:f02510eeb165 507 object->setDir(dir);
el19tb 44:f02510eeb165 508 }
el19tb 44:f02510eeb165 509 /* DIR */
el19tb 44:f02510eeb165 510
el19tb 44:f02510eeb165 511 // so the user does not predict when the next car is coming
el19tb 44:f02510eeb165 512 int Frogger::randCars()
el19tb 44:f02510eeb165 513 {
el19tb 44:f02510eeb165 514 return (rand() % 4) + 1;
el19tb 44:f02510eeb165 515 }
el19tb 44:f02510eeb165 516
el19tb 44:f02510eeb165 517 void Frogger::createMultipleSafetyLane()
el19tb 44:f02510eeb165 518 {
el19tb 44:f02510eeb165 519
el19tb 44:f02510eeb165 520 }
el19tb 44:f02510eeb165 521
el19tb 44:f02510eeb165 522 void Frogger::createSafetyObject()
el19tb 44:f02510eeb165 523 {
el19tb 44:f02510eeb165 524
el19tb 44:f02510eeb165 525 }
el19tb 44:f02510eeb165 526
el19tb 44:f02510eeb165 527 void Frogger::drawSafety()
el19tb 44:f02510eeb165 528 {
el19tb 44:f02510eeb165 529 //graphics.drawSafetyLanes(safety_lane);
el19tb 35:db257b7bdefc 530 }
el19tb 35:db257b7bdefc 531
el19tb 42:04e326dcf09b 532
el19tb 44:f02510eeb165 533 void Frogger::createMultipleRoadLane()
el19tb 44:f02510eeb165 534 {
el19tb 44:f02510eeb165 535
el19tb 44:f02510eeb165 536 }
el19tb 42:04e326dcf09b 537
el19tb 44:f02510eeb165 538 // every level is going to have the same amount of blocks
el19tb 44:f02510eeb165 539 void Frogger::createRoadLane()
el19tb 44:f02510eeb165 540 {
el19tb 44:f02510eeb165 541
el19tb 44:f02510eeb165 542 }
el19tb 44:f02510eeb165 543
el19tb 44:f02510eeb165 544 void Frogger::drawRoadObjects()
el19tb 44:f02510eeb165 545 {
el19tb 44:f02510eeb165 546 //graphics.getRoadObjects(roads);
el19tb 44:f02510eeb165 547 }
el19tb 44:f02510eeb165 548
el19tb 44:f02510eeb165 549 void Frogger::createMultipleLanesWater()
el19tb 44:f02510eeb165 550 {
el19tb 44:f02510eeb165 551
el19tb 44:f02510eeb165 552
el19tb 44:f02510eeb165 553 }
el19tb 44:f02510eeb165 554
el19tb 44:f02510eeb165 555 void Frogger::createWaterLane(){
el19tb 44:f02510eeb165 556
el19tb 44:f02510eeb165 557 }
el19tb 44:f02510eeb165 558
el19tb 44:f02510eeb165 559 // moves the water based on the velocity
el19tb 44:f02510eeb165 560 void Frogger::moveWater()
el19tb 44:f02510eeb165 561 {
el19tb 44:f02510eeb165 562
el19tb 44:f02510eeb165 563 //loopWater(water_lanes);
el19tb 44:f02510eeb165 564 }
el19tb 44:f02510eeb165 565
el19tb 44:f02510eeb165 566
el19tb 44:f02510eeb165 567 void Frogger::loopWater()
el19tb 44:f02510eeb165 568 {
el19tb 44:f02510eeb165 569
el19tb 44:f02510eeb165 570 }
el19tb 44:f02510eeb165 571
el19tb 44:f02510eeb165 572 void Frogger::drawWater()
el19tb 44:f02510eeb165 573 {
el19tb 44:f02510eeb165 574 // graphics.drawWater(water);
el19tb 44:f02510eeb165 575 }
el19tb 44:f02510eeb165 576
el19tb 44:f02510eeb165 577 void Frogger::drawEndPost()
el19tb 44:f02510eeb165 578 {
el19tb 44:f02510eeb165 579 //graphics.drawGoal(84/2)-grid/2, 48-grid*11);
el19tb 44:f02510eeb165 580 }
el19tb 44:f02510eeb165 581