C++ 精灵不显示我希望它们显示的方式
我正在制作一个SFML游戏,我想把屏幕上同时出现的子弹数量限制在5颗 这是所需的最少代码: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
#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,你在同一个位置产生了所有的子弹,对吗?他们不是在一起画的吗?哦,谢谢,我才意识到。