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

news2024/10/6 16:28:53

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

一:键盘消息函数的介绍

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

二:键盘信息函数

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

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

与非 ASCII 表字符的按键比较   

需要使用虚拟键值:

上—72;下—80;左—75;右—77

与字母比较直接写字母,比如 'A'

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

VK_UP
VK_DOWN
VK_LEFT
VK_RIGHT

三:代码1

#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ヽ),如果友友想试一下,可以仿照下面的。

if (GetAsyncKeyState(VK_UP))//上键
{
	y -=5;
}
if (GetAsyncKeyState(VK_DOWN))//下键
{
	y +=5;
}
if (GetAsyncKeyState(VK_LEFT))//左键
{
	x -=5;
}
if (GetAsyncKeyState(VK_RIGHT))//右键
{
	x +=5;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2192350.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

大语言模型中文本分割策略的综合指南

整理 本文整理了一些简单的文本切分方式&#xff0c;适用于大语言模型经典应用RAG或相似场景。 一般切分 如果不借助任何包&#xff0c;很容易想到如下切分方案&#xff1a; text "我是一个名为 ChatGLM3-6B 的人工智能助手&#xff0c;是基于清华大学 KEG 实验室和智…

模型 SECI(知识的创造)

系列文章 分享 模型&#xff0c;了解更多&#x1f449; 模型_思维模型目录。知识创造的螺旋转化模型。 1 SECI的应用 1.1 Tech Innovations移动应用创新 Tech Innovations是一家软件开发公司&#xff0c;致力于开发创新的移动应用程序。为了提升团队的知识共享和创新能力&…

力扣6~10题

题6&#xff08;中等&#xff09;&#xff1a; 思路&#xff1a; 这个相较于前面只能是简单&#xff0c;个人认为&#xff0c;会print打印菱形都能搞这个&#xff0c;直接设置一个2阶数组就好了&#xff0c;只要注意位置变化就好了 python代码&#xff1a; def convert(self,…

感知机及其实践

说明 感知机是SVM(support vector machine,支持向量机)的基础&#xff0c;更是机器学习的基础。本文的目的在于把感知机的相关概念捋清楚&#xff0c;并基于感知机做最基本的线性可分的二分类实践。 有关机器学习的一些基础概念&#xff0c;读者可以参考本专栏的第一篇博文[4]&…

Oracle创建用户报错-ORA-65096: invalid common user or role name

问题描述 ORA-65096: invalid common user or role name 原因分析 这可能是创建角色的容器为cdb导致&#xff0c;当然如果想继续执行&#xff0c;可以在角色名前加C##或者c##&#xff0c;但是这样会导致用户名多了c##&#xff0c;我们不要这样的用户名 解决步骤 用sysdba 登录&…

SCUC博客摘录「 储能参与电能市场联合出清:SCUC和SCED模型应用于辅助服务调频市场(IEEE39节点系统)」2024年10月6日

2.1 SCUC模型在本方法中&#xff0c;首先利用SCUC模型确定机组出力计划和储能充放电计划。SCUC模型是电力系统经济调度的重要工具&#xff0c;通过优化发电机组出力计划和调度&#xff0c;实现电力系统的经济性和可靠性。在考虑储能的情况下&#xff0c;SCUC模型需要考虑储能的…

vue3常用组件通信方法

title: vue3常用组件通信方法 date: 2024-10-06 15:00:54 tags: vue3 组件通信 一、父传子—defineProps 1.父亲 通过属性传值 2.儿子 通过defineProps接收相关的数据 二、子传父 1&#xff09;使用defineExposeref 1.子组件 在子组件中使用defineExpose先暴露出来 2.父…

基础算法之滑动窗口--Java实现(上)--LeetCode题解:长度最小的子数组-无重复字符的子串-最大连续1的个数III-将x减到0的最小操作数

这里是Thembefue 今天讲解算法中较为经典的一个算法 > 滑动窗口 本讲解主要通过题目来讲解以理解算法 讲解分为三部分&#xff1a;题目解析 > 算法讲解 > 编写代码 滑动窗口 在正式进入题目的讲解之前&#xff0c;得先了解一下什么是滑动窗口&#xff0c;以及应该在什…

一篇文章教会你DHT11读取温湿度,附STM32代码示例

目录 一、DHT11说明&#xff1a; 1.典型电路&#xff1a; 2.串行通信说明&#xff08;单线双向&#xff09;&#xff1a; 单总线说明&#xff1a; 单总线传送数据位定义&#xff1a; 校验位数据定义&#xff1a; 二、DHT11读取时为啥要切换模式&#xff1a; 1. 通信时序…

基于深度学习的手势控制模型

关于深度实战社区 我们是一个深度学习领域的独立工作室。团队成员有&#xff1a;中科大硕士、纽约大学硕士、浙江大学硕士、华东理工博士等&#xff0c;曾在腾讯、百度、德勤等担任算法工程师/产品经理。全网20多万粉丝&#xff0c;拥有2篇国家级人工智能发明专利。 社区特色…

理解递归和回溯

文章目录 什么是递归回溯 什么是递归 回溯 //使用递归回溯来给小球找路//说明//1. map 表示地图//2. i,j 表示从地图的哪个位置开始出发 (1,1)//3. 如果小球能到 map[6][5] 位置&#xff0c;则说明通路找到.//4. 约定&#xff1a; 当map[i][j] 为 0 表示该点没有走过 当为 1 表…

【Python】wxPython 高 DPI 缩放问题(笔记本上字体模糊问题)

问题 使用 wxPython 编写的程序在某些高 DPI 的电脑&#xff08;通常是笔记本&#xff09;上显示出来的字体会非常模糊&#xff1a; 事实上 wxPython 是支持高 DPI 的&#xff0c;但是由于我们的程序没有显式指明支持高 DPI&#xff0c;因此系统默认不支持高 DPI&#xff0c;…

Bolt.new:终极自动化编程工具

兄弟们&#xff0c;终极写代码工具来了—— Bolt.new&#xff01;全方位的编程支持&#xff1a; StackBlitz 推出了 Bolt․new&#xff0c;这是一款结合了 AI 与 WebContainers 技术的强大开发平台&#xff0c;允许用户快速搭建并开发各种类型的全栈应用。 它的主要特点是无需…

【小沐学GIS】QGIS导入导出OpenStreetMap数据(QuickMapServices、OSM)

文章目录 1、简介1.1 OpenStreetMap地图1.2 QGIS 2、安装插件2.1 QuickMapServices2.2 OSMDownloader2.3 Qgis2threejs 3、使用插件结语 1、简介 1.1 OpenStreetMap地图 https://www.openstreetmap.org/ https://extract.bbbike.org/ Openstreetmap是一种开源地图&#xff0c…

微服务swagger解析部署使用全流程

1、介绍 swagger是一个在线接口说明文档&#xff0c;在代码中通过注解的方式将说明问题集成到项目&#xff0c;代码发生修改&#xff0c;说明文档同步修改&#xff0c;前后台联调可以快速同步数据。 2、应用 1、引入依赖 <dependency><groupId>io.springfox<…

如何使用ssm实现基于Web的穿戴搭配系统的设计与实现+vue

TOC ssm784基于Web的穿戴搭配系统的设计与实现vue 第1章 绪论 1.1 研究背景 互联网概念的产生到如今的蓬勃发展&#xff0c;用了短短的几十年时间就风靡全球&#xff0c;使得全球各个行业都进行了互联网的改造升级&#xff0c;标志着互联网浪潮的来临。在这个新的时代&…

新机配置Win11

Win11跳联网 在连接网络的界面输入ShiftF10打开命令行&#xff0c;然后输入oobe\bypassnro然后会重启&#xff0c;在联网的界面就可以进行跳过了。 编码 在中国大陆Windows使用的编码是GBK编码 查看电脑系统版本 WinR输入winver即可 桌面图标 设置->个性化->主题…

Art. 1 | 信号、信息与消息的区别及其在通信中的应用

信号、信息与消息的区别及其在通信中的应用 通信技术是现代社会的基石&#xff0c;其广泛应用于日常生活的各个方面。从手机、互联网到企业信息管理&#xff0c;通信系统无处不在。在这一技术领域中&#xff0c;信号、信息和消息是三大基础概念&#xff0c;支撑着整个通信系统…

03 去重排序

题目&#xff1a; 桶排序变体&#xff1a; #include<iostream> #include<algorithm> using namespace std; #define M 100005 int a[M];int main() {int N;cin>>N;int count0;for(int i1;i<N;i){int temp;cin>>temp;if(a[temp]1){continue;}else{a…

[C语言]第十一节 函数递归一基础知识到高级技巧的全景探索

目录 11.1. 递归是什么&#xff1f; 11.1.1 递归的思想&#xff1a; 11.2 递归的限制条件 举例1&#xff1a;求n的阶乘 画图推演 举例2&#xff1a;顺序打印⼀个整数的每⼀位 画图推演 11.3. 递归与迭代 举例3&#xff1a;求第n个斐波那契数 11.1. 递归是什么&#xff…