C++ Usleep在ncurses中断开一把握着的钥匙以便移动

C++ Usleep在ncurses中断开一把握着的钥匙以便移动,c++,ncurses,C++,Ncurses,我正在用ncurses编写一个轰炸机游戏,我遇到了麻烦 我想给玩家一个持续移动的握键能力 它可以在getch()的非阻塞模式下正常工作,但只有在我实现了一个等待在游戏中的循环之后才能工作 struct timeval start, end; long mtime, seconds, useconds; long frame = 5000; /* usec */ while ( m_state == STATE_PLAYING ) { /* tick driving */

我正在用ncurses编写一个轰炸机游戏,我遇到了麻烦

我想给玩家一个持续移动的握键能力

它可以在getch()的非阻塞模式下正常工作,但只有在我实现了一个等待在游戏中的循环之后才能工作

    struct timeval start, end;
long mtime, seconds, useconds;    
long frame = 5000; /* usec */
while ( m_state == STATE_PLAYING ) {
    /* tick driving */
    gettimeofday(&start, NULL);
    Tick();
    Draw();

    gettimeofday(&end, NULL);

    seconds  = end.tv_sec  - start.tv_sec;
    useconds = end.tv_usec - start.tv_usec;
    mtime = ((seconds) * (1000 * 1000) + useconds ) + 500;

    if(tickdriven) usleep( frame - mtime );
}

在勾选中,我加载关键点,然后处理它们。但是如果我将tickdriven设置为true,它会中断一个保持键功能:(突然,我必须再次按下该键才能继续移动。所以我的问题是:为什么uspeep会中断一个保持键功能,以及如何修复它?:(

您使用哪个函数来执行非阻塞模式?我使用nodelay(stdscr,true);改为尝试超时(0)