所以我遇到了一些麻烦 - 我理解混沌游戏的算法,得到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;
}
答案 0 :(得分:1)
您没有更改x位置。您可以通过计算起点和终点(金字塔顶部)之间的直线的反斜率来实现此目的。
只需使用:
float inverseSlope = (xTop - xLeft) / (yTop - yLeft);
然后你对x位置的计算将是:
xPosition = (yPosition * inverseSlope) + xLeft; //xLeft being your start position
这当然没有你的变数,但我希望你能得到这个想法。