2017-05-28 16 views
2

SFMLをテストするためにこのプロジェクトを以前にセットアップしていたので、そのコードを削除し、私が作った別のプロジェクトのコードをコピー&ペーストしました(新しいソースファイルと2つの新しいヘッダ)。 コンパイルと起動後の古い動作の取得

しかし、私は私の新しいコードでそれを構築したら、私に気づかない何らかの理由で、それはまだSFMLテストを出力

...また

Screenshot

もし私クリック・ビルド - >クリーンソリューション、それは完全に私のプロジェクト全体を台無しにし、ビルドが成功したにもかかわらず何らかの理由で.exeファイルの生成を停止します。

物事は私がを試してみました:

  • すべてのファイルを削除し、それらを交換します。
  • ビジュアルスタジオを再起動します。
  • 他のコードを入力しても、同じ結果が得られます。

そのおそらく小さな問題..

EDIT:

int main() { 
sf::RenderWindow window; 

sf::Vector2i centerWindow((sf::VideoMode::getDesktopMode().width/2), (sf::VideoMode::getDesktopMode().height/2)); 

window.create(sf::VideoMode(900, 900), "JUMP TEST", sf::Style::Titlebar | sf::Style::Close); 
window.setPosition(centerWindow); 

window.setKeyRepeatEnabled(false); 

//Player Object:    
Player player({ 40, 40 }); 
player.setPos({ 50, 500 }); 

//Coin Objects: 
std::vector<Coin*> coinVec; 
Coin coin1({ 20, 20 }); 
Coin coin2({ 20, 20 }); 
coinVec.push_back(&coin1); 
coinVec.push_back(&coin2); 

coin1.setPos({ 150, 300 }); 
coin2.setPos({ 300, 300 }); 

//Score Objects: 
int score = 0; 
int wSize; 
sf::Font arial; 
arial.loadFromFile("arial.ttf"); 

std::ostringstream ssScore; 
ssScore << "Score: " << score; 

sf::Text lblScore; 
lblScore.setCharacterSize(30); 
lblScore.setPosition({ 10, 300 }); 
lblScore.setFont(arial); 
lblScore.setString(ssScore.str()); 

//Gravity Variables: 
const int groundHeight = 720; 
const float gravitySpeed = 1.0; 
bool isJumping = false; 
bool buttonPressed = false; 

//Main Loop: 
while (window.isOpen()) { 

    sf::Event Event; 

    const float jumpSpeed = 100.0f; 
    const float moveSpeed = 1.0f; 

    if (sf::Keyboard::isKeyPressed(sf::Keyboard::Right)) { 
     player.move({ moveSpeed, 0 }); 
    } 
    if (sf::Keyboard::isKeyPressed(sf::Keyboard::Left)) { 
     player.move({ -moveSpeed, 0 }); 
    } 

    //Event Loop: 
    while (window.pollEvent(Event)) { 
     switch (Event.type) { 

     case sf::Event::Closed: 
      window.close(); 

     case sf::Event::EventType::KeyPressed: 
      if (Event.key.code == sf::Keyboard::Key::Space) 
      { 
       isJumping = true; 
       buttonPressed = true; 
       player.move({ 0, -jumpSpeed }); 
      } 
      break; 
     case sf::Event::EventType::KeyReleased: 
      if (Event.key.code == sf::Keyboard::Key::Space) 
       isJumping = false; 
      break; 
     default: 
      break; 

     } 
    } 

    //Gravity Logic: 
    if (player.getY() < groundHeight && isJumping == false && buttonPressed == true) { 
    player.move({ 0, gravitySpeed }); 
    } 
    //Player Collision 
    if (player.getY() >= 500) 
    { 
     player.setPos({ player.getX(), 500 }); 
     isJumping = false; 
    } 

    //Coin Logic: 
    for (int i = 0; i < coinVec.size(); i++) { 
     if (player.isCollidingWithCoin(coinVec[i])) { 
      coinVec[i]->setPos({ 422234, 423432 }); 
      score++; 
      ssScore.str(""); 
      ssScore << "Score " << score; 
      lblScore.setString(ssScore.str()); 
     } 
    } 


    window.clear(); 
    coin1.drawTo(window); 
    window.draw(lblScore); 
    coin2.drawTo(window); 
    player.drawTo(window); 
    window.display(); 
} 

}

+0

私たちにスクリーンショットを表示するのではなく、メインループの実際のコードとして表示する必要があります。ビルドされたデバッグをコンパイルすることによって0に設定された初期化されていない値を使用している可能性があります。 – Mario

+0

実際にビルドすると思うものを実際に構築していますか?清潔で完全な再構築を試みてください。 –

+0

私はコードを追加しましたが、私は全く別のコードを入れようとしていましたが、それでも私は同じ結果を得ています。私がクリーンで完全な再構築を行うと、それは.exeを見つけることができず、私はプロジェクト全体を再び開始しなければならないと言います。 – Keano

答えて

2

あなたのスクリーンショットは、エラーを示します。あなたのプログラムはまったくビルドされませんでした。

Visual Studioでは、最後にコンパイルしたときから古いバージョンを実行するオプションが提供されます。私はこれがあなたがしていることだと思います。 しないはいを​​クリックします。あなたはこれを望まない。これが理にかなっていると誰が考えているか分かりません。

プログラムがエラーなしでコンパイルされていることを確認してください。正しいプログラムが表示されます。

+0

これは正解ですが、VSは、element1が自動的にintに変換されないため、浮動小数点型としてキャストする必要があることを伝えています。 Visual Studioは、キャッシュされ、どこかに保存された正しいビルドの最後のインスタンスを実行しています。 –

関連する問題