|
Keyboard input buffer. |
Rob Johnson
Member #7,226
May 2006
|
Hello there. I've developed a menu for a game. I'm using the keyboard to interact with it. However the input speed is far too fast. Is there a way of buffering the input without cutting the actual timer speed down. I have a background being drawn which requires my set FPS. Obviously I need to turn this buffer off once the game is actually playing. Any suggetsions or ideas would help me greatly. I'm thinking of some sort of loop but I know this would slow down the game speed. |
gnolam
Member #2,030
March 2002
|
Depends on what you're asking. If it's "how do I register each keypress only once?": just copy the key array to your own buffer and compare them when checking for a key press. If they're both the same, the key is being held down. If key[] is set but keybuf[] isn't, the key was just pressed. If it's the other way around, the key was just released. If it's "how do I slow certain things down": set a counter which you decrement each cycle. When it's zero, the action may be taken again. #define NUMBER_OF_CYCLES 5 int cooldown_key_a = 0; void check_input(void) { if (key[KEY_A]) if (cooldown_key_a == 0) { do_something(); cooldown_key_a = NUMBER_OF_CYCLES; } cooldown_key_a--; } Code typed directly into the reply box, so YMMV. -- |
Rob Johnson
Member #7,226
May 2006
|
Ah many thanks, especially for the super fast response. I think option two would be far easier for me to implement into this setup. |
Elias
Member #358
May 2000
|
-- |
|