2016-06-16 2 views
1

Я работаю над небольшой SFML-игрой на C++. То, что я пытаюсь сделать, - начать игру с вводного текста, который мигает двумя разными цветами, например, «Arturo Girona Presents». Я заставил его работать, используя счетчик, который увеличивался внутри цикла while (window.isOpen()), но затем я попытался использовать sf :: Clock, чтобы убедиться, что это проблесковый взгляд менее случайный. Однако по какой-то причине часы сохраняют сброс после каждого цикла, когда я тоже не сказал об этом явно, поэтому он не переходит с текстового экрана. Как синхронизация часов сама по себе и как ее исправить? Вот мое время цикла:Почему мой sf :: Clock в SFML перезагружается сам по себе?

int count = 0; 
sf::Clock clock; 
int timer = clock.getElapsedTime().asMilliseconds(); 

while (window.isOpen()) 
{ 
    count++; 
    sf::Event event; 
    while (window.pollEvent(event)) 
    { 
     if (event.type == sf::Event::Closed) 
      window.close(); 
    } 

    window.clear(); 
    while (timer < 5000) 
    { 
     if (timer < 200 && introText1.getColor() == sf::Color::Red) 
     { 
      introText1.setColor(sf::Color::White); 
      window.draw(introText1); 
      window.display(); 
     } 

     if (timer < 200 && introText1.getColor() == sf::Color::White) 
     { 
      introText1.setColor(sf::Color::Red); 
      window.draw(introText1); 
      window.display(); 
     } 
     break; 
    } 
    if (timer == 5000) { 
     window.clear(); 
     window.draw(door); 
     window.draw(doorWindow1); 
     window.display(); 
    } 

    cout << timer << endl; 
    if (timer > 0) 
     cout << "Time is moving" << endl; 
} 
+0

Есть ли 'cout << таймер << endl;' продолжать показывать тот же номер? Кажется, вы ничего не изменили в петле – doctorlove

ответ

3

Часы не сбрасывается, вы просто никогда не читали новое значение. ;-)

Переместить int timer = clock.getElapsedTime().asMilliseconds(); внутри основной петли.

Кроме того, вы не хотите, чтобы петля while (timer < 5000) особенно с break в качестве последнего утверждения.

+0

Спасибо! Перемещение этой линии решило мою проблему, но мне пришлось бы держать перерыв; или программа перестает отвечать на запросы, когда я запускаю ее. –

+1

@ArturoGirona: с этим перерывом там ваше 'while' эффективно' if'. Он вообще не зацикливается. Это ваше намерение? –

Смежные вопросы