(创作不易,感谢有你,你的支持,就是我前行的最大动力,如果看完对你有帮助,请留下您的足迹)
今天我们来学一下如何在easyx窗口中使用键盘操作
用于接收键盘信息的函数有两个:
getch() //需要包含头文件 GetAsyncKeyState() //需要包含头文件
然后就是easyx的常规三步走
initgraph(1000, 640, SHOWCONSOLE);//创建一个窗口 setbkcolor(WHITE);//设置窗口颜色 cleardevice();//刷新一下,防止窗口颜色不变
首先我们要绘制一个可以被操控的变量,这里我们以圆形为例
先绘制一个圆,指明其坐标以及大小
int x = 0; int y = 0; setfillcolor(BLACK); fillcircle(x, y, 50);
接下来就需要引入控制函数了,我们先讲一下getch()
首先创建一个字符串变量
char key = _getch();//vs2022要求getch前面要加下划线,如果不是vs则不用加
然后用Switch接收按键信息,我们就以常规的‘w’,'s','a','d'为例
switch (key) { case 'w': printf("上键"); y -= 50; break; case 's': printf("下键"); y += 50; break; case 'a': printf("左键"); x -= 50; break; case 'd': x += 50; printf("右键"); break; }
接下来我们讲一下GetAsyncKeyState(),相比于上一个操作系统,这个显得更为流畅丝滑,因为它甚至可以斜着移动
if (GetAsyncKeyState(VK_UP))//上键 { y -= 50; } if (GetAsyncKeyState(VK_DOWN))//下键 { y += 50; } if (GetAsyncKeyState(VK_LEFT))//左键 { x -= 50; } if (GetAsyncKeyState(VK_RIGHT))//右键 { x += 50; }
圆在移动的时候会留下轨迹,所以我们需要刷新一下
cleardevice();
最后别忘了将其放置在循环之中便于操作 ,整体效果如下:
while (1) { cleardevice(); //控制球 setfillcolor(BLACK); fillcircle(x, y, 50); if (GetAsyncKeyState(VK_UP))//上键 { y -= 50; } if (GetAsyncKeyState(VK_DOWN))//下键 { y += 50; } if (GetAsyncKeyState(VK_LEFT))//左键 { x -= 50; } if (GetAsyncKeyState(VK_RIGHT))//右键 { x += 50; } char key = _getch(); switch (key) { case 'w': printf("上键"); y -= 50; break; case 's': printf("下键"); y += 50; break; case 'a': printf("左键"); x -= 50; break; case 'd': x += 50; printf("右键"); break; } }
末尾就是细节三步了
getchar();//防止闪退
closegraph();//关闭窗口
return 0;