精灵没有显示我希望它们显示的方式

时间:2017-07-07 08:05:27

标签: c++ pointers memory-management sfml

我正在制作一个SFML游戏,我想将屏幕上同时存在的子弹数量限制为5个。

这是所需的最小代码:

#define max_bullets_displayed 5

//...

Bullet* pociski[max_bullets_displayed];

//...

for (int i = 0; i < 5; i++)
{
    pociski[i] = 0;
}

//...

//creating bullets when needed
if (sf::Mouse::isButtonPressed(sf::Mouse::Left))
{
    for (int i = 0; i < 5; i++)
    {
        if (pociski[i] == 0)
        {
            pociski[i] = new Bullet("pocisk.png", sf::Mouse::getPosition().x, sf::Mouse::getPosition().y, 23, 20);
        }
    }
}

//...

//displaying
for (int i = 0; i < 5; i++)
{
    if (pociski[i] != 0) window.draw(pociski[i]->sprite);
}

我认为指针有问题。只能显示其中一个项目符号,即使单击后其余项目也不会显示。没有抛出异常,内存也很好。

1 个答案:

答案 0 :(得分:0)

所有的子弹都在相同的位置产生,所以它们被绘制在一起。

pociski[i] = new Bullet("pocisk.png", sf::Mouse::getPosition().x, sf::Mouse::getPosition().y, 23, 20);