2012-06-29 86 views
2

我有一个问题,我不知道如何解释,但我会尝试......例如,在一些游戏中,文本输出是“慢”,一个接一个地写char,而不是所有的短语在一次...所以,我怎么能复制这种行为?“减速”输出

我想这样...我可以做一个循环,并在那里我写一个字符,并休眠1毫秒,写一个字符和睡着,等等......有另一种方式,或者这是唯一/最佳/简单的方式我可以实现这个诀窍?我试图用C++来做到这一点,但也欢迎其他建议。

+1

你可以做一个类,它可以帮助你描述的内容。然后你可以轻松地重用它。 – chris

+0

你有游戏的主循环吗?如果是这种情况,你通常可以有一个时间参考,无论是你的还是基于一个真正的时钟 – Salepate

回答

0

嗯,是的,usleep是一个解决方案,但你应该线程它,否则它会减慢你的游戏。虽然1ms可能在视觉上不够。我建议你做一些测试才能看到。

输出?是在终端上制作的?如果是这样,也许你可以使用一些术语容量。

编辑:你可以使用一个时钟!

+0

输出将在文本区域...你是什么意思使用时钟? – user1466609

+0

承认你处于循环状态,并且你想要一个精确的暂停(不是像sleep()调用那样依赖性能),让我们说1sec,在打印的第一个字母处获得clock()或ctime(),然后比较使用if语句的过去时间,当它已经达到1秒时,你打印另一封信并重新初始化时钟,等等......我希望我已经清楚了。 – Maresh

0

如果你问我,使用一个单独的线程来更新一段文本会有点浪费资源。 我建议这样做的方法是定义一些字符,这些字符应该在一秒内显示在屏幕上,然后计算自上次更新文本以来的毫秒数。然后你乘以该值

例子:

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

谢谢,我会试试这种方式 – user1466609