你可以使用gotoxy(在TC中请包含头文件conio.h,在VC6中没有这个函数,要自己编写一个)使光标移动到指定的行和列,下面我给你一个例子:
#include
#include
#define KEY_UP 72
#define KEY_DOWN 80
#define KEY_LEFT 75
#define KEY_RIGHT 77
#define KEY_Q 113
//如果使用VC6编译需要以下代码段
#include
void gotoxy(int nX, int nY)
{
HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE);
COORD pos;
pos.X = nX;
pos.Y = nY;
SetConsoleCursorPosition(hOut,pos);
}
//如果使用VC6编译需要以上代码段
void main(void)
{
int c, x, y, nX, nY; //x, y代表按方向键前的光标位置,nX, nY代表按方向键后的光标位置
printf("@"); //打印笑脸
x = nX = 0; y = nY = 0;
while(KEY_Q != (c = getch()))
{
if (0 == c) c = getch(); //getch在遇到方向键时会返回0 再使用getch便会返回扫描码
switch (c)
{
case KEY_UP:
nY = y - 1; //y向下为正
break;
case KEY_DOWN:
nY = y + 1;
break;
case KEY_LEFT:
nX = x - 1;
break;
case KEY_RIGHT:
nX = x + 1;
break;
}
if (x == nX && y == nY) continue; //没有按方向键
if (nX < 0 || nX > 79) continue; //列超出范围
if (nY < 0 || nY > 24) continue; //行超出范围
gotoxy(x, y);
printf(" "); //删除前一个图形
x = nX;
y = nY;
gotoxy(x, y); //到指定位置
printf("@"); //打印笑脸
}
}