ELEC2645 (2019/20) / Mbed 2 deprecated ELEC2645_Project_el19tb

Dependencies:   mbed

Committer:
el19tb
Date:
Tue May 26 19:54:05 2020 +0000
Revision:
55:b17b9931c010
Parent:
53:b6bb4dab7823
Child:
56:2797166656e0
added test files, added testing statements to test schediule, program passed tests

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