2012-06-29 2 views
2

나는 잘 설명하는 방법을 모르지만, 시도 할 것입니다 ... 예를 들어, 어떤 게임에서는 텍스트 출력이 "천천히"이며, 차례로 문자를 쓰고, 한 번에 모든 문구가 아니라 ... 그렇다면이 동작을 어떻게 복제 할 수 있습니까?"느린"출력

나는 이렇게 생각한다 ... 나는 루프를 수행 할 수 있으며 1 밀리 초 동안 char 및 usleep을 작성하고 char 및 usleep을 작성하는 등 다른 방법이있다. 또는 이것이 유일한/가장 좋은 방법/간단한 방법으로이 트릭을 구현할 수 있습니까? 나는 C++로 이것을하려고 노력하고있다. 그러나 다른 제안은 환영 받는다.

+1

당신은 당신이 설명 일을하는 데 도움이되는 클래스를 만들 수 있습니다. 그런 다음 쉽게 다시 사용할 수 있습니다. – chris

+0

게임의 메인 루프가 있습니까? 이 경우, 일반적으로 시간 참조를 가질 수 있습니다. 귀하 또는 실제 시계를 기반으로합니다. – Salepate

답변

0

그렇습니다. usleep은 해결책이지만, 스레드를 사용해야합니다. 그렇지 않으면 게임 속도가 느려집니다. 시각적으로 1ms가 충분하지 않을 수도 있습니다. 나는 당신이보기 위하여 약간 시험을 한 ㄴ다는 것을 건의한다.

출력은? 터미널에서 만든거야? 그렇다면 어쩌면 용어 용량을 사용할 수도 있습니다.

편집 : 시계도 사용할 수 있습니다!

+0

출력이 텍스트 영역에있을 것입니다 ... 시계를 사용한다는 것은 무엇을 의미합니까? – user1466609

+0

당신이 루프에 있고 (sleep() 호출과 같은 performance dependante가 아닌) 정확한 멈춤을 원한다면, 1 초를 말하면 clock()이나 ctime()을 첫 번째 문자로 출력 한 다음 ellapsed 문은 if 문을 사용하여 1 초에 도달하면 다른 문자를 인쇄하고 시계/시간 등을 다시 초기화합니다. – Maresh

0

텍스트를 업데이트하기 위해 별도의 스레드를 사용하면 나에게 묻는다면 다소 자원 낭비가 될 수 있습니다. 이 방법은 1 초 동안 화면에 표시되는 문자 수를 정의한 다음 텍스트를 마지막으로 업데이트 한 이후로 밀리 초 수를 계산하는 것이 좋습니다. 그런 다음 그 값

예를 곱 :

float charsPerSecond = 60/1000; 
float lastUpdated; 
... 
int nrChars = (int) (charsPerSecond * (currentTime - lastUpdated)); 
//output nrChars characters 
lastUpdated = currentTime; 
+0

덕분에, 나는이 방법을 시도 할 것이다. – user1466609