C++ 精灵不显示我希望它们显示的方式

C++ 精灵不显示我希望它们显示的方式,c++,pointers,memory-management,sfml,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::isButto

我正在制作一个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);
}
#定义显示的最大项目符号数5
//...
Bullet*pociski[显示最大子弹数];
//...
对于(int i=0;i<5;i++)
{
波西斯基[i]=0;
}
//...
//在需要时创建项目符号
if(sf::Mouse::isButtonPressed(sf::Mouse::Left))
{
对于(int i=0;i<5;i++)
{
if(pociski[i]==0)
{
pociski[i]=新项目符号(“pocisk.png”,sf::Mouse::getPosition().x,sf::Mouse::getPosition().y,23,20);
}
}
}
//...
//展示
对于(int i=0;i<5;i++)
{
如果(pociski[i]!=0)窗口绘制(pociski[i]->sprite);
}

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

所有项目符号都在同一位置生成,因此它们是在彼此的顶部绘制的

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

首先,你有一个内存泄漏。您需要删除使用
new
创建的对象。那就请Clarify你到底有什么问题。出了什么问题?您期望什么?我现在不需要删除使用new创建的对象,因为我将它们限制为最多5个,并且每当子弹击中某个对象时,这些对象都将被删除@K.KirszOk,你在同一个位置产生了所有的子弹,对吗?他们不是在一起画的吗?哦,谢谢,我才意识到。