-1
私は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);
}
私はポインタに問題があると思います。いずれかの箇条書きは表示でき、残りはクリックしても表示されません。例外はスローされず、メモリは正常です。
まず、メモリリークが発生しています。 'new'で作成したオブジェクトを削除する必要があります。それ以外は、あなたが何を問題にしているのかを嘆く。何が間違っていて、何を期待しましたか? –
新しく作成されたオブジェクトを削除する必要はありません。なぜなら、最大5個に制限されているだけで、オブジェクトが何かヒットするたびに削除されるからです。 @ K.Kirsz – IMakeBestGameCrashes
あなたは同じ姿勢ですべての弾丸を発射しますか?彼らはちょうどお互いの上に描かれていませんか? –