ELEC2645 (2019/20) / Mbed 2 deprecated ELEC2645_Project_el19tb

Dependencies:   mbed

Committer:
el19tb
Date:
Mon May 18 04:39:06 2020 +0000
Revision:
42:04e326dcf09b
Parent:
41:6267c66953ca
Child:
43:2cd1cfe07770
worked on lcd class to display items in a structured way, cleaned up engine a bit

Who changed what in which revision?

UserRevisionLine numberNew 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 42:04e326dcf09b 19 current_level = 1;
el19tb 37:65c9e5a65738 20 initializeParams(w, h, grid); // initialize the software parameters
el19tb 35:db257b7bdefc 21 initializeEmbeddedSystem(); // initialize the hardware paramaters
el19tb 35:db257b7bdefc 22 }
el19tb 35:db257b7bdefc 23
el19tb 37:65c9e5a65738 24 void Frogger::initializeParams(int w, int h, int grid)
el19tb 35:db257b7bdefc 25 {
el19tb 35:db257b7bdefc 26 // screen sizes
el19tb 37:65c9e5a65738 27 lcd_w = w; // width
el19tb 37:65c9e5a65738 28 lcd_h = h; // height
el19tb 35:db257b7bdefc 29
el19tb 35:db257b7bdefc 30 // grid values
el19tb 35:db257b7bdefc 31 grid = 4; // size of game grid system
el19tb 35:db257b7bdefc 32 grid_width = 22; // size of screen width in grid units
el19tb 35:db257b7bdefc 33 }
el19tb 35:db257b7bdefc 34
el19tb 37:65c9e5a65738 35 void Frogger::initializeLevelTwo()
el19tb 37:65c9e5a65738 36 {
el19tb 37:65c9e5a65738 37 level->setupLevelTwo();
el19tb 37:65c9e5a65738 38 }
el19tb 37:65c9e5a65738 39
el19tb 35:db257b7bdefc 40 void Frogger::initializeEmbeddedSystem()
el19tb 35:db257b7bdefc 41 {
el19tb 35:db257b7bdefc 42 //game setup
el19tb 42:04e326dcf09b 43 graphics->init(); // initialize the LCD object
el19tb 42:04e326dcf09b 44 graphics->contrast(); // set the contrast to 0.4
el19tb 42:04e326dcf09b 45 graphics->backLightOn(); // turn on the backlight
el19tb 42:04e326dcf09b 46
el19tb 42:04e326dcf09b 47 gamepad.init(); // initialize the actual embedded system
el19tb 42:04e326dcf09b 48 }
el19tb 42:04e326dcf09b 49
el19tb 42:04e326dcf09b 50 //main function that starts the game
el19tb 42:04e326dcf09b 51 void Frogger::start()
el19tb 42:04e326dcf09b 52 {
el19tb 42:04e326dcf09b 53 //keep reading and processing user input
el19tb 42:04e326dcf09b 54 while(1) {
el19tb 42:04e326dcf09b 55 graphics->clear(); // clear the lcd screen
el19tb 42:04e326dcf09b 56
el19tb 42:04e326dcf09b 57 runCurrentLevel(); // add velocity to level vehicles and logs
el19tb 42:04e326dcf09b 58
el19tb 42:04e326dcf09b 59 graphics->showFrog(); // display current position of frog
el19tb 42:04e326dcf09b 60 process_input(); // user controls the frog object
el19tb 42:04e326dcf09b 61
el19tb 42:04e326dcf09b 62 checkCurrentLevelCollision(); // check if the frog is alive
el19tb 42:04e326dcf09b 63 checkFrogInWater(); // check if the frog is in the water level
el19tb 42:04e326dcf09b 64
el19tb 42:04e326dcf09b 65 graphics->refresh(); // refresh the lcd screen
el19tb 42:04e326dcf09b 66
el19tb 42:04e326dcf09b 67 wait_ms(75); // fpms
el19tb 42:04e326dcf09b 68 }
el19tb 35:db257b7bdefc 69 }
el19tb 35:db257b7bdefc 70
el19tb 37:65c9e5a65738 71 void Frogger::runCurrentLevel()
el19tb 37:65c9e5a65738 72 {
el19tb 42:04e326dcf09b 73 switch (current_level)
el19tb 37:65c9e5a65738 74 {
el19tb 37:65c9e5a65738 75 case 1:
el19tb 37:65c9e5a65738 76 level->levelOne();
el19tb 37:65c9e5a65738 77 break;
el19tb 37:65c9e5a65738 78 case 2:
el19tb 37:65c9e5a65738 79 level->levelTwo();
el19tb 37:65c9e5a65738 80 break;
el19tb 37:65c9e5a65738 81 }
el19tb 37:65c9e5a65738 82 }
el19tb 37:65c9e5a65738 83
el19tb 41:6267c66953ca 84 void Frogger::checkCurrentLevelCollision()
el19tb 41:6267c66953ca 85 {
el19tb 41:6267c66953ca 86 switch (current_level)
el19tb 41:6267c66953ca 87 {
el19tb 41:6267c66953ca 88 case 1:
el19tb 41:6267c66953ca 89 level->levelOneCollision();
el19tb 41:6267c66953ca 90 break;
el19tb 41:6267c66953ca 91 case 2:
el19tb 41:6267c66953ca 92 level->levelTwoCollision();
el19tb 41:6267c66953ca 93 break;
el19tb 41:6267c66953ca 94 }
el19tb 41:6267c66953ca 95 }
el19tb 41:6267c66953ca 96
el19tb 37:65c9e5a65738 97 void Frogger::process_input() {
el19tb 35:db257b7bdefc 98 //determine the input
el19tb 35:db257b7bdefc 99 /* make this a switch statement */
el19tb 35:db257b7bdefc 100 if(gamepad.A_pressed()){
el19tb 42:04e326dcf09b 101 moveFrog(1,0);
el19tb 41:6267c66953ca 102 level->frogOnLog = false;
el19tb 35:db257b7bdefc 103 } else if(gamepad.X_pressed()){
el19tb 42:04e326dcf09b 104 moveFrog(0,-1);
el19tb 41:6267c66953ca 105 level->frogOnLog = false;
el19tb 35:db257b7bdefc 106 } else if(gamepad.B_pressed()){
el19tb 42:04e326dcf09b 107 moveFrog(0,1);
el19tb 41:6267c66953ca 108 level->frogOnLog = false;
el19tb 35:db257b7bdefc 109 } else if(gamepad.Y_pressed()){
el19tb 42:04e326dcf09b 110 moveFrog(-1,0);
el19tb 41:6267c66953ca 111 level->frogOnLog = false;
el19tb 35:db257b7bdefc 112 }
el19tb 35:db257b7bdefc 113 }
el19tb 35:db257b7bdefc 114
el19tb 42:04e326dcf09b 115 //moves the frog around the grid
el19tb 42:04e326dcf09b 116 void Frogger::moveFrog(int xWay, int yWay)
el19tb 35:db257b7bdefc 117 {
el19tb 42:04e326dcf09b 118 //increment the left side of the chicken by a value of the grid size
el19tb 42:04e326dcf09b 119 frog->x += xWay * 4;
el19tb 42:04e326dcf09b 120
el19tb 42:04e326dcf09b 121 //increment the top side by a value of grid sizw
el19tb 42:04e326dcf09b 122 frog->y += yWay * 4;
el19tb 35:db257b7bdefc 123
el19tb 42:04e326dcf09b 124 // change rect parameters
el19tb 42:04e326dcf09b 125 frog->left_side = frog->x;
el19tb 42:04e326dcf09b 126 frog->right_side = grid + frog->x;
el19tb 42:04e326dcf09b 127 frog->up = frog->y;
el19tb 42:04e326dcf09b 128 frog->down = grid + frog->y;
el19tb 42:04e326dcf09b 129 }
el19tb 42:04e326dcf09b 130
el19tb 42:04e326dcf09b 131 void Frogger::createGoalPost()
el19tb 42:04e326dcf09b 132 {
el19tb 42:04e326dcf09b 133 //graphics->drawGoalPost();
el19tb 35:db257b7bdefc 134 }
el19tb 35:db257b7bdefc 135
el19tb 42:04e326dcf09b 136
el19tb 42:04e326dcf09b 137
el19tb 42:04e326dcf09b 138
el19tb 42:04e326dcf09b 139
el19tb 42:04e326dcf09b 140
el19tb 42:04e326dcf09b 141
el19tb 42:04e326dcf09b 142
el19tb 42:04e326dcf09b 143
el19tb 42:04e326dcf09b 144
el19tb 42:04e326dcf09b 145
el19tb 42:04e326dcf09b 146
el19tb 42:04e326dcf09b 147
el19tb 42:04e326dcf09b 148
el19tb 42:04e326dcf09b 149
el19tb 42:04e326dcf09b 150
el19tb 42:04e326dcf09b 151
el19tb 42:04e326dcf09b 152
el19tb 42:04e326dcf09b 153
el19tb 42:04e326dcf09b 154
el19tb 42:04e326dcf09b 155
el19tb 42:04e326dcf09b 156
el19tb 42:04e326dcf09b 157
el19tb 42:04e326dcf09b 158
el19tb 42:04e326dcf09b 159
el19tb 42:04e326dcf09b 160
el19tb 42:04e326dcf09b 161
el19tb 42:04e326dcf09b 162
el19tb 42:04e326dcf09b 163
el19tb 42:04e326dcf09b 164
el19tb 42:04e326dcf09b 165
el19tb 42:04e326dcf09b 166 void Frogger::createMultipleSafetyLane()
el19tb 35:db257b7bdefc 167 {
el19tb 42:04e326dcf09b 168
el19tb 42:04e326dcf09b 169 }
el19tb 42:04e326dcf09b 170
el19tb 42:04e326dcf09b 171 void Frogger::createSafetyObject()
el19tb 42:04e326dcf09b 172 {
el19tb 42:04e326dcf09b 173
el19tb 35:db257b7bdefc 174 }
el19tb 35:db257b7bdefc 175
el19tb 37:65c9e5a65738 176 void Frogger::drawSafety()
el19tb 35:db257b7bdefc 177 {
el19tb 42:04e326dcf09b 178 //graphics.drawSafetyLanes(safety_lane);
el19tb 35:db257b7bdefc 179 }
el19tb 35:db257b7bdefc 180
el19tb 35:db257b7bdefc 181
el19tb 37:65c9e5a65738 182 void Frogger::createMultipleRoadLane()
el19tb 35:db257b7bdefc 183 {
el19tb 42:04e326dcf09b 184
el19tb 35:db257b7bdefc 185 }
el19tb 35:db257b7bdefc 186
el19tb 35:db257b7bdefc 187 // every level is going to have the same amount of blocks
el19tb 42:04e326dcf09b 188 void Frogger::createRoadLane()
el19tb 35:db257b7bdefc 189 {
el19tb 35:db257b7bdefc 190
el19tb 35:db257b7bdefc 191 }
el19tb 35:db257b7bdefc 192
el19tb 37:65c9e5a65738 193 void Frogger::drawRoadObjects()
el19tb 35:db257b7bdefc 194 {
el19tb 42:04e326dcf09b 195 //graphics.getRoadObjects(roads);
el19tb 35:db257b7bdefc 196 }
el19tb 35:db257b7bdefc 197
el19tb 37:65c9e5a65738 198 void Frogger::createMultipleLanesWater()
el19tb 35:db257b7bdefc 199 {
el19tb 42:04e326dcf09b 200
el19tb 42:04e326dcf09b 201
el19tb 35:db257b7bdefc 202 }
el19tb 35:db257b7bdefc 203
el19tb 42:04e326dcf09b 204 void Frogger::createWaterLane(){
el19tb 42:04e326dcf09b 205
el19tb 35:db257b7bdefc 206 }
el19tb 35:db257b7bdefc 207
el19tb 35:db257b7bdefc 208 // moves the water based on the velocity
el19tb 42:04e326dcf09b 209 void Frogger::moveWater()
el19tb 35:db257b7bdefc 210 {
el19tb 42:04e326dcf09b 211
el19tb 42:04e326dcf09b 212 //loopWater(water_lanes);
el19tb 35:db257b7bdefc 213 }
el19tb 35:db257b7bdefc 214
el19tb 35:db257b7bdefc 215
el19tb 42:04e326dcf09b 216 void Frogger::loopWater()
el19tb 35:db257b7bdefc 217 {
el19tb 42:04e326dcf09b 218
el19tb 35:db257b7bdefc 219 }
el19tb 35:db257b7bdefc 220
el19tb 37:65c9e5a65738 221 void Frogger::drawWater()
el19tb 35:db257b7bdefc 222 {
el19tb 42:04e326dcf09b 223 // graphics.drawWater(water);
el19tb 35:db257b7bdefc 224 }
el19tb 35:db257b7bdefc 225
el19tb 37:65c9e5a65738 226 void Frogger::drawEndPost()
el19tb 35:db257b7bdefc 227 {
el19tb 42:04e326dcf09b 228 //graphics.drawGoal(84/2)-grid/2, 48-grid*11);
el19tb 35:db257b7bdefc 229 }
el19tb 35:db257b7bdefc 230