Я занимаюсь обучением C ++, которое учит языку в процессе разработки игр. В этом уроке есть фрагмент кода, который я не понимаю, как он работает.
Сначала объявляется класс enum и инициализируется массив:
enum class side {LEFT,RIGHT, NONE};
side branchPositions[NUM_BRANCHES]; / which is a const variable and has the value of 6
В основной функции у меня есть этот код:
for (int i = 0; i < NUM_BRANCHES; i++)
{
float height = i * 150;
if (branchPositions[i] == side::LEFT)
{
branches[i].setPosition(610, height);
branches[i].setRotation(180);
}
else if (branchPositions[i] == side::RIGHT)
{
branches[i].setPosition(1330, height);
branches[i].setRotation(0);
}
else
{
branches[i].setPosition(3000, height);
}
}
Что он делает, обновляет положение ветвей спрайтов.
При выполнении кода я получаю следующий результат: ![example 1](https://i.stack.imgur.com/pvCPI.png)
После добавления следующей функции и вызова
void updateBranches(int seed)
{
for (int j = NUM_BRANCHES - 1; j > 0; j--)
{
branchPositions[j] = branchPositions[j - 1];
}
srand((int)time(0) + seed);
int r = (rand() % 2);
switch (r)
{
case 0:
branchPositions[0] = side::LEFT;
break;
case 1:
branchPositions[0] = side::RIGHT;
break;
default:
branchPositions[0] = side::NONE;
break;
}
}
ветки распределяются случайным образом, например так: ![enter image description here](https://i.stack.imgur.com/73OOm.png)
Теперь я не понимаю, почему это так. Я понимаю, почему ветвь в позиции 0 либо слева, справа или не видна из-за оператора switch. Но я не понимаю, как for l oop в функции взаимодействует с массивом и почему это приводит к поведению, показанному на рисунке 2.
Я также не понимаю, какие значения хранятся в массиве и какова связь с классом enum.
Может кто-нибудь уточнить? Спасибо