0

わかりましたので、Chili による一連のチュートリアルに従っています。宿題は、塗りつぶされた立方体のコードを作成することでした。これは私がしました。次に、関数のためにそれを単純化するために真似しました。エラーなしでコンパイルできるようになりましたが、実行しようとするとクラッシュします。私はこのことを長い間見てきましたが、何が悪いのかわかりません。私はこれを一瞬チリのものと比較します. しかし、私はここで新鮮な目を望んでいました. 起こっていることは、まったく意味のない曖昧で奇妙な C++ の法則の 1 つだと思います。しかし、ここで論理エラーが発生する可能性があります。

関数からコードを取り出して、通常の C++ ステートメントに戻したことに注意してください。ここにあります:

int xN = 200;
int yN = 100;
int xP = 600;
int yP = 500;

while(xN <= xP)
{
    while(yN <= yP)
    {
        gfx.PutPixel(xN, yN, 100, 150, 255);
        xN++;
    }
    yN++;
}

私はあなたの助けに感謝します!

アップデート!OK、コードを修正しました。xP と yP の 2 つのユーザー変数 (定数値) を作成しました。以前は塗りつぶされた立方体を描いていませんでした。そのスコープまたは何かが問題であることが判明しました。ループの外で 2 つの変数を宣言しても、何も起こりません。使用されているループのすぐ外側でそれぞれを宣言した場合にのみ、機能します。だから今、私は何とかこれを関数に戻さなければなりません...

int xN = 200;
while(xN <= xP)
{
    int yN = 100;
    while(yN <= yP)
    {
        gfx.PutPixel(xN, yN, 100, 150, 255);
        yN++;
    }
    xN++;
}

OK、他の誰かが知りたい場合は、これが私の関数の作成方法です(2つ必要であることがわかりました):

void Game::DrawCubeX(int xN, int yN)
{
while(xN <= xP)
{
    gfx.PutPixel(xN, yN, 100, 150, 255);
    xN++;
}
}

void Game::DrawCubeY(int xN, int yN)
{
while(yN <= yP)
{
    gfx.PutPixel(xN, yN, 100, 150, 255);
    DrawCubeX(xN, yN);
    yN++;
}
}

何らかの理由でループをネストすることはできません。while ループでこれを行うためのより優れた、またはよりエレガントな方法があれば、私に知らせてください。

ありがとうございました!

4

4 に答える 4