Josh Davy / Mbed OS Flip_OS_5

Dependencies:   el17jd

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