这是一个创建于 2531 天前的主题,其中的信息可能已经有所发展或是发生改变。
C 语言期末小作业让我们做一个贪吃蛇,图片处理函数是预先提供好的。
在做的过程中我把许多过程分立为不同的函数。
然后在边写边测的过程中发现(默认是向下移动)敲击一下键盘之后,程序表现的是停下什么也不输出了。然后我考虑了一下,就好奇 kbhit()的作用域的问题。因为我是这样处理贪吃蛇的移动的
初始化蛇的坐标,方向()
while(1){
清空画布()
打印蛇()
方向控制函数()
改变蛇的各个节点的坐标()
等待 500ms()
}
kbhit()我放在了方向控制函数()内部,然后我在想,如果方向控制函数已经结束了,此时我再按键盘,是不是就然并卵了?
于是我改成
if (kbhit()){ 方向控制函数() }
发现还是不行,我又想,那会不会在不断循环中,我已经进入了其它函数之中,此时再按键盘,在其它非 main 函数里,还是白折腾
so....以上就是我的问题。。如果 kbhit()确实有作用域问题的话,我想 C 语言用过程话方法分离分立函数应该是正确的思路,那该怎么利用 kbhit()呢?
谢谢!
1 条回复 • 2017-12-30 15:31:43 +08:00
|
|
1
Newyorkcity 2017-12-30 15:31:43 +08:00 via Android
啊感觉自己好蠢啊。我想明白了。不是键盘一按就立刻要 kbhit 函数有反应 程序执行起来是很快的。键盘一按输入流里就会有数据。kbhit 只要等到轮到他它再工作检查输入流里有没有数据就好了,和作用域没关系。。
|