C 语言,请问在 main()函数内部使用 kbhit()的话,再进入到其它函数之后 kbhit()还能监控吗?或者说, kbhit()有作用域问题吗?

2017-12-30 15:19:03 +08:00
 Newyorkcity
C 语言期末小作业让我们做一个贪吃蛇,图片处理函数是预先提供好的。
在做的过程中我把许多过程分立为不同的函数。
然后在边写边测的过程中发现(默认是向下移动)敲击一下键盘之后,程序表现的是停下什么也不输出了。然后我考虑了一下,就好奇 kbhit()的作用域的问题。因为我是这样处理贪吃蛇的移动的

初始化蛇的坐标,方向()
while(1){
清空画布()
打印蛇()
方向控制函数()
改变蛇的各个节点的坐标()
等待 500ms()
}
kbhit()我放在了方向控制函数()内部,然后我在想,如果方向控制函数已经结束了,此时我再按键盘,是不是就然并卵了?
于是我改成
if (kbhit()){ 方向控制函数() }
发现还是不行,我又想,那会不会在不断循环中,我已经进入了其它函数之中,此时再按键盘,在其它非 main 函数里,还是白折腾
so....以上就是我的问题。。如果 kbhit()确实有作用域问题的话,我想 C 语言用过程话方法分离分立函数应该是正确的思路,那该怎么利用 kbhit()呢?
谢谢!
1050 次点击
所在节点    问与答
1 条回复
Newyorkcity
2017-12-30 15:31:43 +08:00
啊感觉自己好蠢啊。我想明白了。不是键盘一按就立刻要 kbhit 函数有反应
程序执行起来是很快的。键盘一按输入流里就会有数据。kbhit 只要等到轮到他它再工作检查输入流里有没有数据就好了,和作用域没关系。。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/418858

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX