2016-07-03 6 views
-1
int moveDown = 10; 
int moveRight = 10; 

    for (int i = 0; i < 5; i++) { 
     for (int j = 0; j < 10; j++) { 
      xEnemies[j].drawEnemy(window); 
      xEnemies[j].setPos(sf::Vector2f(moveRight, moveDown)); 
      moveRight += 50; 
     } 
     moveDown += 50; 
    } 

こんにちは皆さん、ここで私はループとベクターで画面に敵を描こうとしています。私はプレイヤーに敵を破壊することができるようにしたい、しかし、敵が破壊されるたびに、敵はちょうど(isOpen())ループの下にあるので、再度描画されます。だから私の質問です:このループの外にオブジェクトを描画する方法はありますか?C++ SFML while(window.isOpen())ループの外側のオブジェクトを描画します

+1

破壊されたものを描画しませんか? – immibis

答えて

2

1回限りのアクションとして描画操作を考えるのをやめてください。これは紙のようには機能しません。一度描いた後、消去するまではそこにあります。コンピュータでは、グラフィックスが1秒間に複数回消去され、その都度、の再描画にジョブが送信されます。これは、グラフィックフレームワークと最新のグラフィックカードがどのように機能するかです。

あなたのすべての図は、あなたのゲームのループに入るためにが必要です。

代わりに必要なのは、敵が破壊された場合に設定される敵クラスのブーリアンフラグです。あなたがしたくない場合は、ifをループに入れ、破壊されたものを描画しないでください。あるいは、破壊された敵をxEnemiesベクターから完全に削除することもできます。

関連する問題