ELEC2645 (2019/20) / Mbed 2 deprecated ELEC2645_Project_el19tb

Dependencies:   mbed

Committer:
el19tb
Date:
Mon May 25 02:18:57 2020 +0000
Revision:
50:9ffeb4a10c0a
Parent:
49:6cad8b6ec5f2
Child:
51:4c1f49729d88
created tutorial page, main screen, level progression, structured code, adjusted end post

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