2012-11-29 2 views
1

C++로 타이머를 만들고 사용자가 버튼을 누르면 프로그램은 눌려진 버튼의 이름과 눌린 시간을 배열에 기록합니다.타이머를 C++의 배열에 저장

나중에 사용자가 수행 한 작업을 '재생할'수 있기를 원합니다. 타이머를 시작하고 배열에 정확하게 기록 된 시간에 버튼을 누르면 시뮬레이션이 가능합니다.

어디에서 시작하는 것이 가장 좋을까요? C++에서 타이머 함수가 있습니까?

+0

타임 스탬프입니다. 나는 그걸 어떻게 돌려야 하죠? – panthro

+0

죄송합니다. 나는 당신의 질문을 오해했다고 생각합니다. – axiom

답변

0

How to get current time and date in C++?에 대한 답변보기 C++에서 시간에 대한 표준 라이브러리는 대답은 언급으로 사용 부스트는보다 현대 날짜 시간 API를 원하는 경우 C.에서 오는 ctime이있다 http://www.boost.org/doc/libs/1_52_0/doc/html/date_time/date_time_io.html

당신이

struct ButtonEvent{ 
    EventInfo ei; 
    std::chrono::milliseconds time_stamp; 

}; 

struct Recorder{ 
    std::chrono::steady_clock::time_point start_time_; 


    std::deque<ButtonEvent> events_; 

void StartRecording(){ 
    start_time_ = std::chrono::steady_clock::now(); 
} 

    void HandleEvent(EventInfo e){ 
     ButtonEvent be; 
     be.time_stamp = std::chrono::duration_cast<std::chrono::milliseconds>(std::chrono::steady_clock::now() - start_time_); 
     be.ei = e; 
     events_.push_back(be); 
    } 

    void Playback(){ 
     std::chrono::steady_clock::time_point 
     playback_time =std::chrono::steady_clock::now() ; 
     while(events_.size()){ 
       std::chrono::milliseconds ts = 
       std::chrono::duration_cast<std::chrono::milliseconds>(std::chrono::steady_clock::now() - playback_time); 
      if(events_.front().time_stamp <= ts){ 
      EventInfo e = events_.front().ei; 
      // playback the event 
      //... 

      events_.pop_front(); 
     } 

     // Some kind of sleep if you want 

    } 


} 

} 같은 뭔가를 할 수

1

;

여기서 EventInfo는 이벤트를 재생하는 데 필요한 정보가있는 구조입니다.