Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed
Frogger/Frogger.cpp@37:65c9e5a65738, 2020-05-17 (annotated)
- Committer:
- el19tb
- Date:
- Sun May 17 23:20:23 2020 +0000
- Revision:
- 37:65c9e5a65738
- Parent:
- 35:db257b7bdefc
- Child:
- 41:6267c66953ca
fadded global variables, changed construction of the engine, made the engine more structure
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
el19tb | 37:65c9e5a65738 | 1 | #include "Frogger.h" |
el19tb | 35:db257b7bdefc | 2 | #include "Menu.h" |
el19tb | 35:db257b7bdefc | 3 | #include "GraphicEngine.h" |
el19tb | 35:db257b7bdefc | 4 | #include <vector> |
el19tb | 35:db257b7bdefc | 5 | #include <stdio.h> |
el19tb | 35:db257b7bdefc | 6 | #include <cstddef> |
el19tb | 35:db257b7bdefc | 7 | |
el19tb | 35:db257b7bdefc | 8 | bool frogLog = false; |
el19tb | 35:db257b7bdefc | 9 | bool frogDie = false; // whenever the frog is above safety lane in the middle |
el19tb | 35:db257b7bdefc | 10 | bool attach = false; |
el19tb | 35:db257b7bdefc | 11 | |
el19tb | 37:65c9e5a65738 | 12 | // level one initiailization has already been done |
el19tb | 37:65c9e5a65738 | 13 | Frogger::Frogger(GraphicEngine *engine, Level *levelptr, Frog *frog, int grid, int w, int h) |
el19tb | 35:db257b7bdefc | 14 | { |
el19tb | 35:db257b7bdefc | 15 | this->graphics = engine; // get the renderer in place |
el19tb | 37:65c9e5a65738 | 16 | this->level = levelptr; // one level object per engine |
el19tb | 35:db257b7bdefc | 17 | this->frog = frog; // one frog object per run |
el19tb | 35:db257b7bdefc | 18 | |
el19tb | 37:65c9e5a65738 | 19 | initializeParams(w, h, grid); // initialize the software parameters |
el19tb | 35:db257b7bdefc | 20 | initializeEmbeddedSystem(); // initialize the hardware paramaters |
el19tb | 35:db257b7bdefc | 21 | } |
el19tb | 35:db257b7bdefc | 22 | |
el19tb | 37:65c9e5a65738 | 23 | void Frogger::initializeParams(int w, int h, int grid) |
el19tb | 35:db257b7bdefc | 24 | { |
el19tb | 35:db257b7bdefc | 25 | // screen sizes |
el19tb | 37:65c9e5a65738 | 26 | lcd_w = w; // width |
el19tb | 37:65c9e5a65738 | 27 | lcd_h = h; // height |
el19tb | 35:db257b7bdefc | 28 | |
el19tb | 35:db257b7bdefc | 29 | // grid values |
el19tb | 35:db257b7bdefc | 30 | grid = 4; // size of game grid system |
el19tb | 35:db257b7bdefc | 31 | grid_width = 22; // size of screen width in grid units |
el19tb | 35:db257b7bdefc | 32 | } |
el19tb | 35:db257b7bdefc | 33 | |
el19tb | 37:65c9e5a65738 | 34 | void Frogger::initializeLevelTwo() |
el19tb | 37:65c9e5a65738 | 35 | { |
el19tb | 37:65c9e5a65738 | 36 | level->setupLevelTwo(); |
el19tb | 37:65c9e5a65738 | 37 | } |
el19tb | 37:65c9e5a65738 | 38 | |
el19tb | 35:db257b7bdefc | 39 | void Frogger::initializeEmbeddedSystem() |
el19tb | 35:db257b7bdefc | 40 | { |
el19tb | 35:db257b7bdefc | 41 | //game setup |
el19tb | 35:db257b7bdefc | 42 | graphics.init(); // initialize the LCD object |
el19tb | 35:db257b7bdefc | 43 | graphics.contrast(); // set the contrast to 0.4 |
el19tb | 35:db257b7bdefc | 44 | graphics.backLightOn(); // turn on the backlight |
el19tb | 35:db257b7bdefc | 45 | gamepad.init(); // initialize the actual game pad |
el19tb | 35:db257b7bdefc | 46 | } |
el19tb | 35:db257b7bdefc | 47 | |
el19tb | 37:65c9e5a65738 | 48 | void Frogger::runCurrentLevel() |
el19tb | 37:65c9e5a65738 | 49 | { |
el19tb | 37:65c9e5a65738 | 50 | switch (current_level) |
el19tb | 37:65c9e5a65738 | 51 | { |
el19tb | 37:65c9e5a65738 | 52 | case 1: |
el19tb | 37:65c9e5a65738 | 53 | level->levelOne(); |
el19tb | 37:65c9e5a65738 | 54 | break; |
el19tb | 37:65c9e5a65738 | 55 | case 2: |
el19tb | 37:65c9e5a65738 | 56 | level->levelTwo(); |
el19tb | 37:65c9e5a65738 | 57 | break; |
el19tb | 37:65c9e5a65738 | 58 | } |
el19tb | 37:65c9e5a65738 | 59 | } |
el19tb | 37:65c9e5a65738 | 60 | |
el19tb | 35:db257b7bdefc | 61 | //main function that starts the game |
el19tb | 37:65c9e5a65738 | 62 | void Frogger::start() |
el19tb | 37:65c9e5a65738 | 63 | { |
el19tb | 35:db257b7bdefc | 64 | //keep reading and processing user input |
el19tb | 35:db257b7bdefc | 65 | while(1) { |
el19tb | 37:65c9e5a65738 | 66 | graphics.clear(); // clear the lcd screen |
el19tb | 37:65c9e5a65738 | 67 | runCurrentLevel(); |
el19tb | 35:db257b7bdefc | 68 | |
el19tb | 35:db257b7bdefc | 69 | graphics.showChicken(); |
el19tb | 37:65c9e5a65738 | 70 | process_input(); // user controls the frog object |
el19tb | 35:db257b7bdefc | 71 | |
el19tb | 35:db257b7bdefc | 72 | // now when the chicken is above the safety |
el19tb | 35:db257b7bdefc | 73 | // lane we need to ensure that it only can go on logs |
el19tb | 37:65c9e5a65738 | 74 | |
el19tb | 35:db257b7bdefc | 75 | |
el19tb | 35:db257b7bdefc | 76 | graphics.refresh(); |
el19tb | 35:db257b7bdefc | 77 | wait_ms(70); |
el19tb | 35:db257b7bdefc | 78 | } |
el19tb | 35:db257b7bdefc | 79 | } |
el19tb | 35:db257b7bdefc | 80 | |
el19tb | 37:65c9e5a65738 | 81 | void checkIfFrogIsInWater() |
el19tb | 37:65c9e5a65738 | 82 | { |
el19tb | 37:65c9e5a65738 | 83 | if(chicken.y < screenH - grid*6){ |
el19tb | 37:65c9e5a65738 | 84 | frogDie = true; // frog can die if it is in water |
el19tb | 37:65c9e5a65738 | 85 | |
el19tb | 37:65c9e5a65738 | 86 | //if it is not in a log |
el19tb | 37:65c9e5a65738 | 87 | for(int x = 0; x < 2; x++){ |
el19tb | 37:65c9e5a65738 | 88 | |
el19tb | 37:65c9e5a65738 | 89 | if(attach){ |
el19tb | 37:65c9e5a65738 | 90 | |
el19tb | 37:65c9e5a65738 | 91 | |
el19tb | 37:65c9e5a65738 | 92 | } |
el19tb | 37:65c9e5a65738 | 93 | } |
el19tb | 37:65c9e5a65738 | 94 | |
el19tb | 37:65c9e5a65738 | 95 | if(!attach){ |
el19tb | 37:65c9e5a65738 | 96 | graphics.print(); |
el19tb | 37:65c9e5a65738 | 97 | } |
el19tb | 37:65c9e5a65738 | 98 | } |
el19tb | 37:65c9e5a65738 | 99 | } |
el19tb | 37:65c9e5a65738 | 100 | |
el19tb | 35:db257b7bdefc | 101 | // log intersects then frog.x = log[i].speed |
el19tb | 35:db257b7bdefc | 102 | // frog is attached function |
el19tb | 35:db257b7bdefc | 103 | // detach the frog when user goes up or down |
el19tb | 35:db257b7bdefc | 104 | // if the frog is back to the safe zone detatch also |
el19tb | 35:db257b7bdefc | 105 | // whenever the frog moves detach |
el19tb | 35:db257b7bdefc | 106 | //A moves right |
el19tb | 35:db257b7bdefc | 107 | //X moves upward |
el19tb | 35:db257b7bdefc | 108 | //B moves downward |
el19tb | 35:db257b7bdefc | 109 | //Y moves left |
el19tb | 37:65c9e5a65738 | 110 | void Frogger::process_input() { |
el19tb | 35:db257b7bdefc | 111 | //determine the input |
el19tb | 35:db257b7bdefc | 112 | /* make this a switch statement */ |
el19tb | 35:db257b7bdefc | 113 | if(gamepad.A_pressed()){ |
el19tb | 35:db257b7bdefc | 114 | moveChicken(1,0); |
el19tb | 35:db257b7bdefc | 115 | attach = false; |
el19tb | 35:db257b7bdefc | 116 | } else if(gamepad.X_pressed()){ |
el19tb | 35:db257b7bdefc | 117 | moveChicken(0,-1); |
el19tb | 35:db257b7bdefc | 118 | attach = false; |
el19tb | 35:db257b7bdefc | 119 | } else if(gamepad.B_pressed()){ |
el19tb | 35:db257b7bdefc | 120 | moveChicken(0,1); |
el19tb | 35:db257b7bdefc | 121 | attach = false; |
el19tb | 35:db257b7bdefc | 122 | } else if(gamepad.Y_pressed()){ |
el19tb | 35:db257b7bdefc | 123 | moveChicken(-1,0); |
el19tb | 35:db257b7bdefc | 124 | attach = false; |
el19tb | 35:db257b7bdefc | 125 | } |
el19tb | 35:db257b7bdefc | 126 | } |
el19tb | 35:db257b7bdefc | 127 | |
el19tb | 37:65c9e5a65738 | 128 | void Frogger::createMultipleSafetyLane() |
el19tb | 35:db257b7bdefc | 129 | { |
el19tb | 35:db257b7bdefc | 130 | int min = 0; // start from the top, and draw till 0 |
el19tb | 35:db257b7bdefc | 131 | int max = grid_width; // draw 21 objects to the first lane |
el19tb | 35:db257b7bdefc | 132 | int row = 1; |
el19tb | 35:db257b7bdefc | 133 | int x_fac = 1; |
el19tb | 35:db257b7bdefc | 134 | |
el19tb | 35:db257b7bdefc | 135 | for(int x = 0; x < 2; x++){ |
el19tb | 35:db257b7bdefc | 136 | creatSafetyObject(min, max, row, x_fac); |
el19tb | 35:db257b7bdefc | 137 | row += 6; // increment the rows to the next lane |
el19tb | 35:db257b7bdefc | 138 | min += 22; // fill in the vector with 22 grid units |
el19tb | 35:db257b7bdefc | 139 | max += 22; |
el19tb | 35:db257b7bdefc | 140 | } |
el19tb | 35:db257b7bdefc | 141 | } |
el19tb | 35:db257b7bdefc | 142 | |
el19tb | 37:65c9e5a65738 | 143 | void Frogger::createSafetyObject(int min, int max, int row, int x_fac) |
el19tb | 35:db257b7bdefc | 144 | { |
el19tb | 35:db257b7bdefc | 145 | int state = 1; |
el19tb | 35:db257b7bdefc | 146 | |
el19tb | 35:db257b7bdefc | 147 | for(int z = 0; z < 22; z++){ |
el19tb | 35:db257b7bdefc | 148 | switch(state) |
el19tb | 35:db257b7bdefc | 149 | { |
el19tb | 35:db257b7bdefc | 150 | case 1: |
el19tb | 35:db257b7bdefc | 151 | safety_lane.push_back(z/x_fac, row, 'K'); // safety lane so row 0 |
el19tb | 35:db257b7bdefc | 152 | state++; |
el19tb | 35:db257b7bdefc | 153 | break; |
el19tb | 35:db257b7bdefc | 154 | case 2: |
el19tb | 35:db257b7bdefc | 155 | safety_lane.push_back(z/x_fac, row, 'P'); // safety lane so row 0 |
el19tb | 35:db257b7bdefc | 156 | state--; // back to inital state |
el19tb | 35:db257b7bdefc | 157 | break; |
el19tb | 35:db257b7bdefc | 158 | } |
el19tb | 35:db257b7bdefc | 159 | } |
el19tb | 35:db257b7bdefc | 160 | } |
el19tb | 35:db257b7bdefc | 161 | |
el19tb | 37:65c9e5a65738 | 162 | void Frogger::drawSafety() |
el19tb | 35:db257b7bdefc | 163 | { |
el19tb | 35:db257b7bdefc | 164 | graphics.drawSafetyLanes(safety_lane); |
el19tb | 35:db257b7bdefc | 165 | } |
el19tb | 35:db257b7bdefc | 166 | |
el19tb | 35:db257b7bdefc | 167 | |
el19tb | 37:65c9e5a65738 | 168 | void Frogger::createMultipleRoadLane() |
el19tb | 35:db257b7bdefc | 169 | { |
el19tb | 35:db257b7bdefc | 170 | int min = 0; // start from the top, and draw till 0 |
el19tb | 35:db257b7bdefc | 171 | int max = grid_width; // draw 21 objects to the first lane |
el19tb | 35:db257b7bdefc | 172 | int row = 1; |
el19tb | 35:db257b7bdefc | 173 | |
el19tb | 35:db257b7bdefc | 174 | for(int x = 0; x < 4; x++){ |
el19tb | 35:db257b7bdefc | 175 | createRoadLane(min, max, row); |
el19tb | 35:db257b7bdefc | 176 | row++; // increment the rows to the next lane |
el19tb | 35:db257b7bdefc | 177 | min += 22; // fill in the vector with 22 grid units |
el19tb | 35:db257b7bdefc | 178 | max += 22; |
el19tb | 35:db257b7bdefc | 179 | } |
el19tb | 35:db257b7bdefc | 180 | } |
el19tb | 35:db257b7bdefc | 181 | |
el19tb | 35:db257b7bdefc | 182 | // every level is going to have the same amount of blocks |
el19tb | 37:65c9e5a65738 | 183 | void Frogger::createRoadLane(int min, int max, int row) |
el19tb | 35:db257b7bdefc | 184 | { |
el19tb | 35:db257b7bdefc | 185 | std::vector<Background>::size_type it; |
el19tb | 35:db257b7bdefc | 186 | |
el19tb | 35:db257b7bdefc | 187 | // fill the road objects |
el19tb | 35:db257b7bdefc | 188 | for(int it = min; it != max; it++){ |
el19tb | 35:db257b7bdefc | 189 | roads.push_back(it/row, row); // it is the x pos of the obj, row is the y pos |
el19tb | 35:db257b7bdefc | 190 | } |
el19tb | 35:db257b7bdefc | 191 | } |
el19tb | 35:db257b7bdefc | 192 | |
el19tb | 37:65c9e5a65738 | 193 | void Frogger::drawRoadObjects() |
el19tb | 35:db257b7bdefc | 194 | { |
el19tb | 35:db257b7bdefc | 195 | graphics.getRoadObjects(roads); |
el19tb | 35:db257b7bdefc | 196 | } |
el19tb | 35:db257b7bdefc | 197 | |
el19tb | 37:65c9e5a65738 | 198 | void Frogger::createMultipleLanesWater() |
el19tb | 35:db257b7bdefc | 199 | { |
el19tb | 35:db257b7bdefc | 200 | int min = 0; // start from the top, and draw till 0 |
el19tb | 35:db257b7bdefc | 201 | int max = grid_width; // draw 21 objects to the first lane |
el19tb | 35:db257b7bdefc | 202 | int row = 7; |
el19tb | 35:db257b7bdefc | 203 | int x_fac = 1; |
el19tb | 35:db257b7bdefc | 204 | |
el19tb | 35:db257b7bdefc | 205 | for(int x = 0; x < 3; x++){ |
el19tb | 35:db257b7bdefc | 206 | if(x == 1){ |
el19tb | 35:db257b7bdefc | 207 | createWaterLane(min, max, row, -0.6); // second row goes left |
el19tb | 35:db257b7bdefc | 208 | } else { |
el19tb | 35:db257b7bdefc | 209 | createWaterLane(min, max, row, 0.4); // rest of the rows go right |
el19tb | 35:db257b7bdefc | 210 | } |
el19tb | 35:db257b7bdefc | 211 | |
el19tb | 35:db257b7bdefc | 212 | row++; // increment the rows to the next lane |
el19tb | 35:db257b7bdefc | 213 | min += grid_width; // fill in the vector with 22 grid units |
el19tb | 35:db257b7bdefc | 214 | max += grid_width; |
el19tb | 35:db257b7bdefc | 215 | } |
el19tb | 35:db257b7bdefc | 216 | } |
el19tb | 35:db257b7bdefc | 217 | |
el19tb | 37:65c9e5a65738 | 218 | void Frogger::createWaterLane(int min, int max, int row, float speed, int x_fac){ |
el19tb | 35:db257b7bdefc | 219 | int state = 1; |
el19tb | 35:db257b7bdefc | 220 | for(it = min; it < max; it++) |
el19tb | 35:db257b7bdefc | 221 | { |
el19tb | 35:db257b7bdefc | 222 | switch(state) |
el19tb | 35:db257b7bdefc | 223 | { |
el19tb | 35:db257b7bdefc | 224 | case 1: // initial state |
el19tb | 35:db257b7bdefc | 225 | water[it].push_back(it/x_fac, row, speed, 'F'); // first type of water |
el19tb | 35:db257b7bdefc | 226 | state++; // transition to next state |
el19tb | 35:db257b7bdefc | 227 | break; |
el19tb | 35:db257b7bdefc | 228 | case 2: |
el19tb | 35:db257b7bdefc | 229 | water[it].push_back(it/x_fac, row, speed, 'S'); // first type of water |
el19tb | 35:db257b7bdefc | 230 | state++; // transition to state 3 |
el19tb | 35:db257b7bdefc | 231 | break; |
el19tb | 35:db257b7bdefc | 232 | case 3: |
el19tb | 35:db257b7bdefc | 233 | water[it].push_back(it/x_fac, row, speed, 'T'); // first type of water |
el19tb | 35:db257b7bdefc | 234 | state = 1; // back to start state |
el19tb | 35:db257b7bdefc | 235 | break; |
el19tb | 35:db257b7bdefc | 236 | } |
el19tb | 35:db257b7bdefc | 237 | } |
el19tb | 35:db257b7bdefc | 238 | } |
el19tb | 35:db257b7bdefc | 239 | |
el19tb | 35:db257b7bdefc | 240 | // moves the water based on the velocity |
el19tb | 37:65c9e5a65738 | 241 | void Frogger::moveWater(std::vector<Water>& water_lanes) |
el19tb | 35:db257b7bdefc | 242 | { |
el19tb | 35:db257b7bdefc | 243 | for(unsigned int i = 0; i < water_lanes.size(); i++) |
el19tb | 35:db257b7bdefc | 244 | { |
el19tb | 35:db257b7bdefc | 245 | if(water_lanes(i).speed > 0){ |
el19tb | 35:db257b7bdefc | 246 | water_lanes(i).x += speed; |
el19tb | 35:db257b7bdefc | 247 | } else { |
el19tb | 35:db257b7bdefc | 248 | water_lanes(i).x -= speed; |
el19tb | 35:db257b7bdefc | 249 | } |
el19tb | 35:db257b7bdefc | 250 | } |
el19tb | 35:db257b7bdefc | 251 | |
el19tb | 35:db257b7bdefc | 252 | loopWater(water_lanes); |
el19tb | 35:db257b7bdefc | 253 | } |
el19tb | 35:db257b7bdefc | 254 | |
el19tb | 35:db257b7bdefc | 255 | |
el19tb | 37:65c9e5a65738 | 256 | void Frogger::loopWater(std::vector<Water>& water_lanes) |
el19tb | 35:db257b7bdefc | 257 | { |
el19tb | 35:db257b7bdefc | 258 | for(unsigned int i = 0; i < water_lanes.size(); i++) |
el19tb | 35:db257b7bdefc | 259 | { |
el19tb | 35:db257b7bdefc | 260 | if(water_lanes(i).x > 84+grid){ |
el19tb | 35:db257b7bdefc | 261 | water_lanes(i).x = -4; |
el19tb | 35:db257b7bdefc | 262 | } else if(water_lanes[i].x < -4){ |
el19tb | 35:db257b7bdefc | 263 | water_lanes(i).x = 84 + grid; |
el19tb | 35:db257b7bdefc | 264 | } |
el19tb | 35:db257b7bdefc | 265 | } |
el19tb | 35:db257b7bdefc | 266 | } |
el19tb | 35:db257b7bdefc | 267 | |
el19tb | 37:65c9e5a65738 | 268 | void Frogger::drawWater() |
el19tb | 35:db257b7bdefc | 269 | { |
el19tb | 35:db257b7bdefc | 270 | graphics.drawWater(water); |
el19tb | 35:db257b7bdefc | 271 | } |
el19tb | 35:db257b7bdefc | 272 | |
el19tb | 37:65c9e5a65738 | 273 | void Frogger::drawEndPost() |
el19tb | 35:db257b7bdefc | 274 | { |
el19tb | 35:db257b7bdefc | 275 | graphics.drawGoal(84/2)-grid/2, 48-grid*11); |
el19tb | 35:db257b7bdefc | 276 | } |
el19tb | 35:db257b7bdefc | 277 | |
el19tb | 35:db257b7bdefc | 278 | // make the frog move same speed as log |
el19tb | 35:db257b7bdefc | 279 | // if the frog moves then detach |
el19tb | 37:65c9e5a65738 | 280 | void Frogger::frogOnLog(Car *log) { |
el19tb | 35:db257b7bdefc | 281 | if(log->seperation != 0){ |
el19tb | 35:db257b7bdefc | 282 | chicken.x += 1.0; |
el19tb | 35:db257b7bdefc | 283 | } |
el19tb | 35:db257b7bdefc | 284 | } |
el19tb | 35:db257b7bdefc | 285 | |
el19tb | 35:db257b7bdefc | 286 | //moves the chicken around the grid |
el19tb | 37:65c9e5a65738 | 287 | void Frogger::moveChicken(int xWay, int yWay){ |
el19tb | 35:db257b7bdefc | 288 | //increment the left side of the chicken by a value of the grid size |
el19tb | 35:db257b7bdefc | 289 | chicken.x += xWay * 4; |
el19tb | 35:db257b7bdefc | 290 | |
el19tb | 35:db257b7bdefc | 291 | //increment the top side by a value of grid sizw |
el19tb | 35:db257b7bdefc | 292 | chicken.y += yWay * 4; |
el19tb | 35:db257b7bdefc | 293 | |
el19tb | 35:db257b7bdefc | 294 | chicken.left_side = chicken.x; |
el19tb | 35:db257b7bdefc | 295 | chicken.right_side = grid + chicken.x; |
el19tb | 35:db257b7bdefc | 296 | chicken.up = chicken.y; |
el19tb | 35:db257b7bdefc | 297 | chicken.down = grid + chicken.y; |
el19tb | 35:db257b7bdefc | 298 | |
el19tb | 35:db257b7bdefc | 299 | //display the new state of the chicken |
el19tb | 35:db257b7bdefc | 300 | //graphics.showChicken(); |
el19tb | 35:db257b7bdefc | 301 | |
el19tb | 35:db257b7bdefc | 302 | //wait_ms(30); |
el19tb | 35:db257b7bdefc | 303 | } |
el19tb | 35:db257b7bdefc | 304 | |
el19tb | 37:65c9e5a65738 | 305 | void Frogger::moveCar(Car *car, int dir, int x) { |
el19tb | 35:db257b7bdefc | 306 | car->speedMedium(dir, x); |
el19tb | 35:db257b7bdefc | 307 | |
el19tb | 35:db257b7bdefc | 308 | // check if car goes out of bounds |
el19tb | 35:db257b7bdefc | 309 | if(car->vehicle.x > 84+grid){ |
el19tb | 35:db257b7bdefc | 310 | car->vehicle.x = -4; |
el19tb | 35:db257b7bdefc | 311 | |
el19tb | 35:db257b7bdefc | 312 | } else if(car->vehicle.x < -4){ |
el19tb | 35:db257b7bdefc | 313 | car->vehicle.x = 84 + grid; |
el19tb | 35:db257b7bdefc | 314 | } |
el19tb | 35:db257b7bdefc | 315 | } |
el19tb | 35:db257b7bdefc | 316 | |
el19tb | 35:db257b7bdefc | 317 | // debug |
el19tb | 37:65c9e5a65738 | 318 | void Frogger::setCollision(Car *car){ |
el19tb | 35:db257b7bdefc | 319 | |
el19tb | 35:db257b7bdefc | 320 | float other_bottom = car->vehicle.height + car->vehicle.y; |
el19tb | 35:db257b7bdefc | 321 | |
el19tb | 35:db257b7bdefc | 322 | |
el19tb | 35:db257b7bdefc | 323 | if(!(chicken.up >= other_bottom || |
el19tb | 35:db257b7bdefc | 324 | (chicken.right_side <= car->vehicle.x) || |
el19tb | 35:db257b7bdefc | 325 | (chicken.down <= car->vehicle.y) || |
el19tb | 35:db257b7bdefc | 326 | chicken.left_side >= (car->vehicle.width + car->vehicle.x))){ |
el19tb | 35:db257b7bdefc | 327 | graphics.printTest(); |
el19tb | 35:db257b7bdefc | 328 | |
el19tb | 35:db257b7bdefc | 329 | if(chicken.y < screenH - grid*6){ |
el19tb | 35:db257b7bdefc | 330 | attach = true; |
el19tb | 35:db257b7bdefc | 331 | } else { |
el19tb | 35:db257b7bdefc | 332 | attach = false; |
el19tb | 35:db257b7bdefc | 333 | } |
el19tb | 35:db257b7bdefc | 334 | } |
el19tb | 35:db257b7bdefc | 335 | } |
el19tb | 35:db257b7bdefc | 336 | |
el19tb | 37:65c9e5a65738 | 337 | bool Frogger::returnCollision(Car* log){ |
el19tb | 35:db257b7bdefc | 338 | |
el19tb | 35:db257b7bdefc | 339 | float ob = log->vehicle.height + log->vehicle.y; |
el19tb | 35:db257b7bdefc | 340 | |
el19tb | 35:db257b7bdefc | 341 | if(!(chicken.up >= ob|| |
el19tb | 35:db257b7bdefc | 342 | (chicken.right_side <= log->vehicle.x) || |
el19tb | 35:db257b7bdefc | 343 | (chicken.down <= log->vehicle.y) || |
el19tb | 35:db257b7bdefc | 344 | chicken.left_side >= (log->vehicle.width + log->vehicle.x))){ |
el19tb | 35:db257b7bdefc | 345 | return true; |
el19tb | 35:db257b7bdefc | 346 | } |
el19tb | 35:db257b7bdefc | 347 | } |