ELEC2645 (2019/20) / Mbed 2 deprecated ELEC2645_Project_el19tb

Dependencies:   mbed

Committer:
el19tb
Date:
Mon May 25 17:53:05 2020 +0000
Revision:
52:1145e99264ea
Parent:
51:4c1f49729d88
Child:
53:b6bb4dab7823
added turtle states, if the frog jumps on turtles under water he is dead...

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 50:9ffeb4a10c0a 12
el19tb 50:9ffeb4a10c0a 13 intro.selection = 0;
el19tb 50:9ffeb4a10c0a 14 intro.tutorial_screens = 0;
el19tb 50:9ffeb4a10c0a 15
el19tb 50:9ffeb4a10c0a 16 introScreen = true;
el19tb 50:9ffeb4a10c0a 17 nextLevel = false;
el19tb 50:9ffeb4a10c0a 18 play_game = false;
el19tb 50:9ffeb4a10c0a 19 tutorial = false;
el19tb 50:9ffeb4a10c0a 20 settings = false;
el19tb 35:db257b7bdefc 21 }
el19tb 35:db257b7bdefc 22
el19tb 44:f02510eeb165 23 GraphicEngine graphics;
el19tb 44:f02510eeb165 24
el19tb 37:65c9e5a65738 25 void Frogger::initializeParams(int w, int h, int grid)
el19tb 35:db257b7bdefc 26 {
el19tb 35:db257b7bdefc 27 // screen sizes
el19tb 37:65c9e5a65738 28 lcd_w = w; // width
el19tb 37:65c9e5a65738 29 lcd_h = h; // height
el19tb 50:9ffeb4a10c0a 30 state_frog = 0;
el19tb 50:9ffeb4a10c0a 31 end_post = false;
el19tb 51:4c1f49729d88 32 turtle_state = 0;
el19tb 35:db257b7bdefc 33
el19tb 48:8ccfc74b60a5 34 water_level = 48- 4*6; // row 7 and up is the water level
el19tb 48:8ccfc74b60a5 35 frogDie = false;
el19tb 48:8ccfc74b60a5 36 frogOnLog = false;
el19tb 50:9ffeb4a10c0a 37 goal_post_xpos = (84/2); // generate random position for end post
el19tb 50:9ffeb4a10c0a 38 next_goal = false;
el19tb 35:db257b7bdefc 39 // grid values
el19tb 35:db257b7bdefc 40 grid = 4; // size of game grid system
el19tb 35:db257b7bdefc 41 grid_width = 22; // size of screen width in grid units
el19tb 35:db257b7bdefc 42 }
el19tb 35:db257b7bdefc 43
el19tb 37:65c9e5a65738 44 void Frogger::initializeLevelTwo()
el19tb 37:65c9e5a65738 45 {
el19tb 44:f02510eeb165 46 setupLevelTwo();
el19tb 37:65c9e5a65738 47 }
el19tb 37:65c9e5a65738 48
el19tb 35:db257b7bdefc 49 void Frogger::initializeEmbeddedSystem()
el19tb 35:db257b7bdefc 50 {
el19tb 35:db257b7bdefc 51 //game setup
el19tb 44:f02510eeb165 52 graphics.init(); // initialize the LCD object
el19tb 44:f02510eeb165 53 graphics.contrast(); // set the contrast to 0.4
el19tb 44:f02510eeb165 54 graphics.backLightOn(); // turn on the backlight
el19tb 42:04e326dcf09b 55
el19tb 42:04e326dcf09b 56 gamepad.init(); // initialize the actual embedded system
el19tb 42:04e326dcf09b 57 }
el19tb 42:04e326dcf09b 58
el19tb 44:f02510eeb165 59 void Frogger::setupLevelOne()
el19tb 44:f02510eeb165 60 {
el19tb 44:f02510eeb165 61 // vehicle objects
el19tb 44:f02510eeb165 62 setupLevelOneRow();
el19tb 44:f02510eeb165 63 setupLevelOneXPos();
el19tb 44:f02510eeb165 64 setupLevelOneSprites();
el19tb 44:f02510eeb165 65 setupLevelOneDir();
el19tb 44:f02510eeb165 66
el19tb 44:f02510eeb165 67 // log objects
el19tb 44:f02510eeb165 68 setupLogsLevelOne();
el19tb 44:f02510eeb165 69 }
el19tb 44:f02510eeb165 70
el19tb 51:4c1f49729d88 71 void Frogger::setupBonusRound()
el19tb 51:4c1f49729d88 72 {
el19tb 51:4c1f49729d88 73 // setup vehicles
el19tb 51:4c1f49729d88 74 setupLevelTwoRows();
el19tb 51:4c1f49729d88 75 setupLevelTwoXPos();
el19tb 51:4c1f49729d88 76 setupLevelTwoSprites();
el19tb 51:4c1f49729d88 77 setupLevelTwoDir();
el19tb 51:4c1f49729d88 78 }
el19tb 51:4c1f49729d88 79
el19tb 44:f02510eeb165 80 // called by frogger engine
el19tb 44:f02510eeb165 81 void Frogger::setupLevelTwo()
el19tb 44:f02510eeb165 82 {
el19tb 44:f02510eeb165 83 // setup vehicles
el19tb 44:f02510eeb165 84 setupLevelTwoRows();
el19tb 44:f02510eeb165 85 setupLevelTwoXPos();
el19tb 44:f02510eeb165 86 setupLevelTwoSprites();
el19tb 44:f02510eeb165 87 setupLevelTwoDir();
el19tb 44:f02510eeb165 88
el19tb 44:f02510eeb165 89 //log objects
el19tb 44:f02510eeb165 90 setupLogLevelTwo();
el19tb 44:f02510eeb165 91 }
el19tb 44:f02510eeb165 92
el19tb 44:f02510eeb165 93 /* SETUP CALLS */
el19tb 44:f02510eeb165 94 void Frogger::setupLogsLevelOne()
el19tb 44:f02510eeb165 95 {
el19tb 44:f02510eeb165 96 setLogLevelOneXPos();
el19tb 44:f02510eeb165 97 setLogLevelOneRow();
el19tb 44:f02510eeb165 98 setLogLevelOneDir();
el19tb 44:f02510eeb165 99 setLogLevelOneSprites();
el19tb 44:f02510eeb165 100 }
el19tb 44:f02510eeb165 101
el19tb 44:f02510eeb165 102 void Frogger::setupLogLevelTwo()
el19tb 44:f02510eeb165 103 {
el19tb 44:f02510eeb165 104 setLogLevelTwoXPos();
el19tb 44:f02510eeb165 105 setLogLevelTwoRow();
el19tb 44:f02510eeb165 106 setLogLevelTwoSprite();
el19tb 44:f02510eeb165 107 setLogLevelTwoDir();
el19tb 44:f02510eeb165 108 }
el19tb 44:f02510eeb165 109 /* SETUP CALLS */
el19tb 44:f02510eeb165 110
el19tb 42:04e326dcf09b 111 //main function that starts the game
el19tb 42:04e326dcf09b 112 void Frogger::start()
el19tb 42:04e326dcf09b 113 {
el19tb 42:04e326dcf09b 114 //keep reading and processing user input
el19tb 42:04e326dcf09b 115 while(1) {
el19tb 44:f02510eeb165 116 graphics.clear(); // clear the lcd screen
el19tb 49:6cad8b6ec5f2 117
el19tb 50:9ffeb4a10c0a 118 if(introScreen) { // shows tutorial, setting
el19tb 50:9ffeb4a10c0a 119 graphics.getPointerPos(intro.selection); // draw the initial pointer pos
el19tb 50:9ffeb4a10c0a 120 home(); // draw menu selections
el19tb 50:9ffeb4a10c0a 121 } else if (play_game) { // shows actual gameplay
el19tb 50:9ffeb4a10c0a 122 run();
el19tb 48:8ccfc74b60a5 123
el19tb 50:9ffeb4a10c0a 124 } else if(tutorial) {
el19tb 50:9ffeb4a10c0a 125 gotoPage();
el19tb 50:9ffeb4a10c0a 126
el19tb 50:9ffeb4a10c0a 127 } else if(nextLevel) {
el19tb 50:9ffeb4a10c0a 128 displayLevelIntro();
el19tb 50:9ffeb4a10c0a 129 }
el19tb 50:9ffeb4a10c0a 130
el19tb 44:f02510eeb165 131 graphics.refresh(); // refresh the lcd screen
el19tb 42:04e326dcf09b 132
el19tb 46:e39abe665271 133 wait_ms(85); // fpms
el19tb 42:04e326dcf09b 134 }
el19tb 35:db257b7bdefc 135 }
el19tb 35:db257b7bdefc 136
el19tb 50:9ffeb4a10c0a 137 void Frogger::displayLevelIntro()
el19tb 50:9ffeb4a10c0a 138 {
el19tb 50:9ffeb4a10c0a 139 graphics.clear();
el19tb 50:9ffeb4a10c0a 140 graphics.newLevel1();
el19tb 51:4c1f49729d88 141 wait_ms(1000);
el19tb 50:9ffeb4a10c0a 142 graphics.refresh(); // refresh the lcd screen
el19tb 50:9ffeb4a10c0a 143
el19tb 50:9ffeb4a10c0a 144 graphics.refresh(); // refresh the lcd screen
el19tb 50:9ffeb4a10c0a 145 graphics.clear();
el19tb 51:4c1f49729d88 146 graphics.newLevel2();
el19tb 51:4c1f49729d88 147 wait_ms(1000);
el19tb 51:4c1f49729d88 148 graphics.refresh(); // refresh the lcd screen
el19tb 51:4c1f49729d88 149
el19tb 51:4c1f49729d88 150 graphics.refresh(); // refresh the lcd screen
el19tb 51:4c1f49729d88 151 graphics.clear();
el19tb 50:9ffeb4a10c0a 152 wait_ms(1000);
el19tb 50:9ffeb4a10c0a 153 graphics.refresh(); // refresh the lcd screen
el19tb 50:9ffeb4a10c0a 154 }
el19tb 50:9ffeb4a10c0a 155
el19tb 50:9ffeb4a10c0a 156 void Frogger::run()
el19tb 50:9ffeb4a10c0a 157 {
el19tb 50:9ffeb4a10c0a 158 checkProgression();
el19tb 50:9ffeb4a10c0a 159
el19tb 50:9ffeb4a10c0a 160 drawBackGround();
el19tb 50:9ffeb4a10c0a 161
el19tb 50:9ffeb4a10c0a 162 generateLevelOneGoalPost();
el19tb 50:9ffeb4a10c0a 163
el19tb 50:9ffeb4a10c0a 164 process_input(); // user controls the frog object
el19tb 50:9ffeb4a10c0a 165
el19tb 50:9ffeb4a10c0a 166 actOnFrogPos();
el19tb 50:9ffeb4a10c0a 167
el19tb 50:9ffeb4a10c0a 168 graphics.showFrog(frog->x, frog->y, frog->width, frog->height, state_frog); // display current position of frog
el19tb 50:9ffeb4a10c0a 169 }
el19tb 50:9ffeb4a10c0a 170
el19tb 50:9ffeb4a10c0a 171 void Frogger::checkProgression()
el19tb 50:9ffeb4a10c0a 172 {
el19tb 51:4c1f49729d88 173 if((frog->y == 48 - 4*11 || frog->y == 48 - 4*10)){
el19tb 51:4c1f49729d88 174 displayLevelIntro();
el19tb 51:4c1f49729d88 175 frog->reset();
el19tb 51:4c1f49729d88 176 setupLevelTwo();
el19tb 51:4c1f49729d88 177 current_level++;
el19tb 50:9ffeb4a10c0a 178 }
el19tb 50:9ffeb4a10c0a 179 }
el19tb 50:9ffeb4a10c0a 180
el19tb 50:9ffeb4a10c0a 181 void Frogger::actOnFrogPos()
el19tb 50:9ffeb4a10c0a 182 {
el19tb 50:9ffeb4a10c0a 183 if(frog->y >= water_level)
el19tb 50:9ffeb4a10c0a 184 {
el19tb 50:9ffeb4a10c0a 185 frogDie = false;
el19tb 50:9ffeb4a10c0a 186 runCurrentLevel(); // add velocity to level vehicles and logs
el19tb 50:9ffeb4a10c0a 187
el19tb 50:9ffeb4a10c0a 188 } else {
el19tb 50:9ffeb4a10c0a 189 frogDie = true;
el19tb 50:9ffeb4a10c0a 190 runCurrentLevel(); // add velocity to level vehicles and logs
el19tb 50:9ffeb4a10c0a 191
el19tb 51:4c1f49729d88 192 if((!frogOnLog) && (frog->y != 48 - 4*11 && frog->y != 48 - 4*10) && frog->x != 42){
el19tb 50:9ffeb4a10c0a 193 frog->reset();
el19tb 50:9ffeb4a10c0a 194 }
el19tb 50:9ffeb4a10c0a 195 }
el19tb 50:9ffeb4a10c0a 196 }
el19tb 50:9ffeb4a10c0a 197
el19tb 50:9ffeb4a10c0a 198 void Frogger::home()
el19tb 50:9ffeb4a10c0a 199 {
el19tb 50:9ffeb4a10c0a 200 determineSelection();
el19tb 50:9ffeb4a10c0a 201 graphics.drawMenu();
el19tb 50:9ffeb4a10c0a 202 }
el19tb 50:9ffeb4a10c0a 203
el19tb 50:9ffeb4a10c0a 204 void Frogger::determineSelection()
el19tb 50:9ffeb4a10c0a 205 {
el19tb 50:9ffeb4a10c0a 206 if(intro.selection < 2 && gamepad.B_pressed()){
el19tb 50:9ffeb4a10c0a 207 graphics.getPointerPos(intro.selection++);
el19tb 50:9ffeb4a10c0a 208
el19tb 50:9ffeb4a10c0a 209 } else if(intro.selection > 0 && gamepad.X_pressed()){
el19tb 50:9ffeb4a10c0a 210 graphics.getPointerPos(intro.selection--);
el19tb 50:9ffeb4a10c0a 211 }
el19tb 50:9ffeb4a10c0a 212
el19tb 50:9ffeb4a10c0a 213 wait_ms(10);
el19tb 50:9ffeb4a10c0a 214
el19tb 50:9ffeb4a10c0a 215 if(gamepad.A_pressed())
el19tb 50:9ffeb4a10c0a 216 {
el19tb 50:9ffeb4a10c0a 217 gotoPage();
el19tb 50:9ffeb4a10c0a 218 }
el19tb 50:9ffeb4a10c0a 219
el19tb 50:9ffeb4a10c0a 220 }
el19tb 50:9ffeb4a10c0a 221
el19tb 50:9ffeb4a10c0a 222 void Frogger::gotoPage()
el19tb 50:9ffeb4a10c0a 223 {
el19tb 50:9ffeb4a10c0a 224 switch(intro.selection)
el19tb 50:9ffeb4a10c0a 225 {
el19tb 50:9ffeb4a10c0a 226 case 0:
el19tb 50:9ffeb4a10c0a 227 play_game = true;
el19tb 50:9ffeb4a10c0a 228 introScreen = false;
el19tb 50:9ffeb4a10c0a 229 tutorial = false;
el19tb 50:9ffeb4a10c0a 230 settings = false;
el19tb 50:9ffeb4a10c0a 231 break;
el19tb 50:9ffeb4a10c0a 232 case 1:
el19tb 50:9ffeb4a10c0a 233 displayTutorial();
el19tb 50:9ffeb4a10c0a 234 play_game = false;
el19tb 50:9ffeb4a10c0a 235 introScreen = false;
el19tb 50:9ffeb4a10c0a 236 tutorial = true;
el19tb 50:9ffeb4a10c0a 237 settings = false;
el19tb 50:9ffeb4a10c0a 238 break;
el19tb 50:9ffeb4a10c0a 239 case 2:
el19tb 50:9ffeb4a10c0a 240 //settings();
el19tb 50:9ffeb4a10c0a 241 break;
el19tb 50:9ffeb4a10c0a 242 }
el19tb 50:9ffeb4a10c0a 243 }
el19tb 50:9ffeb4a10c0a 244
el19tb 50:9ffeb4a10c0a 245 void Frogger::displayTutorial()
el19tb 50:9ffeb4a10c0a 246 {
el19tb 50:9ffeb4a10c0a 247 wait_ms(15);
el19tb 50:9ffeb4a10c0a 248
el19tb 50:9ffeb4a10c0a 249 switch(intro.tutorial_screens)
el19tb 50:9ffeb4a10c0a 250 {
el19tb 50:9ffeb4a10c0a 251 case 0:
el19tb 50:9ffeb4a10c0a 252 graphics.drawTutor1();
el19tb 50:9ffeb4a10c0a 253 gotoNextTutorialSlide();
el19tb 50:9ffeb4a10c0a 254 break;
el19tb 50:9ffeb4a10c0a 255 case 1:
el19tb 50:9ffeb4a10c0a 256 graphics.drawTutor2();
el19tb 50:9ffeb4a10c0a 257 gotoNextTutorialSlide();
el19tb 50:9ffeb4a10c0a 258 break;
el19tb 50:9ffeb4a10c0a 259 case 2:
el19tb 50:9ffeb4a10c0a 260 graphics.drawTutor3();
el19tb 50:9ffeb4a10c0a 261 gotoNextTutorialSlide();
el19tb 50:9ffeb4a10c0a 262 break;
el19tb 50:9ffeb4a10c0a 263 default:
el19tb 50:9ffeb4a10c0a 264 home();
el19tb 50:9ffeb4a10c0a 265 intro.selection = 0;
el19tb 50:9ffeb4a10c0a 266 }
el19tb 50:9ffeb4a10c0a 267 }
el19tb 50:9ffeb4a10c0a 268
el19tb 50:9ffeb4a10c0a 269 void Frogger::gotoNextTutorialSlide()
el19tb 50:9ffeb4a10c0a 270 {
el19tb 50:9ffeb4a10c0a 271 if(gamepad.A_pressed()){
el19tb 50:9ffeb4a10c0a 272 intro.tutorial_screens++;
el19tb 50:9ffeb4a10c0a 273 wait_ms(25);
el19tb 50:9ffeb4a10c0a 274 }
el19tb 50:9ffeb4a10c0a 275
el19tb 50:9ffeb4a10c0a 276 if(intro.tutorial_screens > 2){
el19tb 50:9ffeb4a10c0a 277 intro.tutorial_screens = 7;
el19tb 50:9ffeb4a10c0a 278 tutorial = false;
el19tb 50:9ffeb4a10c0a 279 }
el19tb 50:9ffeb4a10c0a 280 }
el19tb 50:9ffeb4a10c0a 281
el19tb 50:9ffeb4a10c0a 282 void Frogger::drawBackGround()
el19tb 50:9ffeb4a10c0a 283 {
el19tb 50:9ffeb4a10c0a 284 graphics.drawDangerZone();
el19tb 50:9ffeb4a10c0a 285 graphics.drawSafetyLanes();
el19tb 50:9ffeb4a10c0a 286 }
el19tb 50:9ffeb4a10c0a 287
el19tb 50:9ffeb4a10c0a 288 void Frogger::generateLevelOneGoalPost()
el19tb 50:9ffeb4a10c0a 289 {
el19tb 50:9ffeb4a10c0a 290 //setUpGoalPost();
el19tb 50:9ffeb4a10c0a 291 graphics.drawEndPost(goal_post_xpos);
el19tb 50:9ffeb4a10c0a 292 }
el19tb 50:9ffeb4a10c0a 293
el19tb 51:4c1f49729d88 294
el19tb 50:9ffeb4a10c0a 295 int Frogger::randEndPost()
el19tb 50:9ffeb4a10c0a 296 {
el19tb 50:9ffeb4a10c0a 297 return (rand() % 80) + 12;
el19tb 50:9ffeb4a10c0a 298 }
el19tb 50:9ffeb4a10c0a 299
el19tb 47:29c4796a49e5 300 void Frogger::process_input()
el19tb 47:29c4796a49e5 301 {
el19tb 35:db257b7bdefc 302 //determine the input
el19tb 35:db257b7bdefc 303 if(gamepad.A_pressed()){
el19tb 47:29c4796a49e5 304 state_frog = 1;
el19tb 42:04e326dcf09b 305 moveFrog(1,0);
el19tb 44:f02510eeb165 306 frogOnLog = false;
el19tb 35:db257b7bdefc 307 } else if(gamepad.X_pressed()){
el19tb 47:29c4796a49e5 308 state_frog = 0;
el19tb 42:04e326dcf09b 309 moveFrog(0,-1);
el19tb 44:f02510eeb165 310 frogOnLog = false;
el19tb 48:8ccfc74b60a5 311
el19tb 35:db257b7bdefc 312 } else if(gamepad.B_pressed()){
el19tb 47:29c4796a49e5 313 state_frog = 3;
el19tb 42:04e326dcf09b 314 moveFrog(0,1);
el19tb 44:f02510eeb165 315 frogOnLog = false;
el19tb 48:8ccfc74b60a5 316
el19tb 35:db257b7bdefc 317 } else if(gamepad.Y_pressed()){
el19tb 47:29c4796a49e5 318 state_frog = 2;
el19tb 42:04e326dcf09b 319 moveFrog(-1,0);
el19tb 44:f02510eeb165 320 frogOnLog = false;
el19tb 35:db257b7bdefc 321 }
el19tb 50:9ffeb4a10c0a 322
el19tb 50:9ffeb4a10c0a 323 wait_ms(10);
el19tb 35:db257b7bdefc 324 }
el19tb 35:db257b7bdefc 325
el19tb 47:29c4796a49e5 326 void Frogger::drawFrogStates()
el19tb 47:29c4796a49e5 327 {
el19tb 47:29c4796a49e5 328 //graphics.showFrog(frog->x, frog->y, frog->width, frog->height, state_frog); // display current position of frog
el19tb 47:29c4796a49e5 329 state_frog++;
el19tb 47:29c4796a49e5 330 graphics.showFrog(frog->x, frog->y, frog->width, frog->height, state_frog); // display current position of frog
el19tb 47:29c4796a49e5 331 state_frog--;
el19tb 47:29c4796a49e5 332 }
el19tb 47:29c4796a49e5 333
el19tb 42:04e326dcf09b 334 //moves the frog around the grid
el19tb 42:04e326dcf09b 335 void Frogger::moveFrog(int xWay, int yWay)
el19tb 35:db257b7bdefc 336 {
el19tb 42:04e326dcf09b 337 //increment the left side of the chicken by a value of the grid size
el19tb 42:04e326dcf09b 338 frog->x += xWay * 4;
el19tb 42:04e326dcf09b 339
el19tb 42:04e326dcf09b 340 //increment the top side by a value of grid sizw
el19tb 42:04e326dcf09b 341 frog->y += yWay * 4;
el19tb 35:db257b7bdefc 342
el19tb 46:e39abe665271 343 // update rect parameters
el19tb 42:04e326dcf09b 344 frog->left_side = frog->x;
el19tb 46:e39abe665271 345 frog->right_side = 6 + frog->x;
el19tb 42:04e326dcf09b 346 frog->up = frog->y;
el19tb 46:e39abe665271 347 frog->down = 4 + frog->y;
el19tb 42:04e326dcf09b 348 }
el19tb 42:04e326dcf09b 349
el19tb 44:f02510eeb165 350 /* ENGINE CALLS */
el19tb 44:f02510eeb165 351 void Frogger::runCurrentLevel()
el19tb 44:f02510eeb165 352 {
el19tb 44:f02510eeb165 353 switch (current_level)
el19tb 44:f02510eeb165 354 {
el19tb 44:f02510eeb165 355 case 1:
el19tb 44:f02510eeb165 356 runLevelOne();
el19tb 44:f02510eeb165 357 break;
el19tb 44:f02510eeb165 358 case 2:
el19tb 44:f02510eeb165 359 runLevelTwo();
el19tb 44:f02510eeb165 360 break;
el19tb 44:f02510eeb165 361 }
el19tb 44:f02510eeb165 362 }
el19tb 44:f02510eeb165 363
el19tb 44:f02510eeb165 364 void Frogger::runLevelOne()
el19tb 44:f02510eeb165 365 {
el19tb 44:f02510eeb165 366 moveVehiclesLevelOne(); // increment the x pos and display
el19tb 44:f02510eeb165 367 moveLogsLevelOne();
el19tb 44:f02510eeb165 368 }
el19tb 44:f02510eeb165 369
el19tb 44:f02510eeb165 370 void Frogger::runLevelTwo()
el19tb 44:f02510eeb165 371 {
el19tb 44:f02510eeb165 372 moveVehiclesLevelTwo();
el19tb 44:f02510eeb165 373 moveLogsLevelTwo();
el19tb 44:f02510eeb165 374 }
el19tb 44:f02510eeb165 375 /* ENGINE CALLS */
el19tb 44:f02510eeb165 376
el19tb 44:f02510eeb165 377 /* ENGINE RUN */
el19tb 44:f02510eeb165 378 void Frogger::moveVehiclesLevelOne()
el19tb 44:f02510eeb165 379 {
el19tb 44:f02510eeb165 380 moveVehicle(car_row_one_one, 'S', 3);
el19tb 46:e39abe665271 381 moveVehicle(car_row_two_one, 'M', 2);
el19tb 44:f02510eeb165 382 moveVehicle(car_row_three_one, 'S', 3);
el19tb 44:f02510eeb165 383 moveVehicle(car_row_four_one, 'M', 4);
el19tb 44:f02510eeb165 384 }
el19tb 44:f02510eeb165 385
el19tb 44:f02510eeb165 386 void Frogger::moveVehiclesLevelTwo()
el19tb 44:f02510eeb165 387 {
el19tb 44:f02510eeb165 388 moveVehicle(car_row_one_two, 'M', 4);
el19tb 44:f02510eeb165 389 moveVehicle(car_row_two_two, 'M', 3);
el19tb 44:f02510eeb165 390 moveVehicle(car_row_three_two, 'F', 4);
el19tb 44:f02510eeb165 391 moveVehicle(car_row_four_two, 'F', 3);
el19tb 44:f02510eeb165 392 }
el19tb 44:f02510eeb165 393
el19tb 44:f02510eeb165 394 void Frogger::moveLogsLevelOne()
el19tb 44:f02510eeb165 395 {
el19tb 44:f02510eeb165 396 moveVehicle(row_one_log, 'S', 3);
el19tb 44:f02510eeb165 397 moveVehicle(row_two_log, 'M', 2);
el19tb 44:f02510eeb165 398 moveVehicle(row_three_log, 'S', 3);
el19tb 44:f02510eeb165 399 }
el19tb 44:f02510eeb165 400
el19tb 44:f02510eeb165 401 void Frogger::moveLogsLevelTwo()
el19tb 44:f02510eeb165 402 {
el19tb 44:f02510eeb165 403 moveVehicle(level_row_one, 'F', 2);
el19tb 44:f02510eeb165 404 moveVehicle(level_row_two, 'M', 2);
el19tb 44:f02510eeb165 405 moveVehicle(level_row_two, 'F', 3);
el19tb 44:f02510eeb165 406 }
el19tb 44:f02510eeb165 407 /* ENGINE RUN */
el19tb 44:f02510eeb165 408
el19tb 44:f02510eeb165 409 void Frogger::checkFrogOnWater()
el19tb 44:f02510eeb165 410 {
el19tb 48:8ccfc74b60a5 411 if(frog->y < water_level) // if the frog is past the safety lane
el19tb 44:f02510eeb165 412 {
el19tb 50:9ffeb4a10c0a 413 frogDie = true; // frog will die if not on turtle/log
el19tb 48:8ccfc74b60a5 414 } else {
el19tb 48:8ccfc74b60a5 415 frogDie = false;
el19tb 44:f02510eeb165 416 }
el19tb 44:f02510eeb165 417 }
el19tb 44:f02510eeb165 418
el19tb 44:f02510eeb165 419 void Frogger::moveVehicle(Object *row, char c, int array_size)
el19tb 44:f02510eeb165 420 {
el19tb 44:f02510eeb165 421 for(int i = 0; i < array_size; i++)
el19tb 44:f02510eeb165 422 {
el19tb 46:e39abe665271 423 moveIndividualObject(&row[i], c);
el19tb 48:8ccfc74b60a5 424 checkCollison(row[i]); // check if the frog has crashed/on log
el19tb 52:1145e99264ea 425 checkTurtleDrown();
el19tb 52:1145e99264ea 426 }
el19tb 52:1145e99264ea 427 }
el19tb 52:1145e99264ea 428
el19tb 52:1145e99264ea 429 void Frogger::checkTurtleDrown()
el19tb 52:1145e99264ea 430 {
el19tb 52:1145e99264ea 431 // if the frog is on the row of the turtles and
el19tb 52:1145e99264ea 432 // turtles are under water, then frog is dead
el19tb 52:1145e99264ea 433 if(frog->y == (48-(4*8))
el19tb 52:1145e99264ea 434 && (turtle_state >= 3001)
el19tb 52:1145e99264ea 435 && current_level == 2){
el19tb 52:1145e99264ea 436 frog->reset(); // frog is dead
el19tb 44:f02510eeb165 437 }
el19tb 44:f02510eeb165 438 }
el19tb 44:f02510eeb165 439
el19tb 46:e39abe665271 440 void Frogger::moveIndividualObject(Object *vehicle, char c){
el19tb 44:f02510eeb165 441 switch(c)
el19tb 44:f02510eeb165 442 {
el19tb 44:f02510eeb165 443 case 'S':
el19tb 44:f02510eeb165 444 vehicle->speedSlow(vehicle->object.dir);
el19tb 44:f02510eeb165 445 break;
el19tb 44:f02510eeb165 446 case 'M':
el19tb 44:f02510eeb165 447 vehicle->speedMedium(vehicle->object.dir);
el19tb 44:f02510eeb165 448 break;
el19tb 44:f02510eeb165 449 case 'F':
el19tb 44:f02510eeb165 450 vehicle->speedFast(vehicle->object.dir);
el19tb 44:f02510eeb165 451 break;
el19tb 44:f02510eeb165 452 }
el19tb 44:f02510eeb165 453
el19tb 44:f02510eeb165 454 checkOutOfBounds(vehicle);
el19tb 48:8ccfc74b60a5 455 checkFrogOutOfBounds();
el19tb 48:8ccfc74b60a5 456
el19tb 52:1145e99264ea 457 graphics.showObj(vehicle, turtle_state); // display to screen
el19tb 52:1145e99264ea 458
el19tb 52:1145e99264ea 459 updateTurtleState();
el19tb 52:1145e99264ea 460 }
el19tb 52:1145e99264ea 461
el19tb 52:1145e99264ea 462 void Frogger::updateTurtleState()
el19tb 52:1145e99264ea 463 {
el19tb 52:1145e99264ea 464 switch(turtle_state)
el19tb 52:1145e99264ea 465 {
el19tb 52:1145e99264ea 466 case 0 ... 1000:
el19tb 52:1145e99264ea 467 turtle_state++;
el19tb 52:1145e99264ea 468 break;
el19tb 52:1145e99264ea 469 case 1001 ... 2000:
el19tb 52:1145e99264ea 470 turtle_state++;
el19tb 52:1145e99264ea 471 break;
el19tb 52:1145e99264ea 472 case 2001 ... 3000:
el19tb 52:1145e99264ea 473 turtle_state++;
el19tb 52:1145e99264ea 474 break;
el19tb 52:1145e99264ea 475 case 3001 ... 4000:
el19tb 52:1145e99264ea 476 turtle_state++;
el19tb 52:1145e99264ea 477 break;
el19tb 52:1145e99264ea 478 case 4001 ... 5000:
el19tb 52:1145e99264ea 479 turtle_state++;
el19tb 52:1145e99264ea 480 break;
el19tb 52:1145e99264ea 481 case 5001:
el19tb 52:1145e99264ea 482 turtle_state = 0;
el19tb 52:1145e99264ea 483 break;
el19tb 52:1145e99264ea 484 }
el19tb 44:f02510eeb165 485 }
el19tb 44:f02510eeb165 486 /* ENGINE RUN */
el19tb 44:f02510eeb165 487
el19tb 44:f02510eeb165 488 /* CHECKERS */
el19tb 44:f02510eeb165 489 void Frogger::checkOutOfBounds(Object *obj)
el19tb 44:f02510eeb165 490 {
el19tb 44:f02510eeb165 491 if(obj->object.x > 84 + randCars()){
el19tb 49:6cad8b6ec5f2 492 obj->object.x = -2;
el19tb 44:f02510eeb165 493
el19tb 49:6cad8b6ec5f2 494 } else if(obj->object.x < -8) {
el19tb 49:6cad8b6ec5f2 495 obj->object.x = 84;
el19tb 44:f02510eeb165 496 }
el19tb 44:f02510eeb165 497 }
el19tb 44:f02510eeb165 498
el19tb 44:f02510eeb165 499 void Frogger::checkFrogOutOfBounds(){
el19tb 44:f02510eeb165 500 if(frog->x > 84){
el19tb 44:f02510eeb165 501 frog->reset(); // set the frog back to the start
el19tb 44:f02510eeb165 502 graphics.printLoser();
el19tb 44:f02510eeb165 503
el19tb 44:f02510eeb165 504 } else if(frog->x < 0) {
el19tb 44:f02510eeb165 505 frog->reset();
el19tb 44:f02510eeb165 506 graphics.printLoser();
el19tb 44:f02510eeb165 507 }
el19tb 44:f02510eeb165 508 }
el19tb 44:f02510eeb165 509
el19tb 46:e39abe665271 510 void Frogger::checkCollison(Object object)
el19tb 44:f02510eeb165 511 {
el19tb 46:e39abe665271 512 if(!(frog->up >= object.rectangle.bottom ||
el19tb 46:e39abe665271 513 (frog->right_side <= object.rectangle.left_side) ||
el19tb 46:e39abe665271 514 (frog->down <= object.rectangle.up) ||
el19tb 46:e39abe665271 515 (frog->left_side >= object.rectangle.right_side))) {
el19tb 48:8ccfc74b60a5 516 moveFrogWithLog(object);
el19tb 50:9ffeb4a10c0a 517 checkFrogAction(object); // check to do what do with frog based on height
el19tb 48:8ccfc74b60a5 518 }
el19tb 48:8ccfc74b60a5 519 }
el19tb 46:e39abe665271 520
el19tb 48:8ccfc74b60a5 521 void Frogger::checkFrogReachedRiver()
el19tb 48:8ccfc74b60a5 522 {
el19tb 48:8ccfc74b60a5 523 if(frog->y < water_level) {
el19tb 50:9ffeb4a10c0a 524 frogDie = true; // frog can die if it touches water
el19tb 48:8ccfc74b60a5 525 } else {
el19tb 48:8ccfc74b60a5 526 frogDie = false;
el19tb 44:f02510eeb165 527 }
el19tb 44:f02510eeb165 528 }
el19tb 44:f02510eeb165 529
el19tb 46:e39abe665271 530 void Frogger::checkFrogAction(Object log)
el19tb 44:f02510eeb165 531 {
el19tb 48:8ccfc74b60a5 532 if(frog->y < water_level) { // frog is in water zone
el19tb 48:8ccfc74b60a5 533 frogOnLog = true; // moving same speed as log
el19tb 50:9ffeb4a10c0a 534 frogDie = false;
el19tb 44:f02510eeb165 535
el19tb 44:f02510eeb165 536 } else { // frog is on the road
el19tb 48:8ccfc74b60a5 537 state_frog = 0; // facing upward
el19tb 48:8ccfc74b60a5 538
el19tb 48:8ccfc74b60a5 539 frog->reset(); // crashed with car so reset
el19tb 48:8ccfc74b60a5 540
el19tb 48:8ccfc74b60a5 541 frogOnLog = false;
el19tb 48:8ccfc74b60a5 542 frogDie = false;
el19tb 44:f02510eeb165 543 }
el19tb 50:9ffeb4a10c0a 544
el19tb 50:9ffeb4a10c0a 545 if(frog->y == (48 - (4*10)))
el19tb 50:9ffeb4a10c0a 546 {
el19tb 50:9ffeb4a10c0a 547 end_post = true;
el19tb 50:9ffeb4a10c0a 548 }
el19tb 44:f02510eeb165 549 }
el19tb 44:f02510eeb165 550
el19tb 48:8ccfc74b60a5 551 void Frogger::moveFrogWithLog(Object log)
el19tb 44:f02510eeb165 552 {
el19tb 50:9ffeb4a10c0a 553 switch (log.object.dir)
el19tb 50:9ffeb4a10c0a 554 {
el19tb 50:9ffeb4a10c0a 555 case 1:
el19tb 50:9ffeb4a10c0a 556 frog->x += log.speed;
el19tb 50:9ffeb4a10c0a 557 break;
el19tb 48:8ccfc74b60a5 558
el19tb 50:9ffeb4a10c0a 559 case 2:
el19tb 50:9ffeb4a10c0a 560 frog->x = frog->x - log.speed;
el19tb 50:9ffeb4a10c0a 561 break;
el19tb 50:9ffeb4a10c0a 562
el19tb 44:f02510eeb165 563 }
el19tb 44:f02510eeb165 564 }
el19tb 44:f02510eeb165 565
el19tb 44:f02510eeb165 566 /* CHECKERS */
el19tb 44:f02510eeb165 567
el19tb 44:f02510eeb165 568 /* X POS */
el19tb 44:f02510eeb165 569 void Frogger::setupLevelOneXPos()
el19tb 44:f02510eeb165 570 {
el19tb 44:f02510eeb165 571 setupRowDistance(car_row_one_one, 20 , 3);
el19tb 44:f02510eeb165 572 setupRowDistance(car_row_two_one, 25, 2);
el19tb 44:f02510eeb165 573 setupRowDistance(car_row_three_one, 30, 3);
el19tb 44:f02510eeb165 574 setupRowDistance(car_row_four_one, 25, 4);
el19tb 44:f02510eeb165 575 }
el19tb 44:f02510eeb165 576
el19tb 44:f02510eeb165 577 void Frogger::setLogLevelOneXPos()
el19tb 42:04e326dcf09b 578 {
el19tb 44:f02510eeb165 579 setupRowDistance(row_one_log, 20, 3);
el19tb 44:f02510eeb165 580 setupRowDistance(row_two_log, 30, 2);
el19tb 44:f02510eeb165 581 setupRowDistance(row_three_log, 25, 3);
el19tb 44:f02510eeb165 582 }
el19tb 44:f02510eeb165 583
el19tb 44:f02510eeb165 584 void Frogger::setLogLevelTwoXPos()
el19tb 44:f02510eeb165 585 {
el19tb 44:f02510eeb165 586 setupRowDistance(level_row_one, 20, 2);
el19tb 44:f02510eeb165 587 setupRowDistance(level_row_two, 30, 2);
el19tb 44:f02510eeb165 588 setupRowDistance(level_row_three, 25, 3);
el19tb 44:f02510eeb165 589 }
el19tb 44:f02510eeb165 590
el19tb 44:f02510eeb165 591 void Frogger::setupLevelTwoXPos()
el19tb 44:f02510eeb165 592 {
el19tb 44:f02510eeb165 593 setupRowDistance(car_row_one_two, 15, 4);
el19tb 44:f02510eeb165 594 setupRowDistance(car_row_two_two, 20, 3);
el19tb 44:f02510eeb165 595 setupRowDistance(car_row_three_two, 25, 4);
el19tb 44:f02510eeb165 596 setupRowDistance(car_row_four_two, 25, 3);
el19tb 44:f02510eeb165 597 }
el19tb 44:f02510eeb165 598
el19tb 44:f02510eeb165 599 void Frogger::setupRowDistance(Object *objects, int dis, int array_size)
el19tb 44:f02510eeb165 600 {
el19tb 44:f02510eeb165 601 for(int i = 0; i < array_size; i++)
el19tb 44:f02510eeb165 602 {
el19tb 44:f02510eeb165 603 setDistance(&objects[i], dis);
el19tb 44:f02510eeb165 604 dis += dis; // ensure that each object has appropriate seperation
el19tb 44:f02510eeb165 605 }
el19tb 44:f02510eeb165 606 }
el19tb 44:f02510eeb165 607
el19tb 44:f02510eeb165 608 void Frogger::setDistance(Object *object, int dis)
el19tb 44:f02510eeb165 609 {
el19tb 44:f02510eeb165 610 object->setSeperation(dis);
el19tb 44:f02510eeb165 611 }
el19tb 44:f02510eeb165 612 /* X POS */
el19tb 44:f02510eeb165 613
el19tb 44:f02510eeb165 614 /* ROW */
el19tb 44:f02510eeb165 615
el19tb 44:f02510eeb165 616 void Frogger::setupLevelOneRow()
el19tb 44:f02510eeb165 617 {
el19tb 45:e40c4f89ed7c 618 setRowObjects(car_row_one_one, 2, 3);
el19tb 45:e40c4f89ed7c 619 setRowObjects(car_row_two_one, 3, 2);
el19tb 45:e40c4f89ed7c 620 setRowObjects(car_row_three_one, 4, 3);
el19tb 45:e40c4f89ed7c 621 setRowObjects(car_row_four_one, 5, 4);
el19tb 44:f02510eeb165 622 }
el19tb 44:f02510eeb165 623
el19tb 44:f02510eeb165 624 void Frogger::setupLevelTwoRows()
el19tb 44:f02510eeb165 625 {
el19tb 45:e40c4f89ed7c 626 setRowObjects(car_row_one_two, 2, 4);
el19tb 45:e40c4f89ed7c 627 setRowObjects(car_row_two_two, 3, 3);
el19tb 45:e40c4f89ed7c 628 setRowObjects(car_row_three_two, 4, 4);
el19tb 45:e40c4f89ed7c 629 setRowObjects(car_row_four_two, 5, 3);
el19tb 44:f02510eeb165 630 }
el19tb 44:f02510eeb165 631
el19tb 44:f02510eeb165 632 void Frogger::setLogLevelOneRow()
el19tb 44:f02510eeb165 633 {
el19tb 44:f02510eeb165 634 setRowObjects(row_one_log, 7, 3);
el19tb 44:f02510eeb165 635 setRowObjects(row_two_log, 8, 2);
el19tb 44:f02510eeb165 636 setRowObjects(row_three_log, 9, 3);
el19tb 44:f02510eeb165 637 }
el19tb 44:f02510eeb165 638
el19tb 44:f02510eeb165 639 void Frogger::setLogLevelTwoRow()
el19tb 44:f02510eeb165 640 {
el19tb 44:f02510eeb165 641 setRowObjects(level_row_one, 7, 2);
el19tb 44:f02510eeb165 642 setRowObjects(level_row_two, 8, 2);
el19tb 44:f02510eeb165 643 setRowObjects(level_row_three, 9, 3);
el19tb 44:f02510eeb165 644 }
el19tb 44:f02510eeb165 645
el19tb 44:f02510eeb165 646 void Frogger::setRowObjects(Object *objects, int row, int array_size)
el19tb 44:f02510eeb165 647 {
el19tb 44:f02510eeb165 648 for(int i = 0; i < array_size; i++)
el19tb 44:f02510eeb165 649 {
el19tb 44:f02510eeb165 650 createRow(&objects[i], row);
el19tb 44:f02510eeb165 651 }
el19tb 44:f02510eeb165 652 }
el19tb 44:f02510eeb165 653
el19tb 44:f02510eeb165 654 void Frogger::createRow(Object *object, int row)
el19tb 44:f02510eeb165 655 {
el19tb 44:f02510eeb165 656 object->setRow(row);
el19tb 44:f02510eeb165 657 }
el19tb 44:f02510eeb165 658 /* ROW */
el19tb 44:f02510eeb165 659
el19tb 44:f02510eeb165 660 /* SPRITES */
el19tb 44:f02510eeb165 661 void Frogger::setupLevelOneSprites()
el19tb 44:f02510eeb165 662 {
el19tb 44:f02510eeb165 663 setSpriteObjects(car_row_one_one, 'X', 3);
el19tb 44:f02510eeb165 664 setSpriteObjects(car_row_two_one, 'N', 2);
el19tb 44:f02510eeb165 665 setSpriteObjects(car_row_three_one, 'B', 3);
el19tb 44:f02510eeb165 666 setSpriteObjects(car_row_four_one, 'R', 4);
el19tb 44:f02510eeb165 667 }
el19tb 44:f02510eeb165 668
el19tb 44:f02510eeb165 669 void Frogger::setupLevelTwoSprites()
el19tb 44:f02510eeb165 670 {
el19tb 44:f02510eeb165 671 setSpriteObjects(car_row_one_two, 'R', 4);
el19tb 44:f02510eeb165 672 setSpriteObjects(car_row_two_two, 'L', 3);
el19tb 44:f02510eeb165 673 setSpriteObjects(car_row_three_two, 'N', 4);
el19tb 44:f02510eeb165 674 setSpriteObjects(car_row_four_two, 'X', 3);
el19tb 44:f02510eeb165 675 }
el19tb 44:f02510eeb165 676
el19tb 44:f02510eeb165 677 void Frogger::setLogLevelOneSprites()
el19tb 44:f02510eeb165 678 {
el19tb 44:f02510eeb165 679 setSpriteObjects(row_one_log, 'G',3);
el19tb 44:f02510eeb165 680 setSpriteObjects(row_two_log, 'M', 2);
el19tb 44:f02510eeb165 681 setSpriteObjects(row_three_log, 'G', 3);
el19tb 44:f02510eeb165 682 }
el19tb 44:f02510eeb165 683
el19tb 44:f02510eeb165 684 void Frogger::setLogLevelTwoSprite()
el19tb 44:f02510eeb165 685 {
el19tb 51:4c1f49729d88 686 setSpriteObjects(level_row_one, 'M', 2);
el19tb 51:4c1f49729d88 687 setSpriteObjects(level_row_two, 'T', 2);
el19tb 44:f02510eeb165 688 setSpriteObjects(level_row_three, 'G', 3);
el19tb 44:f02510eeb165 689 }
el19tb 44:f02510eeb165 690
el19tb 44:f02510eeb165 691 void Frogger::setSpriteObjects(Object *objects, char c, int array_size)
el19tb 44:f02510eeb165 692 {
el19tb 44:f02510eeb165 693 for(int i = 0; i < array_size; i++)
el19tb 44:f02510eeb165 694 {
el19tb 44:f02510eeb165 695 setSprite(&objects[i], c);
el19tb 44:f02510eeb165 696 }
el19tb 44:f02510eeb165 697 }
el19tb 44:f02510eeb165 698
el19tb 44:f02510eeb165 699 void Frogger::setSprite(Object *object, char c)
el19tb 44:f02510eeb165 700 {
el19tb 44:f02510eeb165 701 object->setSprite(c);
el19tb 44:f02510eeb165 702 }
el19tb 44:f02510eeb165 703 /* SPRITES */
el19tb 44:f02510eeb165 704
el19tb 44:f02510eeb165 705 /* DIR */
el19tb 44:f02510eeb165 706 void Frogger::setupLevelOneDir()
el19tb 44:f02510eeb165 707 {
el19tb 44:f02510eeb165 708 setDirObjects(car_row_one_one, 2, 3);
el19tb 44:f02510eeb165 709 setDirObjects(car_row_two_one, 1, 2);
el19tb 44:f02510eeb165 710 setDirObjects(car_row_three_one, 2, 3);
el19tb 44:f02510eeb165 711 setDirObjects(car_row_four_one, 1, 4);
el19tb 44:f02510eeb165 712 }
el19tb 44:f02510eeb165 713
el19tb 44:f02510eeb165 714 void Frogger::setupLevelTwoDir()
el19tb 44:f02510eeb165 715 {
el19tb 44:f02510eeb165 716 setDirObjects(car_row_one_two, 1, 4);
el19tb 44:f02510eeb165 717 setDirObjects(car_row_two_two, 2, 3);
el19tb 44:f02510eeb165 718 setDirObjects(car_row_three_two, 1, 4);
el19tb 44:f02510eeb165 719 setDirObjects(car_row_four_two, 2, 3);
el19tb 44:f02510eeb165 720 }
el19tb 44:f02510eeb165 721
el19tb 44:f02510eeb165 722 void Frogger::setLogLevelOneDir()
el19tb 44:f02510eeb165 723 {
el19tb 44:f02510eeb165 724 setDirObjects(row_one_log, 1, 3);
el19tb 44:f02510eeb165 725 setDirObjects(row_two_log, 2, 2);
el19tb 44:f02510eeb165 726 setDirObjects(row_three_log, 1, 3);
el19tb 44:f02510eeb165 727 }
el19tb 44:f02510eeb165 728
el19tb 44:f02510eeb165 729 void Frogger::setLogLevelTwoDir()
el19tb 44:f02510eeb165 730 {
el19tb 44:f02510eeb165 731 setDirObjects(level_row_one, 1, 2);
el19tb 44:f02510eeb165 732 setDirObjects(level_row_two, 2, 2);
el19tb 44:f02510eeb165 733 setDirObjects(level_row_three, 1, 3);
el19tb 44:f02510eeb165 734 }
el19tb 44:f02510eeb165 735
el19tb 44:f02510eeb165 736 void Frogger::setDirObjects(Object *objects, int dir, int array_size)
el19tb 44:f02510eeb165 737 {
el19tb 44:f02510eeb165 738 for(int i = 0; i < array_size; i++)
el19tb 44:f02510eeb165 739 {
el19tb 44:f02510eeb165 740 setDir(&objects[i], dir);
el19tb 44:f02510eeb165 741 }
el19tb 44:f02510eeb165 742 }
el19tb 44:f02510eeb165 743
el19tb 44:f02510eeb165 744 void Frogger::setDir(Object *object, int dir)
el19tb 44:f02510eeb165 745 {
el19tb 44:f02510eeb165 746 object->setDir(dir);
el19tb 44:f02510eeb165 747 }
el19tb 44:f02510eeb165 748 /* DIR */
el19tb 44:f02510eeb165 749
el19tb 44:f02510eeb165 750 // so the user does not predict when the next car is coming
el19tb 44:f02510eeb165 751 int Frogger::randCars()
el19tb 44:f02510eeb165 752 {
el19tb 44:f02510eeb165 753 return (rand() % 4) + 1;
el19tb 44:f02510eeb165 754 }