等待輸入一定時間
回答
嘗試用bioskey()
,this是一個例子:
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <bios.h>
#include <ctype.h>
#define F1_Key 0x3b00
#define F2_Key 0x3c00
int handle_keyevents(){
int key = bioskey(0);
if (isalnum(key & 0xFF)){
printf("'%c' key pressed\n", key);
return 0;
}
switch(key){
case F1_Key:
printf("F1 Key Pressed");
break;
case F2_Key:
printf("F2 Key Pressed");
break;
default:
printf("%#02x\n", key);
break;
}
printf("\n");
return 0;
}
void main(){
int key;
printf("Press F10 key to Quit\n");
while(1){
key = bioskey(1);
if(key > 0){
if(handle_keyevents() < 0)
break;
}
}
}
對於基於終端的遊戲,你應該在ncurses看一看。
int ch;
nodelay(stdscr, TRUE);
for (;;) {
if ((ch = getch()) == ERR) {
/* user hasn't responded
...
*/
}
else {
/* user has pressed a key ch
...
*/
}
}
編輯:
問題明確標記爲C或C++ – thecoshman
@thecoshman'ncurses'是C/C++的庫。 –
啊,對不起,我拿'基於終端的遊戲'來表示你已經提供了一個基於終端的語言的解決方案,我收回downvote – thecoshman
我找到了解決方案使用CONIO.H的的kbhit()函數,如下所示: -
int waitSecond =10; /// number of second to wait for user input.
while(1)
{
if(kbhit())
{
char c=getch();
break;
}
sleep(1000); sleep for 1 sec ;
--waitSecond;
if(waitSecond==0) // wait complete.
break;
}
基於@birubisht answer我做了一個更清潔的功能,並且使用了不推薦的版本kbhit()
和getch()
- ISO C++的_kbhit()
和_getch()
。
函數有:等待用戶輸入
函數返回秒數:_
,當用戶不把任何字符,否則返回在輸入的字符。
/**
* Gets: number of seconds to wait for user input
* Returns: '_' if there was no input, otherwise returns the char inputed
**/
char waitForCharInput(int seconds){
char c = '_'; //default return
while(seconds != 0) {
if(_kbhit()) { //if there is a key in keyboard buffer
c = _getch(); //get the char
break; //we got char! No need to wait anymore...
}
Sleep(1000); //one second sleep
--seconds; //countdown a second
}
return c;
}
- 1. 等待一個限定的時間段爲輸入在Perl
- 2. VBA定時器 - 減時間等待用戶輸入
- 3. 等待輸入
- 4. 等待只輸入X時間的輸入
- 5. 一個指定的等待時間
- 6. keylistener等待輸入
- 7. c + +等待輸入
- 8. java.util.Scanner:等待輸入
- 9. 如何捕獲等待用戶輸入的時間間隔?
- 10. C#Console.Readkey - 等待特定輸入
- 11. 在等待輸入時運行方法
- 12. 等待超時的用戶輸入
- 13. 如何超時等待輸入?
- 14. 等待用戶輸入一個表格
- 15. Andengine載入中等待時間
- 16. 等待線程加入時間限制
- 17. 在等待用戶輸入紅寶石時製作一個時間計數器
- 18. android - 等待用戶輸入
- 19. Arduino:等待串口輸入
- 20. scanf不等待輸入
- 21. 與fgets()不等待輸入
- 22. 使readline等待輸入R
- 23. 不等待輸入java
- 24. Java:InputStream.read不等待輸入?
- 25. Python - 循環等待輸入
- 26. GTK:等待用戶輸入
- 27. 等待沒有輸入
- 28. AlertDialog不會等待輸入
- 29. std :: cin.getline不等待輸入
- 30. 等待鍵盤輸入
沒有標準的C++方法可以做到這一點,除非您的程序在輸入後立即結束,否則不會產生延遲效果。即使這樣做,我也不會推薦它。 – chris
標題說「C」 - 標籤說「C」和「C++」 - 這是什麼? –
如前所述,沒有標準的方法來做到這一點。在Linux中,我建議使用ncurses [也適用於Windows]。大多數操作系統都有「不等待」輸入法,但沒有標準方法。 –