我们老师留了一题,题目是这样的:
先生成一个点,然后按键盘上的方向键,列如按->,点向右运动,每按一下,移动一定的步长,最后形成一直线,上下左右方向都可以.
要求在tubro c 2.0环境下编写,我以前用tc都是在dos下输入输出,不知道用什么函数可以响应键盘控制,请高手指点,最好能推荐几本有关这方面的书,小弟不胜感激!
----------------解决方案--------------------------------------------------------
bioskey();
kbhit();
getch();
getchar();
。。。。。。
太多了
----------------解决方案--------------------------------------------------------
调用画点函数、读取键盘响应,再次在新位置画点,循环~
楼主有兴趣最好自己试一下。
----------------解决方案--------------------------------------------------------
晕~~~有没有人告诉我在VC下的按键响应?!
----------------解决方案--------------------------------------------------------
getch();
足已!
----------------解决方案--------------------------------------------------------
对不起,原题没有说清楚,应该是这样的:
以原来的点为起点,通过键盘操作拉一条直线出来.直线会随着键盘控制而改变位置.
----------------解决方案--------------------------------------------------------
还有 各位大虾能不能介绍的具体一点,列如在哪些书里能找到这方面的资料,用这些函数要包含什么头文件等等,麻烦各位了.
----------------解决方案--------------------------------------------------------
对不起,原题没有说清楚,确切意思是直线形成以后,再次输入方向键,光标移动,到达新点,与最初的点构成直线,并覆盖原来的直线。
现在键盘响应我已经会了,但是现在又出现了一个新问题,在重新绘制直线的时候,老师建议我们用setwritemode(int mode)函数,mode=0 画线时原来的画线信息被覆盖。但是我发现这个函数没有用,我编了一个比较简单的程序来验证,程序如下: #include "stdio.h" #include "graphics.h" #include "conio.h"
void main() { int gd=DETECT,gm=0; initgraph(&gd,&gm,""); line(100,100,200,200);//直线1 setwritemode(0); line(300,300,400,400);//直线2 getch(); closegraph(); exit(0); } 按照函数定义,直线1被覆盖,应该不出现才对,但是事实却相反,能不能告诉我是哪个地方错了,是不是这个函数用的不对,请指正,谢谢!
----------------解决方案--------------------------------------------------------
模式用错,语法有误。
#include "stdio.h" #include "graphics.h" #include "conio.h"
void main() { int gd=DETECT,gm=0,x=0,y=0; initgraph(&gd,&gm,""); setwritemode(1); while(1) { line(100+x,100+y,200+x,200+y); sleep(1); line(100+x,100+y,200+x,200+y); x++,y++;
} closegraph(); exit(0); }
----------------解决方案--------------------------------------------------------