C语言编程问题 高手进

1.我看完了那本C语言程序设计的书但发现为什么所有编的程序都是在那个黑框中运行的,怎样才能使一个程序有图形界面?
2.我想编一个在那个黑框中由文字特殊符号组成的贪吃蛇游戏…但遇到了一个严重的问题,C中的输入函数如scanf() getchar() 都要在输入后按enter(我要控制蛇的方向总不能按一下再按enter吧…),有没有输入后不用按enter的函数?还有getchar() 等这些函数的源代码是怎样的?感觉用我现在的C语言知识这类函数太神秘了…
3,看完书后发现C语言编的程序怎么都是“单线程”(不知道该怎么说)的,能不能几条语句同时运行(我要编的贪吃蛇游戏按我的设想在执行输入运动方向时程序还是要运行的)?
我只想知道有没有输入后不用按enter的函数,没有的话怎么编一个,或怎么可以实现不按回车键就能输入?还有怎么实现在输入的时候程序是不暂停的,贪吃蛇是每隔一定时间前进一格,不能每次在执行其前进方向步骤时停止啊。关于贪吃蛇的其他问题我都解决了现在只想知道2和3的答案,望高手解答!

如果第2点满足了,那么第3点也不需要多线程了。

估计你用的是TC编译器,这是一个很差的编译器,建议你使用VC++(window)或者gcc(Linux/Unix)两者之一。图形和多线程都是与操作系统相关的东西,单单的C语言标准库是没有这类函数的,所以,如果你真的要实现这些东西,请选译一个平台(window或Linux),深入学习。

关于你说的第2点,TC还是有办法的。即使用boiskey函数

函数原型:int bioskey (int cmd)
说明:bioskey()的函数原型在bios.h中 bioskey()完成直接键盘操作,cmd的值决定执行什么操作。
cmd = 0:
当cmd是0,bioskey()返回下一个在键盘键入的值(它将等待到按下一个键)。它返回一个16位的二进制数,包括两个不同的值。当按下一个普通键时,它的低8位数存放该字符的ASCII码;对于特殊键(如方向键、F1~F12等等),低8位为0,高8位字节存放该键的扫描码。
cmd = 1:
当cmd是1,bioskey()查询是否按下一个键,若按下一个键则返回非零值,否则返回0。
cmd = 2:
当cmd是2,bioskey()返回Shift、Ctrl、Alt、ScrollLock、NumLock、CapsLock、Insert键的状态。各键状态存放在返回值的低8位字节中。 字节位 含义 0 右边Shift键状态 1 左边Shift键状态 3 Ctrl键状态 4 Alt键状态 5 ScrollLock键状态 6 NumLock键状态 7 CapsLock键状态 8 Insert

bioskey函数在游戏开发中很有用的一个函数,基本都是用它来处理用户的输入。scanf函数用来接受用户的输出入,直到用户输入后才返回。而bioskey不同的,它可以获取此时用户是否输入,如果输入,可以获取用户的输入值,只要设置函数的入口参数cmd即可。

http://blog.csdn.net/linyt/archive/2007/01/11/1480281.aspx
这是我博客上的一篇文章,具体分析搬运工游戏的代码,跟你的程序结构应该是很类似的(只能在TC上编译)

参考资料:http://blog.csdn.net/linyt/archive/2007/01/11/1480281.aspx

温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-11-06
那个黑框子叫做控制台,是不带图形用户界面的.
如果真想用C语言写带图形界面的东西,在Windows下必须使用Win32 API,建议你看一下<Windows 程序设计>,网上有电子书可以下到.不过要做好心理准备,学用C语言进行Win32编程的难度比初学C语言还要大.
如果想速成,可以学VB,C#之类的语言,它们封装了许多底层的东西,可以以拖放的方式来设计程序的界面.
第2个回答  2009-11-06
可以用一个死循环解决你说的问题。
比如:while(1){}
这样程序就能不断的执行下去了:)
第3个回答  2009-11-06
3.看完书后发现C语言编的程序怎么都是“单线程”(不知道该怎么说)的?
那你何不在Linux下编C语言程序呢?Linux系统为程序员提供了多线程接口,不知道windows下有没有?反正标准C库我没发现有。
第4个回答  2009-11-06
getch()不用按回车
相似回答