Another challenge solution of looping through the hazards with for loop

To not use the magic numbers when iterating array, we can initialize the array using standard c++ library.

First we need to include the array on top of the file:

#include <array>

When initializing the array we need to reference it a little bit differently when choosing this approach:

std::array<AnimData, 5> nebulae;

This creates an array of 5 elements of type AnimData called nebulae.

And then we can get the size of the array in for loops like this:

for (int i = 0; i < (int)nebulae.size(); i++)

Notice that I have casted the size of nebulae to integers, because the function returns type long which is a lot bigger number type compared to integer.

And when we will initialize the different positions of nebulae, we can use a new for loop instead of adding those manually. EDIT: Just went through the next video where this will be a bonus challenge, so don’t check this if you haven’t watched it!

nebulae[0].pos.x = windowDimensions[0];

// index i starts at 1 this time!
for (int i = 1; i < (int)nebulae.size(); i++)
{
  nebulae[i].pos.x = nebulae[i - 1].pos.x + 300;
}

Here I’ll get the previous nebula’s position decrementing the index value by 1.

There is an even simpler solution to include the pos.x values in the for loop. (I haven’t seen the next video so it might the solution, use by Stephen, for the bonus challenge)

It is one line of code in the for loop:

nebulae[i].pos.x = windowDimensions[0] + i * 300;

Privacy & Terms