Так что у меня возникли небольшие проблемы — я понимаю алгоритм игры хаос, получил 3 очка, настроенный в форме пирамиды. Все остальное легко, просто возьмите текущую точку и случайный бросок 1-3 и переместитесь на полпути от текущей точки к a, b или c, в зависимости от броска. Но я испытываю затруднения с (как вы можете видеть на рисунке, обведенном красным) точками, которые изображены правильно, но просто идут прямо вверх. Как мне заставить его выровняться к вершине пирамиды?
Может быть, проще использовать GLine, который получил четыре параметра для этого (x, y, x, y)?
double playGame(double newPointX, double &newPointY, GWindow &display)
{
int roll = randomInteger(DICE_LOW, DICE_HIGH);
// WEST
if (roll == 1) {
}
// EAST
else if (roll == 2) {}
// NORTH
else if (roll == 3 && newPointY > LIMIT) {
display.drawOval(newPointX,
POINT_NORTH + (newPointY / 2),
1, 1);
newPointY = (newPointY / 2);
cout << newPointY << endl;
return newPointX;
}
return NULL;
}
Вы не меняете свою позицию х. Вы можете сделать это, рассчитав обратный наклон линии между начальной точкой и конечной точкой (вершиной пирамиды).
Просто используйте что-то вроде:
float inverseSlope = (xTop - xLeft) / (yTop - yLeft);
Тогда ваш расчет для позиции х будет:
xPosition = (yPosition * inverseSlope) + xLeft; //xLeft being your start position
Конечно, это без ваших переменных, но я надеюсь, что вы поняли идею.
Других решений пока нет …