在c++中绘制填充立方体,崩溃,没有有用的错误可以跟踪

Drawing a filled cube in C++, crashes out, no useful error to trace

本文关键字:有用 错误 跟踪 崩溃 c++ 绘制 填充 立方体      更新时间:2023-10-16

好的,所以我跟随Chili的一组教程。我们的作业是为填充的立方体创建代码。我做了这个。然后我试着把它化简成一个函数。现在它编译没有错误,但当我试图运行它时崩溃了。这个东西我看了很久了,还是不知道哪里不对。我马上会把这个和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循环,请告诉我。

谢谢!

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

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++;
}

每次通过循环时都需要重置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);
    }
}

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