0

所以我遇到了一点麻烦 - 我了解混沌游戏的算法,得到 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;

}

4

1 回答 1

1

你没有改变你的 x 位置。您可以通过计算起点和终点(金字塔顶部)之间的线的反斜率来做到这一点。

只需使用类似的东西:

float inverseSlope = (xTop - xLeft) / (yTop - yLeft);

那么您对 ​​x 位置的计算将是:

xPosition = (yPosition * inverseSlope) + xLeft; //xLeft being your start position

当然,这没有你的变量,但我希望你明白这一点。

于 2012-11-11T23:52:37.037 回答