[ad_1]
What I want to do is to output the text when there is a certain sentence and give it a specific time interval so that it is output as if typing.
This was handled by using the Sleep() function when printing a string.
However, when the space bar (or any key) is pressed while a sentence is being printed, I want the remaining sentences to be output at once without a time delay.
Because there are people who want to read text quickly.
(I’m making a text-based game.)
And from the next sentence, the string should be output with a time interval back to the original.
So, I wrote the code as below, but if I press the space bar once, all the sentences following it are printed at once without a time interval.
My guess is that once the spacebar is pressed, it works as if the spacebar is pressed continuously after that.
How can I solve this?
#include <stdio.h>
#include <Windows.h>
#include <conio.h>
#include <iostream>
using namespace std;
bool space;
void type(string str)
{
for (int i = 0; str[i] != '\0'; i++) {//Print until \0 appears
printf("%c", str[i]);
if (GetAsyncKeyState(VK_SPACE) & 0x8000) {//When the user presses the spacebar
space = true;//Turn AABSD into true
}
if (space) {//If the space bar is pressed
Sleep(0);//Print all the letters of a sentence without a break
}
else {//If the space bar is not pressed
Sleep(500);//Print at 0.5 second intervals per character
}
}
space = false;
}
int main(void)
{
space = false;
type("Hello, World!\n");
type("Hello, World!\n");
type("Hello, World!\n");
type("Hello, World!\n");
type("Hello, World!\n");
type("Hello, World!\n");
return 0;
}
[ad_2]