2017-07-07 25 views
-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); 
} 

私はポインタに問題があると思います。いずれかの箇条書きは表示でき、残りはクリックしても表示されません。例外はスローされず、メモリは正常です。

+0

まず、メモリリークが発生しています。 'new'で作成したオブジェクトを削除する必要があります。それ以外は、あなたが何を問題にしているのかを嘆く。何が間違っていて、何を期待しましたか? –

+0

新しく作成されたオブジェクトを削除する必要はありません。なぜなら、最大5個に制限されているだけで、オブジェクトが何かヒットするたびに削除されるからです。 @ K.Kirsz – IMakeBestGameCrashes

+0

あなたは同じ姿勢ですべての弾丸を発射しますか?彼らはちょうどお互いの上に描かれていませんか? –

答えて

0

すべての弾丸は同じ位置にスポーンされているため、互いに上に描画されます。

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