Josh Davy / Mbed OS Flip_OS_5

Dependencies:   el17jd

Committer:
joshdavy
Date:
Wed May 08 14:41:56 2019 +0000
Revision:
14:1e6f74233e8e
Parent:
13:32d580b3935c
Documentation test

Who changed what in which revision?

UserRevisionLine numberNew contents of line
joshdavy 13:32d580b3935c 1 /**
joshdavy 13:32d580b3935c 2 * @brief Struct for storing a blocks location
joshdavy 13:32d580b3935c 3 */
joshdavy 11:db27d3838514 4 struct Block {
joshdavy 13:32d580b3935c 5 Vector2D first; /**< Coord of the top left of the block. */
joshdavy 13:32d580b3935c 6 Vector2D second; /**<Coord of the bottom right of the block */
joshdavy 13:32d580b3935c 7 };
joshdavy 13:32d580b3935c 8
joshdavy 13:32d580b3935c 9 /**
joshdavy 13:32d580b3935c 10 * @brief Struct for defining moving blocks
joshdavy 13:32d580b3935c 11 */
joshdavy 13:32d580b3935c 12 struct MovingBlockDefinition {
joshdavy 13:32d580b3935c 13 int index; /**< Index of the moving block*/
joshdavy 13:32d580b3935c 14 bool extending;/**< True if to start in the extending phase. False if not.*/
joshdavy 14:1e6f74233e8e 15 int distance; /**< Distance to extend.*/
joshdavy 11:db27d3838514 16 };
joshdavy 8:21b6d4dbce44 17
joshdavy 13:32d580b3935c 18 /**
joshdavy 14:1e6f74233e8e 19 @brief Struct for defining levels.
joshdavy 13:32d580b3935c 20 @code
joshdavy 13:32d580b3935c 21 /////////////// EXAMPLE DEFINITION /////////////////////////
joshdavy 13:32d580b3935c 22 const LevelDefinition level_1 = {
joshdavy 13:32d580b3935c 23 // Define Blocks // Array of blocks
joshdavy 13:32d580b3935c 24 { // Blocks are defined by their top left followed
joshdavy 13:32d580b3935c 25 { {5,30},{80,40} }, // by there bottom right coord. MUST be in that
joshdavy 13:32d580b3935c 26 { {5,5}, {80,10} }, // order.
joshdavy 13:32d580b3935c 27 { {10,24},{20,34} },
joshdavy 13:32d580b3935c 28 { {40,24},{44,26} }
joshdavy 13:32d580b3935c 29 },
joshdavy 13:32d580b3935c 30 // Number Of Blocks
joshdavy 13:32d580b3935c 31 4,
joshdavy 13:32d580b3935c 32 // Moving Blocks // Movingblocks are defined as:
joshdavy 13:32d580b3935c 33 { // {index,extending,distance}
joshdavy 13:32d580b3935c 34 {3,true,25}, // index is the index in the block array
joshdavy 13:32d580b3935c 35 }, // of the block which you want to move
joshdavy 13:32d580b3935c 36 // Number Of Moving blocks extending is a bool if the block starts in
joshdavy 13:32d580b3935c 37 1, // its extending/retracting phase
joshdavy 13:32d580b3935c 38 // Initial Position // distance is the horizontal distance the block
joshdavy 13:32d580b3935c 39 {32,10}, // moves.
joshdavy 13:32d580b3935c 40 // Goal
joshdavy 13:32d580b3935c 41 {70,19}
joshdavy 13:32d580b3935c 42 };
joshdavy 13:32d580b3935c 43
joshdavy 13:32d580b3935c 44 NOTE: MAX no. of blocks is 20 MAX no. of moving blocks is 10
joshdavy 13:32d580b3935c 45
joshdavy 10:58cf89dd878c 46 //////////////////////////////////////////////////////////////
joshdavy 13:32d580b3935c 47 @endcode
joshdavy 14:1e6f74233e8e 48
joshdavy 13:32d580b3935c 49 */
joshdavy 14:1e6f74233e8e 50 struct LevelDefinition {
joshdavy 14:1e6f74233e8e 51 Block blocks [20]; /**< Array of blocks*/
joshdavy 14:1e6f74233e8e 52 int number_of_blocks; /**< Number of blocks */
joshdavy 14:1e6f74233e8e 53 MovingBlockDefinition moving_blocks [10]; /**< Array of moving block
joshdavy 14:1e6f74233e8e 54 definitions*/
joshdavy 14:1e6f74233e8e 55 int number_of_moving_blocks ; /**< Number of moving blocks*/
joshdavy 14:1e6f74233e8e 56 Vector2D initial_pos; /**< Initial Positon*/
joshdavy 14:1e6f74233e8e 57 Vector2D goal; /**< Goal location*/
joshdavy 14:1e6f74233e8e 58 };
joshdavy 13:32d580b3935c 59
joshdavy 9:96969b1c6bde 60 const LevelDefinition level_1 = {
joshdavy 9:96969b1c6bde 61 // Define Blocks
joshdavy 9:96969b1c6bde 62 {
joshdavy 9:96969b1c6bde 63 { {5,30},{80,40} },
joshdavy 9:96969b1c6bde 64 { {5,5}, {80,10} }
joshdavy 9:96969b1c6bde 65 },
joshdavy 9:96969b1c6bde 66 // Number Of Blocks
joshdavy 9:96969b1c6bde 67 2,
joshdavy 9:96969b1c6bde 68 // Moving Blocks
joshdavy 9:96969b1c6bde 69 {
joshdavy 9:96969b1c6bde 70
joshdavy 9:96969b1c6bde 71 },
joshdavy 9:96969b1c6bde 72 // Number Of Moving blocks
joshdavy 9:96969b1c6bde 73 0,
joshdavy 9:96969b1c6bde 74 // Initial Position
joshdavy 9:96969b1c6bde 75 {12,10},
joshdavy 9:96969b1c6bde 76 // Goal
joshdavy 9:96969b1c6bde 77 {75,19}
joshdavy 9:96969b1c6bde 78 };
joshdavy 9:96969b1c6bde 79
joshdavy 9:96969b1c6bde 80 const LevelDefinition level_2 = {
joshdavy 9:96969b1c6bde 81 // Define Blocks
joshdavy 9:96969b1c6bde 82 {
joshdavy 9:96969b1c6bde 83 { {0,40},{84,45} },
joshdavy 9:96969b1c6bde 84 { {5,5}, {80,10} },
joshdavy 9:96969b1c6bde 85 { {30,20},{40,40} }
joshdavy 9:96969b1c6bde 86 },
joshdavy 9:96969b1c6bde 87 // Number Of Blocks
joshdavy 9:96969b1c6bde 88 3,
joshdavy 9:96969b1c6bde 89 // Moving Blocks
joshdavy 9:96969b1c6bde 90 {
joshdavy 9:96969b1c6bde 91
joshdavy 9:96969b1c6bde 92 },
joshdavy 9:96969b1c6bde 93 // Number Of Moving blocks
joshdavy 9:96969b1c6bde 94 0,
joshdavy 9:96969b1c6bde 95 // Initial Position
joshdavy 9:96969b1c6bde 96 {12,30},
joshdavy 9:96969b1c6bde 97 // Goal
joshdavy 9:96969b1c6bde 98 {76,29}
joshdavy 9:96969b1c6bde 99 };
joshdavy 9:96969b1c6bde 100
joshdavy 9:96969b1c6bde 101 const LevelDefinition level_3 = {
joshdavy 9:96969b1c6bde 102 // Define Blocks
joshdavy 9:96969b1c6bde 103 {
joshdavy 9:96969b1c6bde 104 { {0,40},{84,45} },
joshdavy 9:96969b1c6bde 105 { {5,5}, {70,10} },
joshdavy 9:96969b1c6bde 106 { {30,20},{40,40} },
joshdavy 9:96969b1c6bde 107 { {50,10},{60,30} },
joshdavy 9:96969b1c6bde 108 { {70,20},{80,40} }
joshdavy 9:96969b1c6bde 109 },
joshdavy 9:96969b1c6bde 110 // Number Of Blocks
joshdavy 9:96969b1c6bde 111 5,
joshdavy 9:96969b1c6bde 112 // Moving Blocks
joshdavy 9:96969b1c6bde 113 {
joshdavy 9:96969b1c6bde 114
joshdavy 9:96969b1c6bde 115 },
joshdavy 9:96969b1c6bde 116 // Number Of Moving blocks
joshdavy 9:96969b1c6bde 117 0,
joshdavy 9:96969b1c6bde 118 // Initial Position
joshdavy 9:96969b1c6bde 119 {12,30},
joshdavy 9:96969b1c6bde 120 // Goal
joshdavy 9:96969b1c6bde 121 {72,9}
joshdavy 9:96969b1c6bde 122 };
joshdavy 9:96969b1c6bde 123 const LevelDefinition level_4 = {
joshdavy 9:96969b1c6bde 124 // Define Blocks
joshdavy 9:96969b1c6bde 125 {
joshdavy 10:58cf89dd878c 126 { {4,8}, {60,10} },
joshdavy 9:96969b1c6bde 127 { {50,10},{60,30} },
joshdavy 9:96969b1c6bde 128 { {20,22},{50,30} },
joshdavy 10:58cf89dd878c 129 { {0,0}, {5,10} },
joshdavy 10:58cf89dd878c 130 { {5,40}, {58,50} }
joshdavy 9:96969b1c6bde 131
joshdavy 9:96969b1c6bde 132 },
joshdavy 9:96969b1c6bde 133 // Number Of Blocks
joshdavy 9:96969b1c6bde 134 5,
joshdavy 9:96969b1c6bde 135 // Moving Blocks
joshdavy 9:96969b1c6bde 136 {
joshdavy 9:96969b1c6bde 137
joshdavy 9:96969b1c6bde 138 },
joshdavy 9:96969b1c6bde 139 // Number Of Moving blocks
joshdavy 9:96969b1c6bde 140 0,
joshdavy 9:96969b1c6bde 141 // Initial Position
joshdavy 9:96969b1c6bde 142 {12,0},
joshdavy 9:96969b1c6bde 143 // Goal
joshdavy 9:96969b1c6bde 144 {30,11}
joshdavy 9:96969b1c6bde 145 };
joshdavy 9:96969b1c6bde 146 const LevelDefinition level_5 = {
joshdavy 9:96969b1c6bde 147 // Define Blocks
joshdavy 9:96969b1c6bde 148 {
joshdavy 9:96969b1c6bde 149 { {30,8}, {60,10} },
joshdavy 9:96969b1c6bde 150 { {40 ,20 },{ 70 ,22 } },
joshdavy 9:96969b1c6bde 151 { {30,30}, {60,32} },
joshdavy 9:96969b1c6bde 152 { {0 ,40 },{ 70 ,42 } },
joshdavy 9:96969b1c6bde 153
joshdavy 9:96969b1c6bde 154 { {70,0},{72,42} },
joshdavy 9:96969b1c6bde 155 { {28,0},{30,32} },
joshdavy 9:96969b1c6bde 156
joshdavy 9:96969b1c6bde 157 {{0,14},{10,40} },
joshdavy 9:96969b1c6bde 158 {{0,0},{30,2}},
joshdavy 9:96969b1c6bde 159 },
joshdavy 9:96969b1c6bde 160 // Number Of Blocks
joshdavy 9:96969b1c6bde 161 8,
joshdavy 9:96969b1c6bde 162 // Moving Blocks
joshdavy 9:96969b1c6bde 163 {
joshdavy 9:96969b1c6bde 164
joshdavy 9:96969b1c6bde 165 },
joshdavy 9:96969b1c6bde 166 // Number Of Moving blocks
joshdavy 9:96969b1c6bde 167 0,
joshdavy 9:96969b1c6bde 168 // Initial Position
joshdavy 9:96969b1c6bde 169 {30,0},
joshdavy 9:96969b1c6bde 170 // Goal
joshdavy 9:96969b1c6bde 171 {1,3}
joshdavy 9:96969b1c6bde 172 };
joshdavy 9:96969b1c6bde 173
joshdavy 9:96969b1c6bde 174 const LevelDefinition level_6 = {
joshdavy 9:96969b1c6bde 175 // Define Blocks
joshdavy 9:96969b1c6bde 176 {
joshdavy 9:96969b1c6bde 177 {{1,20},{12,48}},
joshdavy 9:96969b1c6bde 178 {{12,26},{22,36}},
joshdavy 9:96969b1c6bde 179 {{77,28},{84,48}},
joshdavy 9:96969b1c6bde 180 },
joshdavy 9:96969b1c6bde 181 // Number Of Blocks
joshdavy 9:96969b1c6bde 182 3,
joshdavy 9:96969b1c6bde 183 // Moving Blocks
joshdavy 9:96969b1c6bde 184 {
joshdavy 9:96969b1c6bde 185 {1,false,55}, //55
joshdavy 9:96969b1c6bde 186 },
joshdavy 9:96969b1c6bde 187 // Number Of Moving blocks
joshdavy 9:96969b1c6bde 188 1,
joshdavy 9:96969b1c6bde 189 // Initial Position
joshdavy 9:96969b1c6bde 190 {0,10},
joshdavy 9:96969b1c6bde 191 // Goal
joshdavy 9:96969b1c6bde 192 {77,17}
joshdavy 9:96969b1c6bde 193 };
joshdavy 9:96969b1c6bde 194
joshdavy 9:96969b1c6bde 195
joshdavy 9:96969b1c6bde 196 const LevelDefinition level_7 = {
joshdavy 9:96969b1c6bde 197 // Define Blocks
joshdavy 9:96969b1c6bde 198 {
joshdavy 9:96969b1c6bde 199 {{1,34},{12,48}},
joshdavy 9:96969b1c6bde 200 {{12,38},{22,48}},
joshdavy 9:96969b1c6bde 201 {{32,0},{42,10}},
joshdavy 11:db27d3838514 202 {{77,30},{84,48}},
joshdavy 9:96969b1c6bde 203 },
joshdavy 9:96969b1c6bde 204 // Number Of Blocks
joshdavy 9:96969b1c6bde 205 4,
joshdavy 9:96969b1c6bde 206 // Moving Blocks
joshdavy 9:96969b1c6bde 207 {
joshdavy 9:96969b1c6bde 208 {1,true,25},
joshdavy 9:96969b1c6bde 209 {2,false,25},
joshdavy 9:96969b1c6bde 210 },
joshdavy 9:96969b1c6bde 211 // Number Of Moving blocks
joshdavy 9:96969b1c6bde 212 2,
joshdavy 9:96969b1c6bde 213 // Initial Position
joshdavy 9:96969b1c6bde 214 {0,20},
joshdavy 9:96969b1c6bde 215 // Goal
joshdavy 11:db27d3838514 216 {77,19}
joshdavy 9:96969b1c6bde 217 };
joshdavy 9:96969b1c6bde 218
joshdavy 10:58cf89dd878c 219 const LevelDefinition level_8 = {
joshdavy 10:58cf89dd878c 220 // Define Blocks
joshdavy 10:58cf89dd878c 221 {
joshdavy 10:58cf89dd878c 222 {{10,10},{64,14}},
joshdavy 10:58cf89dd878c 223 {{20,0},{22,14}},
joshdavy 10:58cf89dd878c 224
joshdavy 10:58cf89dd878c 225 {{0,40},{10,44}},
joshdavy 10:58cf89dd878c 226
joshdavy 10:58cf89dd878c 227
joshdavy 10:58cf89dd878c 228 {{20,20},{24,48}},
joshdavy 10:58cf89dd878c 229 {{36,14},{40,32}},
joshdavy 10:58cf89dd878c 230 {{50,20},{54,48}},
joshdavy 10:58cf89dd878c 231 {{60,14},{64,32}},
joshdavy 10:58cf89dd878c 232
joshdavy 10:58cf89dd878c 233 {{66,0},{84,2}},
joshdavy 10:58cf89dd878c 234
joshdavy 10:58cf89dd878c 235 },
joshdavy 10:58cf89dd878c 236 // Number Of Blocks
joshdavy 10:58cf89dd878c 237 8,
joshdavy 10:58cf89dd878c 238 // Moving Blocks
joshdavy 10:58cf89dd878c 239 {
joshdavy 10:58cf89dd878c 240 {2,false,70},
joshdavy 10:58cf89dd878c 241 },
joshdavy 10:58cf89dd878c 242 // Number Of Moving blocks
joshdavy 10:58cf89dd878c 243 1,
joshdavy 10:58cf89dd878c 244 // Initial Position
joshdavy 10:58cf89dd878c 245 {10,0},
joshdavy 10:58cf89dd878c 246 // Goal
joshdavy 10:58cf89dd878c 247 {24,-1}
joshdavy 10:58cf89dd878c 248 };
joshdavy 10:58cf89dd878c 249
joshdavy 10:58cf89dd878c 250 const LevelDefinition level_9 = {
joshdavy 10:58cf89dd878c 251 // Define Blocks
joshdavy 10:58cf89dd878c 252 {
joshdavy 10:58cf89dd878c 253 {{0,30},{10,48}},
joshdavy 10:58cf89dd878c 254 {{10,44},{18,48}},
joshdavy 10:58cf89dd878c 255 {{24,44},{84,48}},
joshdavy 10:58cf89dd878c 256 {{12,10},{20,14}},
joshdavy 10:58cf89dd878c 257 {{2,0},{18,4}}
joshdavy 10:58cf89dd878c 258
joshdavy 10:58cf89dd878c 259
joshdavy 10:58cf89dd878c 260
joshdavy 10:58cf89dd878c 261 },
joshdavy 10:58cf89dd878c 262 // Number Of Blocks
joshdavy 10:58cf89dd878c 263 4,
joshdavy 10:58cf89dd878c 264 // Moving Blocks
joshdavy 10:58cf89dd878c 265 {
joshdavy 10:58cf89dd878c 266 {4,false,30},
joshdavy 10:58cf89dd878c 267 },
joshdavy 10:58cf89dd878c 268 // Number Of Moving blocks
joshdavy 10:58cf89dd878c 269 1,
joshdavy 10:58cf89dd878c 270 // Initial Position
joshdavy 10:58cf89dd878c 271 {10,30},
joshdavy 10:58cf89dd878c 272 // Goal
joshdavy 10:58cf89dd878c 273 {84,48}
joshdavy 10:58cf89dd878c 274 };
joshdavy 10:58cf89dd878c 275