【问题标题】:Do something when i press a certain key?当我按下某个键时做些什么?
【发布时间】:2017-11-12 21:30:28
【问题描述】:

如何让程序识别我按下的某些键? 了解上下文:我想用C(非常基本的游戏)制作一个游戏,所以为了移动对象,我想按下(W A S D),我知道如何移动它,但我不知道如何移动它当按下其中一个键时,让程序了解我想要执行某个操作。 例如:

if( key == "A"){
x++
}

我知道它不会那样工作,但至少是类似的。

【问题讨论】:

  • 你可以使用graphics.h
  • 关键字是fgetc。搜索它。
  • 您是否要求一种方法来轮询是否按下某个键、在按下某个键时触发事件或挂起您的程序并等待按下回车键?
  • kbhit() in conio.h(如果你有的话)或者这个 Linux implementation 怎么样。
  • @TahaPaksu fgetc 对此无能为力。

标签: c windows visual-studio


【解决方案1】:
#include <stdio.h>
#include <conio.h> /* getch() and kbhit() */

int main()
{
    char c;

    for(;;){
        if(kbhit()){
            c = getch();
            if(c == 'c')
            {
                printf("%c\n", c);

               // more code here..
            }
         }
    }
    return 0;
}

如上述答案,但代码必须处于无限循环中才能在按下键时进行扫描。并且代码只会检查是否按下了键“c”。您可以轻松删除 if 条件并使其更通用:)

【讨论】:

  • 当按下 c 键时如何打印?知道它会打印我按下的任何键。
  • 您要打印什么?
  • 如果您不想打印按下的键,请移除 `printf("%c\n", c);` 并添加其他代码。 :)
  • 好吧,假设当我按下 C 键时,它会打印“C 键被按下”,但如果我按下任何其他键,它不应该打印。
  • 只需检查字符 c 是否为“C”。!通过使用 if(c == 'c'){ //code here } :)
【解决方案2】:

您可以包含conio.h(在Windows 上)或ncurses.h 库(在Linux 上)并使用getch() 等函数返回用户按下的字符。然后你可以检查char是否是你想要的。

【讨论】:

    【解决方案3】:

    你可以使用上面的cmets中提到的conio.h中包含的kbhit。一个简单的例子如下所示。

    #include <conio.h>
    
    int main()
    {
        char ch;
    
        if (kbhit()) {
    
                // Stores the pressed key in ch
                ch = getch();
                printf("%c was pressed.\n", ch)
    
                //do something..
    
        }
        return 0;
    }
    

    我认为这个link会对你有所帮助。

    【讨论】:

      猜你喜欢
      • 2014-01-17
      • 1970-01-01
      • 2022-01-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多