1

我无法让这个运动绑定工作。我正在使用 ncurses 库,update_ch 和 oldch 是全局变量。KEYERR 是一个设置为-120 的宏(我只是不处理那些按键)。我试图限制玩家,让他不能上下左右,但他必须不断按压他们才能移动。它不起作用,您仍然可以按住键并移动。有什么建议么?我的逻辑一定是错误的。

    if(update_ch != KEYERR)
    {
          oldch = update_ch;
    }
    update_ch = getch();
    if(oldch == update_ch)
    {
          update_ch = KEYERR;
    }
4

1 回答 1

1

我试图限制玩家,让他不能上下左右,但他必须不断按压他们才能移动。

我很确定这对诅咒是不可能的。如果我没记错的话,curses 只从终端接收字符。它不控制有关该过程的任何内容。

如果用户按住键而不是连续按下,测量这些读数之间的时间可能会给您一个提示。我的意思是,当你阅读时,记录以下内容

  • 读键
  • 读取时间(毫秒精度)

当您读取一个值时,请询问以下问题:

  • 和最后一个键一样吗?
  • 当前时间和上次读取时间有什么区别?

如果它是同一个键并且时间差小于某个阈值,您可以确定他正在按住键。

于 2011-05-29T17:06:43.590 回答