编程论坛
注册
登录
编程论坛
→
C++教室
求助kbhit函数怎么用
zbh120307
发布于 2024-05-26 19:24, 2319 次点击
最近想做一个纯文字游戏,比如:我想一边让NPC 10秒执行一次任务(如食物每十秒钟增加10),一边让玩家免回车键盘输入(如操控玩家按k键砍树),并让两者同时进行。网上说最好用kbhit函数,请问该如何实现?(若其他函数或手写函数也行,版本为Windows)
5 回复
#2
forever74
2024-05-26 19:48
windows下还是得研究WIN32 API。
#3
zbh120307
2024-05-26 19:56
最好是kbhit函数
#4
rjsp
2024-05-27 10:24
程序代码:
#include
<conio.h>
#include
<print>
#include
<chrono>
#include
<thread>
int
main(
void
)
{
unsigned
食物 =
0
;
auto
last_time = std::chrono::steady_clock::now();
for
( ; ; std::this_thread::yield() )
{
if
(
auto
t=std::chrono::steady_clock::now(); t-last_time>=std::chrono::seconds(
10
) )
{
last_time = t;
食物 +=
10
;
std::println(
"
食物 = {}
"
, 食物 );
}
if
( _kbhit() )
{
int
ch0=_getch(), ch1=
0
;
if
( ch0==
0x00
|| ch0==
0xE0
)
ch1 = _getch();
if
( ch0 ==
'
k
'
)
{
std::println(
"
砍树
"
);
}
}
}
}
#5
apull
2024-05-27 10:28
可以用多线程,一个线程管NPC,另一个线程监控键盘输入。
程序代码:
if
(kbhit())
{
char
ch=getcahr();
if
(ch==
'
k
'
)
do
something
}
#6
zbh120307
2024-05-27 20:43
谢谢
1