C/C++/EasyX——入门图形编程(5)

【说明】友友们好,今天来讲一下键盘消息函数。(其实这个本来准备和鼠标消息函数放在一起的,但是上一篇三个放在一起,内容就有点多了,只写一个又太单调了,所以键盘消息函数的内容就放在这一篇了 (^~^) )

一:键盘消息函数的介绍

键盘消息函数是非 EasyX 函数,用于获取键盘按键消息

二:键盘信息函数

用于获取鼠标消息的函数有两个:getch(),GetAsyncKeyState(键值)。

getch()------头文件 conio.h,需要使用返回值来判断

|-------------------|---------------------------------------|
| 与非 ASCII 表字符的按键比较 | 需要使用虚拟键值: 上---72;下---80;左---75;右---77 |
| 与字母比较 | 直接写字母,比如 'A' |

GetAsyncKeyState(键值)------需要传入一个键值,如果按下返回真,

|---|----------|
| 上 | VK_UP |
| 下 | VK_DOWN |
| 左 | VK_LEFT |
| 右 | VK_RIGHT |

三:代码1

cs 复制代码
#include <graphics.h>
#include <stdio.h>
#include <conio.h>//使用_getch()
int main()
{
	initgraph(400, 300);
	setbkcolor(WHITE);
	cleardevice();
    
	//键盘消息
	int x = 0, y = 0;
	while (1)
	{
		setfillcolor(RED);//做一个填充圆,下面通过键盘消息让它移动
        //setlinecolor(BLACK);
		fillcircle(x, y, 20);

		char ch = _getch();
		printf("%d,%c\n", ch, ch);

		switch (ch)
		{
		case 72://第22行代码和第23/24行代码缺少其中一个,圆是不会移动的
		case 'w'://字母默认的w表示上键...当然,随你喜欢了
		//case 'W':
			y-=2;
			printf("上键\n");
			break;
		case 80:
		case 's':
		//case 'S':
			y+=2;
			printf("下键\n");
			break;
		case 75:
		case 'a':
		//case 'A':
			x-=2;
			printf("左键\n");
			break;
		case 77:
		case 'd':
		//case 'D':
			x+=2;
			printf("右键\n");
			break;
		}
	}
	closegraph(); 
	return 0;
}

左图就是上面代码运行出的,变化程度为5 右图是加上linecolor后变化程度为1的结果

不加linecolor,且变化程度为1,是没有痕迹的。很奇怪

注意,要使这个圆运动,需要打开你的控制台。

我发现了一个好奇怪的点,就是当我x,y 变化程度为1时(也就是 x++,x--,y++,y--),没有上面这个图中圆的移动痕迹 (・ω・),但是当我设置上线条颜色后就有了,这......,先不管了,如果想要消除这个痕迹,用 cleardevice()即可,注意放在循环中。

上面的圆球是只能上下左右移动的,不能斜着移动,当换成 GetAsyncKeyState 就可以了,但是我这里的运行结果出现了问题,就暂时不想写了ヾ(T(エ)Tヽ),如果友友想试一下,可以仿照下面的。

cs 复制代码
if (GetAsyncKeyState(VK_UP))//上键
{
	y -=5;
}
if (GetAsyncKeyState(VK_DOWN))//下键
{
	y +=5;
}
if (GetAsyncKeyState(VK_LEFT))//左键
{
	x -=5;
}
if (GetAsyncKeyState(VK_RIGHT))//右键
{
	x +=5;
}
相关推荐
iFlyCai1 天前
C语言中的指针
c语言·数据结构·算法
Laurence1 天前
C++ 引入第三方库(一):直接引入源文件
开发语言·c++·第三方库·添加·添加库·添加包·源文件
蒸汽求职1 天前
机器人软件工程(Robotics SDE):特斯拉Optimus落地引发的嵌入式C++与感知算法人才抢夺战
大数据·c++·算法·职场和发展·机器人·求职招聘·ai-native
charlee441 天前
最小二乘问题详解17:SFM仿真数据生成
c++·计算机视觉·sfm·数字摄影测量·无人机航测
Tanecious.1 天前
蓝桥杯备赛:Day4-P9749 公路
c++·蓝桥杯
旖-旎1 天前
分治(库存管理|||)(4)
c++·算法·leetcode·排序算法·快速选择算法
Tanecious.1 天前
蓝桥杯备赛:Day3-P1102 A-B 数对
c++·蓝桥杯
Tanecious.1 天前
蓝桥杯备赛:Day3-P1918 保龄球
c++·蓝桥杯
良木生香1 天前
【C++初阶】:C++类和对象(下):构造函数promax & 类型转换 & static & 友元 & 内部类 & 匿名对象 & 超级优化
c语言·开发语言·c++
无巧不成书02181 天前
C语言零基础速通指南 | 1小时从入门到跑通完整项目
c语言·开发语言·编程实战·c语言入门·零基础编程·c语言速通