赞
踩
(创作不易,感谢有你,你的支持,就是我前行的最大动力,如果看完对你有帮助,请留下您的足迹)
今天我们来学一下如何在easyx窗口中使用键盘操作
用于接收键盘信息的函数有两个:
getch() //需要包含头文件<conio.h>
GetAsyncKeyState() //需要包含头文件<windows.h>
然后就是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;
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。