本人要做一个四子棋倒计时的程序,本人现在问题是,本人不动键盘,时间虽然记录,但不及时输出到屏幕。问题就出在getch(),本人不输入任何东西,程序就一直在那里等着,也不会往下进行,导致本人的letime()函数就输出当前剩余时间。
怎么样可以当本人什么都不输入的时候,就进行letime(),假如有输入再进行函数move()呢?
着急,大家帮帮忙~~谢谢啦~
怎么样可以当本人什么都不输入的时候,就进行letime(),假如有输入再进行函数move()呢?
着急,大家帮帮忙~~谢谢啦~
while (lastside == nowside)//只要行棋方没有变,而且没有落子,进行循环 { letime();//本人记录时间的函数,输出剩余时间 char c; c = getch();//读取用户键盘输入字符 if (c != "\0") //这个调试发现,程序会一直等在上一步。本人是想,当用户不输入,本人就一直调用letime,若有输入,再调用move,show { move(c);//只有有了输入,这个函数才会有用 system("cls"); show(px, py);//打印棋盘的函数 }
解决方案
5
用select或polling或epoll,检查stdin的可读缓存
10
把 c = getch()移动到另一个线程中去
具体办法:
1 写一个线程函数,开辟一个全局变量用于存放输入的字符
2 主线程中检查线程能否输入了字符
具体办法:
1 写一个线程函数,开辟一个全局变量用于存放输入的字符
2 主线程中检查线程能否输入了字符
15
_kbhit()