使用ncurses的c++中的移动绑定

movement binding in c++ using ncurses

本文关键字:移动 绑定 c++ ncurses 使用      更新时间:2023-10-16

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

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

我想限制球员他不能向上、向下、向左或是的,但他必须继续施压他们移动。

我敢肯定这是不可能的诅咒。如果我没记错的话,curses只接收来自终端的字符。它对这个过程没有任何控制。

如果用户拿着一个键而不是连续按下,测量从两个读数之间的时间可能会给你一个提示。我的意思是,当你阅读时,记录以下

  • 密钥读取
  • 读取时间(毫秒精度)

当您读取一个值时,询问以下内容:

  • 它和最后一把钥匙一样吗
  • 当前时间和上次阅读的时间有什么区别

如果是同一把钥匙,并且时间差小于某个阈值,你可以判断他是在按住钥匙。