0

だから私は少し問題を抱えています-カオスゲームのアルゴリズムを理解し、3ポイントを獲得し、ピラミッド形式に設定しました。残りは簡単です。現在のポイントと 1 ~ 3 のランダムなロールを取り、ロールに応じて現在のポイントから a、b、または c のいずれかに移動するだけです。しかし、(赤で囲まれた図でわかるように)ポイントが正しくプロットされるのに問題がありますが、まっすぐ上に進みます。ピラミッドの頂点に向けて整列させるにはどうすればよいですか?

この (x,y,x,y) の 4 つのパラメーターを取得した GLine を使用する方が簡単でしょうか?

ここに画像の説明を入力

ここに画像の説明を入力

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 に答える