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.h@55:b17b9931c010, 2020-05-26 (annotated)
- 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?
User | Revision | Line number | New 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 |