【发布时间】:2019-10-07 03:51:07
【问题描述】:
我必须在控制台中用 C 语言编写游戏。例如,当我按下空格键时,我想计算一些东西。但只有在我按下键的时候。当我再次松开键时,它应该停止计数,当我再次按下它时会重新开始。我希望它像蛇一样,我的意思是当用户按下它时它不会因为输入而停止。
我已经尝试使用 kbhit,它会计数,当我按下某个东西时它永远不会打印任何内容,即使我再次按下一个键。
while (1) {
h = kbhit();
fflush(stdin);
if (h) {
printf("%d\n", a);
a += 1;
} else {
printf("nothing\n");
}
}
我期待
没有
没有
没有
presses a key
0
没有
presses key again
1
hold on key
2
3
4
谢谢
【问题讨论】:
-
就在我的脑海中,我会分叉这个函数。一个是获取用户输入并将其放入全局变量中。另一个 fork 执行全局变量中的操作并将其清除。如果全局变量中没有任何内容,则它什么也不做。
-
你能给我写个例子吗,我不太明白你的意思
-
我不写代码,我修改它。所以先试一试。使用叉子。父 fork 在循环中运行 getch() 等待
q退出,否则它将输入放入子的全局变量中。如果全局变量为空(无输入),子叉子会正常运行游戏。如果全局变量有输入,往那个方向移动,清除变量,正常运行。