著名的文本滚动效果已经在 * 许多 * 游戏中使用,我的意思是许多基于控制台的RPG游戏。
作为一个新手,我有点想自己做一个项目来提高我的C++技能,* 然而 ,我被困在了某个地方。
你看,当一串文本在滚动时,玩家最终会感到无聊,想跳过这些文本。发生的事情是,当玩家按下某个键时,文本停止滚动( 滚动的意思是吐出索引为i
的字符串中的字符,稍微延迟 *),它会立即吐出所有内容。
这正是我试图复制的效果。
这是我目前使用的(没有跳过效果):
for(int i = 0; i<text.length();i++)
{
std::cout << text[i];
Sleep(200);//WINAPI function for timeout. DWORD Milliseconds as argument
}
我想要的是:
for(int i = 0; i<text.length();i++)
{
std::cout << text[i];
if(GetAsyncState(VK_RETURN)
{
continue;
}
else{
Sleep(200);//WINAPI function for timeout. DWORD Milliseconds as argument
}
}
- 这是非常新手的代码,所以请不要批评我。*
所以我用我的问题来结束这段闹剧:
如何停止文本流的延迟,并使其一次输出。
祝你愉快!
1条答案
按热度按时间vwhgwdsa1#
要停止文本流并使其立即输出,您可以使用布尔变量跟踪文本是否仍在滚动。在for循环中,您可以检查播放器是否按下了应停止文本滚动的键。如果播放器按下了该键,您可以将布尔变量设置为false以指示文本应停止滚动。然后,您可以继续输出字符串中的其余字符,而不会有任何延迟,因为文本不再滚动。
下面是一个如何实现这一点的示例:
这个程式码会持续输出字串中的每个字符,但会有一段延迟,直到播放程式按下按钮停止卷动文字为止。当播放程式按下按钮时,文字会停止卷动,而字串中的剩馀字符会毫无延迟地输出。