0

好的,所以我正在关注 Chili 的一组教程。我们的作业是为填充的立方体创建代码。我这样做了。然后我真的为一个函数简化了它。现在它编译没有错误,但是当我尝试运行它时崩溃。我看了这个东西很久了,不知道哪里出了问题。我将暂时将其与辣椒进行比较。但我希望在这里有一双新的眼睛。我认为正在发生的事情是另一个完全没有意义的晦涩和奇怪的 C++ 法则。但这里可能存在逻辑错误。

请注意,我从函数中获取代码并将其转换回正常的 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++;
}

我感谢您的帮助!

更新!好的,我修复了我的代码。为 xP 和 yP 创建了两个用户变量(常数值)。以前没有画一个填充的立方体。事实证明,范围或其他东西是问题所在。如果我在循环之外声明这两个变量,则不会发生任何事情。只有当我在使用它的循环之外声明每一个时,它才会起作用。所以现在我必须以某种方式把它变成一个函数......

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

好的,所以如果其他人想知道这就是我制作函数的方式(结果我需要两个):

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

0

xN++应替换为yN++。换句话说,代码应该是:

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);
        yN++;
    }
    xN++;
}

希望这有效。

于 2013-06-07T04:33:42.053 回答
0

在内部while循环中,它应该yN ++;在外部while循环中,它应该是xN++

于 2013-06-07T04:23:05.687 回答
0

好吧,我认为它在内部 while 循环中。循环永远不会终止,因为条件(yN<=yP)总是发生trueyN++应该在内部循环中,因此在循环结束时变量增加yN++并且yN循环在yNis时终止> yP

于 2013-06-07T04:27:39.943 回答
0

y每次循环都需要重置:

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

for(int x = xN; x <= xP; ++x)
{
    for(int y = yN; y <= yP; ++y)
    {
        gfx.PutPixel(x, y, 100, 150, 255);
    }
}
于 2013-06-07T04:45:08.760 回答