首页 > 解决方案 > 在不同位置渲染相同精灵的数组

问题描述

我正在尝试重新创建 Space Invaders,但无法让我的入侵者精灵连续显示而不是彼此重叠显示。我有一个名为 Sprite 的 STRUCT,其中包含 x 位置、y 位置、宽度、高度和颜色,我将这些信息传递给一个自定义函数来绘制精灵。如果我只是创建一个精灵,一切都会工作。但我想创建多个(例如 5 个用于测试目的)。因此,我创建了一个 Sprite 结构的数组,并在 For 循环中尝试更改数组中每个元素的 x 位置,然后使用自定义函数在循环的每次迭代中绘制数组的元素,但对于某些原因我没有得到正确的结果。我可以在调试器中看到 x 位置实际上正在改变,但我认为一切仍然相互叠加。

struct INVADER
{
    int xPos = 100;
    int yPos;
    int width;
    int height;
    D3DCOLOR color;

    INVADER()
    {
        xPos; 
        yPos;
        width = 64;
        height = 64;
        color = D3DCOLOR_XRGB(255, 255, 255);
    }

};


INVADER invaderArmy[5];

    for (int index = 0; index < 5; index++)
    {
        //invaderArmy->xPos = 100;

        invaderArmy[index].xPos *= index;

        Draw_And_Rotate_Sprite(invaderImage, invaderArmy[index].xPos);

    }

标签: c++for-loopsprite

解决方案


我只是在这里写信,因为我没有 50 个代表发表评论。

Draw_And_Rotate_Sprite()被调用函数的参数不应该invaderArmy[index]代替invaderArmy[index].xPos吗?

在提供的代码中也没有我可以看到的问题。请告诉我们Draw_And_Rotate_Sprite()函数定义。


推荐阅读