ELEC2645 (2019/20) / Mbed 2 deprecated ELEC2645_Project_el19tb

Dependencies:   mbed

Committer:
el19tb
Date:
Mon May 25 16:58:50 2020 +0000
Revision:
51:4c1f49729d88
Parent:
50:9ffeb4a10c0a
Child:
52:1145e99264ea
setup level progression, level two is properly loaded now

Who changed what in which revision?

UserRevisionLine numberNew contents of line
el19tb 29:2151cd327a36 1 #ifndef FROGGER_H
el19tb 29:2151cd327a36 2 #define FROGGER_H
el19tb 3:648c9d5001be 3
el19tb 2:86cef2afa648 4 #include "mbed.h"
el19tb 2:86cef2afa648 5 #include "N5110.h"
el19tb 2:86cef2afa648 6 #include "Gamepad.h"
el19tb 44:f02510eeb165 7
el19tb 29:2151cd327a36 8 #include "Frog.h"
el19tb 44:f02510eeb165 9 #include "Menu.h"
el19tb 44:f02510eeb165 10 #include "GraphicEngine.h"
el19tb 44:f02510eeb165 11 #include "WaterSprites.h"
el19tb 44:f02510eeb165 12 #include "Vehicle.h"
el19tb 44:f02510eeb165 13 #include "Background.h"
el19tb 50:9ffeb4a10c0a 14 #include "IntroScreen.h"
el19tb 13:cd6d2f999057 15
el19tb 4:aae7f8d4ab78 16 #include <vector>
el19tb 44:f02510eeb165 17 #include <stdio.h>
el19tb 44:f02510eeb165 18 #include <cstddef>
el19tb 44:f02510eeb165 19 #include <vector>
el19tb 2:86cef2afa648 20
el19tb 29:2151cd327a36 21 class Frogger
el19tb 29:2151cd327a36 22 {
el19tb 11:cc5861abfca5 23 public:
el19tb 29:2151cd327a36 24
el19tb 44:f02510eeb165 25 //GraphicEngine *graphics; // local renderer object
el19tb 44:f02510eeb165 26 Frog *frog; // one frog object
el19tb 44:f02510eeb165 27
el19tb 37:65c9e5a65738 28 int grid; // size of one game unit
el19tb 50:9ffeb4a10c0a 29 IntroScreen intro;
el19tb 50:9ffeb4a10c0a 30
el19tb 44:f02510eeb165 31 Frogger();
el19tb 44:f02510eeb165 32 Frogger(Frog *frog, int grid, int w, int h); // constructor
el19tb 37:65c9e5a65738 33
el19tb 37:65c9e5a65738 34 public:
el19tb 37:65c9e5a65738 35 int current_level;
el19tb 47:29c4796a49e5 36 int state_frog;
el19tb 48:8ccfc74b60a5 37 bool frogDie;
el19tb 50:9ffeb4a10c0a 38 int goal_post_xpos;
el19tb 50:9ffeb4a10c0a 39 bool play_game;
el19tb 50:9ffeb4a10c0a 40 bool introScreen;
el19tb 50:9ffeb4a10c0a 41 bool tutorial;
el19tb 50:9ffeb4a10c0a 42 bool settings;
el19tb 50:9ffeb4a10c0a 43 void gotoNextTutorialSlide();
el19tb 50:9ffeb4a10c0a 44 void displayTutorial();
el19tb 50:9ffeb4a10c0a 45 void goalReached();
el19tb 50:9ffeb4a10c0a 46 void checkProgression();
el19tb 50:9ffeb4a10c0a 47
el19tb 50:9ffeb4a10c0a 48 bool end_post;
el19tb 50:9ffeb4a10c0a 49 bool nextLevel;
el19tb 50:9ffeb4a10c0a 50 bool next_goal;
el19tb 50:9ffeb4a10c0a 51
el19tb 48:8ccfc74b60a5 52 float water_level;
el19tb 44:f02510eeb165 53 bool frogOnLog; // attached
el19tb 51:4c1f49729d88 54 int turtle_state;
el19tb 29:2151cd327a36 55
el19tb 29:2151cd327a36 56 public:
el19tb 29:2151cd327a36 57
el19tb 42:04e326dcf09b 58 Gamepad gamepad; // actual hardware object
el19tb 43:2cd1cfe07770 59
el19tb 15:b15bf9357cd9 60 int row_number;
el19tb 18:6be4c3c94a3d 61 int grid_width; // screen width in grid units
el19tb 37:65c9e5a65738 62 int lcd_w;
el19tb 37:65c9e5a65738 63 int lcd_h;
el19tb 44:f02510eeb165 64
el19tb 44:f02510eeb165 65 public:
el19tb 44:f02510eeb165 66
el19tb 44:f02510eeb165 67 // Level One Car objects
el19tb 44:f02510eeb165 68 Object car_row_one_one[3];
el19tb 44:f02510eeb165 69 Object car_row_two_one[2];
el19tb 44:f02510eeb165 70 Object car_row_three_one[3];
el19tb 44:f02510eeb165 71 Object car_row_four_one[4];
el19tb 44:f02510eeb165 72
el19tb 44:f02510eeb165 73 // Level One Log objects
el19tb 44:f02510eeb165 74 Object row_one_log[3]; // large sized
el19tb 44:f02510eeb165 75 Object row_two_log[2]; // medium sized
el19tb 44:f02510eeb165 76 Object row_three_log[3]; // large sized
el19tb 44:f02510eeb165 77
el19tb 44:f02510eeb165 78 // Level two Car Objects
el19tb 44:f02510eeb165 79 Object car_row_one_two[4];
el19tb 44:f02510eeb165 80 Object car_row_two_two[3];
el19tb 44:f02510eeb165 81 Object car_row_three_two[4];
el19tb 44:f02510eeb165 82 Object car_row_four_two[3];
el19tb 44:f02510eeb165 83
el19tb 44:f02510eeb165 84 // level two log objects
el19tb 44:f02510eeb165 85 Object level_row_one[2];
el19tb 44:f02510eeb165 86 Object level_row_two[2];
el19tb 44:f02510eeb165 87 Object level_row_three[3];
el19tb 50:9ffeb4a10c0a 88
el19tb 44:f02510eeb165 89 public:
el19tb 50:9ffeb4a10c0a 90 void run();
el19tb 50:9ffeb4a10c0a 91 void actOnFrogPos();
el19tb 50:9ffeb4a10c0a 92 void home();
el19tb 50:9ffeb4a10c0a 93 void determineSelection();
el19tb 50:9ffeb4a10c0a 94 void gotoPage();
el19tb 50:9ffeb4a10c0a 95 void selectOption();
el19tb 50:9ffeb4a10c0a 96 void checkLevelProgression();
el19tb 50:9ffeb4a10c0a 97 int randEndPost();
el19tb 44:f02510eeb165 98 void checkFrogOnWater();
el19tb 48:8ccfc74b60a5 99 void drownedFrog();
el19tb 46:e39abe665271 100 void checkFrogAction(Object log);
el19tb 44:f02510eeb165 101 void setupLevelTwoRows();
el19tb 48:8ccfc74b60a5 102 void moveFrogWithLog(Object log);
el19tb 50:9ffeb4a10c0a 103
el19tb 50:9ffeb4a10c0a 104 void drawBackGround();
el19tb 50:9ffeb4a10c0a 105 void generateLevelOneGoalPost();
el19tb 50:9ffeb4a10c0a 106 void setUpGoalPost();
el19tb 50:9ffeb4a10c0a 107
el19tb 44:f02510eeb165 108 void levelOneCollision();
el19tb 44:f02510eeb165 109 void levelTwoCollision();
el19tb 46:e39abe665271 110 void checkCollison(Object object);
el19tb 44:f02510eeb165 111
el19tb 44:f02510eeb165 112 void setupRowDistance(Object *objects, int dis, int array_size);
el19tb 44:f02510eeb165 113 void setDistance(Object *object, int dis);
el19tb 44:f02510eeb165 114
el19tb 44:f02510eeb165 115 void setRowObjects(Object *objecs, int row, int array_size);
el19tb 44:f02510eeb165 116 void createRow(Object *object, int row);
el19tb 44:f02510eeb165 117
el19tb 44:f02510eeb165 118 void setSpriteObjects(Object *objects, char c, int array_size);
el19tb 44:f02510eeb165 119 void setSprite(Object *object, char c);
el19tb 44:f02510eeb165 120
el19tb 44:f02510eeb165 121 void setDirObjects(Object *objecs, int dir, int array_size);
el19tb 44:f02510eeb165 122 void setDir(Object *objecs, int dir);
el19tb 44:f02510eeb165 123
el19tb 44:f02510eeb165 124 //void moveLogLevelTwo();
el19tb 44:f02510eeb165 125
el19tb 44:f02510eeb165 126 void moveLogsLevelOne();
el19tb 48:8ccfc74b60a5 127 void checkFrogReachedRiver();
el19tb 44:f02510eeb165 128
el19tb 44:f02510eeb165 129 void moveLogsLevelTwo();
el19tb 47:29c4796a49e5 130 void drawFrogStates();
el19tb 44:f02510eeb165 131
el19tb 44:f02510eeb165 132 void speedSlow();
el19tb 44:f02510eeb165 133 void speedMedium();
el19tb 44:f02510eeb165 134 void speedFast();
el19tb 51:4c1f49729d88 135
el19tb 51:4c1f49729d88 136 // BONUS ROUND
el19tb 51:4c1f49729d88 137 void setupBonusRound();
el19tb 51:4c1f49729d88 138
el19tb 44:f02510eeb165 139 // LEVEL ONE FUNCTIONS
el19tb 44:f02510eeb165 140 void setupLevelOne();
el19tb 44:f02510eeb165 141
el19tb 44:f02510eeb165 142 // set up vehicles
el19tb 44:f02510eeb165 143 void setupLevelOneRow();
el19tb 44:f02510eeb165 144 void setupLevelOneXPos();
el19tb 44:f02510eeb165 145 void setupLevelOneSprites();
el19tb 44:f02510eeb165 146 void setupLevelOneDir();
el19tb 44:f02510eeb165 147
el19tb 44:f02510eeb165 148 // set up logs
el19tb 44:f02510eeb165 149 void setupLogsLevelOne();
el19tb 44:f02510eeb165 150
el19tb 44:f02510eeb165 151 void setLogLevelOneXPos();
el19tb 44:f02510eeb165 152 void setLogLevelOneRow();
el19tb 44:f02510eeb165 153 void setLogLevelOneDir();
el19tb 44:f02510eeb165 154 void setLogLevelOneSprites();
el19tb 44:f02510eeb165 155
el19tb 44:f02510eeb165 156 // LEVEL TWO FUNCTIONS
el19tb 44:f02510eeb165 157 void setupLevelTwo();
el19tb 44:f02510eeb165 158 int randCars();
el19tb 44:f02510eeb165 159
el19tb 44:f02510eeb165 160 // setup vehicles
el19tb 44:f02510eeb165 161 void setupLevelTwoXPos();
el19tb 44:f02510eeb165 162 void setupLevelTwoSprites();
el19tb 44:f02510eeb165 163 void setupLevelTwoDir();
el19tb 44:f02510eeb165 164
el19tb 44:f02510eeb165 165 //log objects
el19tb 44:f02510eeb165 166 void setupLogLevelTwo();
el19tb 44:f02510eeb165 167
el19tb 44:f02510eeb165 168 void setLogLevelTwoXPos();
el19tb 44:f02510eeb165 169 void setLogLevelTwoRow();
el19tb 44:f02510eeb165 170 void setLogLevelTwoSprite();
el19tb 44:f02510eeb165 171 void setLogLevelTwoDir();
el19tb 44:f02510eeb165 172 void initializeLevelTwo();
el19tb 44:f02510eeb165 173
el19tb 44:f02510eeb165 174 void displayObject(Object &temp_object);
el19tb 11:cc5861abfca5 175
el19tb 2:86cef2afa648 176 public:
el19tb 44:f02510eeb165 177
el19tb 2:86cef2afa648 178 void start();
el19tb 2:86cef2afa648 179 void input();
el19tb 2:86cef2afa648 180 void process_input();
el19tb 2:86cef2afa648 181 void clear();
el19tb 44:f02510eeb165 182 void runLevelOne();
el19tb 44:f02510eeb165 183 void runLevelTwo();
el19tb 44:f02510eeb165 184 void moveVehiclesLevelOne();
el19tb 44:f02510eeb165 185 void moveVehiclesLevelTwo();
el19tb 44:f02510eeb165 186 void moveVehicle(Object *row, char c, int array_size);
el19tb 44:f02510eeb165 187 void moveIndividualObject(Object *vehicle, char c);
el19tb 44:f02510eeb165 188 void checkOutOfBounds(Object *vehicle);
el19tb 50:9ffeb4a10c0a 189 void displayLevelIntro();
el19tb 42:04e326dcf09b 190 void runCurrentLevel();
el19tb 42:04e326dcf09b 191 void initializeParams(int w, int h, int grid);
el19tb 42:04e326dcf09b 192 void initializeEmbeddedSystem();
el19tb 42:04e326dcf09b 193 void checkCurrentLevelCollision();
el19tb 42:04e326dcf09b 194 void checkIfFrogIsInWater();
el19tb 42:04e326dcf09b 195 void moveFrog(int xWay, int yWay);
el19tb 2:86cef2afa648 196 void game();
el19tb 2:86cef2afa648 197 void refresh();
el19tb 42:04e326dcf09b 198 void createWaterLane();
el19tb 42:04e326dcf09b 199 void createMultipleLanesWater();
el19tb 42:04e326dcf09b 200 void drawRoadObjects();
el19tb 42:04e326dcf09b 201 void createRoadLane();
el19tb 42:04e326dcf09b 202 void createMultipleRoadLane();
el19tb 42:04e326dcf09b 203 void drawSafety();
el19tb 42:04e326dcf09b 204 void createSafetyObject();
el19tb 42:04e326dcf09b 205 void createMultipleSafetyLane();
el19tb 42:04e326dcf09b 206
el19tb 42:04e326dcf09b 207 void drawEndPost();
el19tb 42:04e326dcf09b 208 void drawWater();
el19tb 42:04e326dcf09b 209 void loopWater();
el19tb 42:04e326dcf09b 210 void moveWater();
el19tb 3:648c9d5001be 211
el19tb 3:648c9d5001be 212
el19tb 3:648c9d5001be 213 void move();
el19tb 44:f02510eeb165 214 void checkFrogOutOfBounds();
el19tb 44:f02510eeb165 215
el19tb 3:648c9d5001be 216 void setup();
el19tb 42:04e326dcf09b 217 void createGoalPost();
el19tb 2:86cef2afa648 218 };
el19tb 2:86cef2afa648 219
el19tb 44:f02510eeb165 220 #endif
el19tb 2:86cef2afa648 221
el19tb 44:f02510eeb165 222
el19tb 44:f02510eeb165 223
el19tb 50:9ffeb4a10c0a 224