easyx图形库基础:2.基本运动+键盘交互
基本运动+键盘交互
- 一.基本运动
- 1.基本运动:
- 1.如何实现动画:
- 2.实现一个小球从左到右从右到左:(往返运动)
- 3.实现一个五角星的移动:
- 4.实现一个五角星自转和圆周运动的集合:(圆周运动)
- 2.直线运动:
- 1.左上左下右上右下:
- 2.任意从一个点到一个点的直线运动。
- 二.键盘交互
- 1.动键盘我们的图形才移动:
- 2.动键盘去控制原来的运动情况:
一.基本运动
1.基本运动:
1.如何实现动画:
相信大家已经对动画的原理已经不陌生了。想要目标物体动起来,只需要逐个播放目标物体每一时刻位置的图片。只要播放的速度足够快,人们就会在视觉上认为目标物体动起来了。
帧率:具有连续性的一些图片在1秒中绘制的个数。
物体运动的速度单位一般是 像素/秒。
sleep函数:可以让我们的程序在执行到sleep函数的时候就停下自己定义的时间,sleep函数的单位是毫秒。
2.实现一个小球从左到右从右到左:(往返运动)
void moveball()
{int x = -400;int y = 0;//设置小球的每一次移动的距离int vx = 5;setfillcolor(RGB(90, 164, 174));while (1){//绘制小球solidcircle(x, y, 25);Sleep(40);//判断小球转方向。if (x >= 400 || x<-400){vx = -vx;}//进行坐标值的变化;x += vx;cleardevice();}
}
3.实现一个五角星的移动:
#define PI 3.14
void star()
{POINT st[5];int x = -400;int y = 0;int vx = 5;int r = 30;double rad = PI / 180;while (1){cleardevice();setfillcolor(YELLOW);//设置五角星的坐标for (int i = 0; i < 5; i++){st[i].x = x + r * sin( rad* (144 * i));st[i].y = y + r * cos( rad* (144 * i));}//绘制五角星solidpolygon(st,5);Sleep(40);//判断五角星转方向。if (x >= 400 || x < -400){vx = -vx;}//进行坐标值的变化;x += vx;}
}
4.实现一个五角星自转和圆周运动的集合:(圆周运动)
#define PI 3.14void star()
{POINT st[5];int x = 0;int y = 0;//大圆周半径int R = 200;//小圆周半径int r = 50;double rad = PI / 180;int j = 0;while (1){cleardevice();setfillcolor(YELLOW);//五角星的x,y坐标x = R * sin(rad * j);y = R * cos(rad * j);//设置五角星的坐标,初始化角度值可以变化。for (int i = 0; i < 5; i++){st[i].x = x + r * sin( rad* ((144 * i)+j));st[i].y = y + r * cos( rad* ((144 * i)+j));}//绘制五角星solidpolygon(st,5);Sleep(40);j++;if (j == 359){j = 0;}}
}
2.直线运动:
1.左上左下右上右下:
- P1到P2
圆形从P1运动到P2。由于是直线运动,速度与位移的方向是相同的,均是从P1到P2。此时,速度方向
并不是水平或垂直的。但是,我们可以通过三角函数计算出速度在x方向与y方向的速度分量。为了计算出速度分量,还需要先求出速度方向与x轴的夹角θ。
2.任意从一个点到一个点的直线运动。
1.使用三角函数和反三角函数计算角度
2.根据三角函数计算速度分量
3.根据速度方向的正负求速度的符号
使用速度方向的正负确定停止条件。
//直线运动
//直线运动
void straight_line(int x1,int y1,int x2,int y2,int v)
{//求角度double ran = (double)abs(y2 - y1) / (double)abs(x2 - x1);double th = atan(ran);//给速度分量赋值double vx = v * cos(th);double vy = v * sin(th);//判断运动方向int flagvx = 0;int flagvy = 0;if (x2 - x1 < 0){flagvx = -1;}else if (x2 - x1 > 0){flagvx = 1;}if (y2 - y1 < 0){flagvy = -1;}else if (y2 - y1 > 0){flagvy = 1;}vx = vx*flagvx;vy = vy*flagvy;//初始化位置double x = x1;double y = y1;while (1){cleardevice();solidcircle(x, y, 30);Sleep(40);x += vx;y += vy;//判断循环结束条件if (flagvx == 1){if (x >= x2)break;}else if (flagvx == -1){if (x <= x2)break;}if (flagvy == 1){if (y >= y2)break;}else if (flagvy == -1){if (y <= y2)break;}}
}
}
二.键盘交互
因为kbhit和getch是不是标准库的内容他是平台实现函数然后为了进行区分就在函数名称前面加上了一个_.
头文件是conio.h
1.动键盘我们的图形才移动:
void contour()
{//初始化坐标和水平竖直速度int x = 0;int y = 0;int vx = 0;int vy = 0;while (1){//conio.h是getch函数的头文件,//这个函数可以直接获取输入缓冲区的字符不需要回车确认cleardevice();solidcircle(x, y, 30);//获取键盘输入字符char ch=_getch();switch (ch){case'A':case'a':vx = -5;vy = 0;break;case'S':case's':vy = -5;vx = 0;break;case'W':case'w':vy = 5;vx = 0;break;case'D':case'd':vx = 5;vy = 0;break;}x += vx;y += vy;}}
2.动键盘去控制原来的运动情况:
默认我们的图形开始是从左向右运动的,我们键盘输入数据才移动。
void movecontour()
{//初始化坐标和水平竖直速度int x = 0;int y = 0;int vx = 5;int vy = 0;while (1){//conio.h是getch函数的头文件,//这个函数可以直接获取输入缓冲区的字符不需要回车确认cleardevice();solidcircle(x, y, 30);Sleep(40);//获取键盘输入字符x += vx;y += vy;//判断输入缓冲区中是否有内容,_kbhit()不会阻塞函数。//如果有内容进入语句,getch获取缓冲区的数值去改变速度的值。if (_kbhit()){char ch = _getch();switch (ch){case'A':case'a':vx = -5;vy = 0;break;case'S':case's':vy = -5;vx = 0;break;case'W':case'w':vy = 5;vx = 0;break;case'D':case'd':vx = 5;vy = 0;break;}}}}
相关文章:

easyx图形库基础:2.基本运动+键盘交互
基本运动键盘交互 一.基本运动1.基本运动:1.如何实现动画:2.实现一个小球从左到右从右到左:(往返运动)3.实现一个五角星的移动:4.实现一个五角星自转和圆周运动的集合:(圆周运动&…...

计算机竞赛 opencv 图像识别 指纹识别 - python
0 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 基于机器视觉的指纹识别系统 🥇学长这里给一个题目综合评分(每项满分5分) 难度系数:3分工作量:3分创新点:4分 该项目较为新颖,适…...

UI自动化测试常见的Exception
一. StaleElementReferenceException: - 原因:引用的元素已过期。原因是页面刷新了,此时当然找不到之前页面的元素。- 解决方案:不确定什么时候元素就会被刷新。页面刷新后重新获取元素的思路不变,这时可以使用python的…...

魔棒:手机智能无人直播软件多少钱?
无人直播因为直播门槛低,不需要真人出镜,不需要请主播,加上可以24小时直播卖券,效果出奇的好,一时很受广大商家的欢迎,那么,这种ai智能无人直播软件究竟多少钱呢? 当然,…...
网络安全 Day-32 Linux 系统定时任务补充
定时任务补充 1. 定时任务在生产时任务场景2. 定时任务实践 1. 定时任务在生产时任务场景 每天零点对系统数据备份每天我晚上零点统计财务报表每分钟剪口没有人进入计算机 2. 定时任务实践 定时任务服务启动:systemctl start crondsystemctl enable crond查看配置…...

【OpenGauss源码学习 —— 执行算子(hash join 算子)】
执行算子(hash join 算子) 连接算子hash join算子ExecInitHashJoin函数HashJoinState结构体TupleTableSlot 结构体JoinState结构体PlanState结构体ExecInitHashJoin函数部分代码介绍 ExecHashJoin函数调试信息 ExecEndHashJoin函数ExecReScanHashJoin函数…...

[Go版]算法通关村第十二关青铜——不简单的字符串转换问题
目录 题目:转换成小写字母思路分析:大写字母ASCII码 32 小写字母ASCII码Go代码Go代码-优化: 大写字母ASCII码 | 32 小写字母ASCII码 题目:字符串转换整数(atoi)思路分析:去除首部空格 明确正负 读取数…...

十种排序算法(附动图)
排序算法 一、基本介绍 排序算法比较基础,但是设计到很多计算机科学的想法,如下: 1、比较和非比较的策略 2、迭代和递归的实现 3、分而治之思想 4、最佳、最差、平均情况时间复杂度分析 5、随机算法 二、排序算法的分类 …...

【校招VIP】测试类型之兼容性测试分析
考点介绍: 兼容性是测试工作里面比较复杂的一种情况,也是校招里面考察的一个重点,需要从屏幕功能,数据,操作系统等多个维度进行分析。 『测试类型之兼容性测试分析』相关题目及解析内容可点击文章末尾链接查看&#x…...

STM32--TIM定时器(1)
文章目录 TIM简介定时器类型 通用定时器预分频器时序计数器时序定时中断基本结构TIM内部中断工程TIM外部中断工程 TIM简介 STM32的TIM(定时器)是一种非常常用的外设,用于实现各种定时和计数功能。它是基于时钟信号进行计数,并在计…...
Android取证——基础知识
目录 一、安卓系统版本 二、安装操作系统UI 三、鉴权码 1.IMEI(手机序列号) 2.ICCID...

【学习心得】安装cuda/cudann和pytorch
一、查看驱动信息 # 进入CMD输入命令 nvidia-smi 也可以右下角图标打开NVIDIA 设置进行查看 二、下载安装CUDA 1、下载 下载地址 https://developer.nvidia.com/ 2、安装 推荐自定义安装。建议只勾选Cuda,只安装这一个就好,以免报错安装失败。 3、验证…...

中电金信通过KCSP认证 云原生能力获权威认可
中电金信通过KCSP(Kubernetes Certified Service Provider)认证,正式成为CNCF(云原生计算基金会)官方认证的 Kubernetes 服务提供商。 Kubernetes是容器管理编排引擎,底层实现为容器技术,是云原…...
【Spring】Bean的实例化
1、简介 在容器中的Bean要实例化为对象有三种方式 1、构造方法 2、静态工厂 3、实例工厂 4、实现工厂接口 2、构造方法 构造方法实例化Bean即是直接通过构造方法创建对象 <bean id"bookDao" class"com.wn.spring.dao.impl.BookDaoImpl"/> 当不存在…...

2023牛客暑期多校训练营8-C Clamped Sequence II
2023牛客暑期多校训练营8-C Clamped Sequence II https://ac.nowcoder.com/acm/contest/57362/C 文章目录 2023牛客暑期多校训练营8-C Clamped Sequence II题意解题思路代码 题意 解题思路 先考虑不加紧密度的情况,要支持单点修改,整体查询࿰…...

【GitLab私有仓库】如何在Linux上用Gitlab搭建自己的私有库并配置cpolar内网穿透?
文章目录 前言1. 下载Gitlab2. 安装Gitlab3. 启动Gitlab4. 安装cpolar5. 创建隧道配置访问地址6. 固定GitLab访问地址6.1 保留二级子域名6.2 配置二级子域名 7. 测试访问二级子域名 前言 GitLab 是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具…...

企业计算机服务器遭到了locked勒索病毒攻击如何解决,勒索病毒解密
网络技术的不断发展,也为网络安全埋下了隐患,近期,我们收到很多企业的求助,企业的计算机服务器遭到了locked勒索病毒的攻击,导致企业的财务系统内的所有数据被加密无法读取,严重影响了企业的正常运行。最近…...

Redis哨兵模式搭建
Redis主从复制搭建 Redis虽然拥有非常高的性能,但是在实际的生产环境中,使用单机模式还是会产生不少问题的,比如说容易出现 单机故障,容量瓶颈,以及QPS瓶颈等问题。通常环境下,主从复制、哨兵模式、Redis…...
大语言模型控制生成的过程Trick:自定义LogitsProcessor实践
前言 在大模型的生成过程中,部分原生的大语言模型未经过特殊的对齐训练,往往会“胡说八道”的生成一些敏感词语等用户不想生成的词语,最简单粗暴的方式就是在大模型生成的文本之后,添加敏感词库等规则手段进行敏感词过滤…...

Docker容器:docker的资源控制及docker数据管理
文章目录 一.docker的资源控制1.CPU 资源控制1.1 资源控制工具1.2 cgroups有四大功能1.3 设置CPU使用率上限1.4 进行CPU压力测试1.5 设置50%的比例分配CPU使用时间上限1.6 设置CPU资源占用比(设置多个容器时才有效)1.6.1 两个容器测试cpu1.6.2 设置容器绑…...

label-studio的使用教程(导入本地路径)
文章目录 1. 准备环境2. 脚本启动2.1 Windows2.2 Linux 3. 安装label-studio机器学习后端3.1 pip安装(推荐)3.2 GitHub仓库安装 4. 后端配置4.1 yolo环境4.2 引入后端模型4.3 修改脚本4.4 启动后端 5. 标注工程5.1 创建工程5.2 配置图片路径5.3 配置工程类型标签5.4 配置模型5.…...
云计算——弹性云计算器(ECS)
弹性云服务器:ECS 概述 云计算重构了ICT系统,云计算平台厂商推出使得厂家能够主要关注应用管理而非平台管理的云平台,包含如下主要概念。 ECS(Elastic Cloud Server):即弹性云服务器,是云计算…...
Leetcode 3576. Transform Array to All Equal Elements
Leetcode 3576. Transform Array to All Equal Elements 1. 解题思路2. 代码实现 题目链接:3576. Transform Array to All Equal Elements 1. 解题思路 这一题思路上就是分别考察一下是否能将其转化为全1或者全-1数组即可。 至于每一种情况是否可以达到…...
rknn优化教程(二)
文章目录 1. 前述2. 三方库的封装2.1 xrepo中的库2.2 xrepo之外的库2.2.1 opencv2.2.2 rknnrt2.2.3 spdlog 3. rknn_engine库 1. 前述 OK,开始写第二篇的内容了。这篇博客主要能写一下: 如何给一些三方库按照xmake方式进行封装,供调用如何按…...

K8S认证|CKS题库+答案| 11. AppArmor
目录 11. AppArmor 免费获取并激活 CKA_v1.31_模拟系统 题目 开始操作: 1)、切换集群 2)、切换节点 3)、切换到 apparmor 的目录 4)、执行 apparmor 策略模块 5)、修改 pod 文件 6)、…...

uniapp微信小程序视频实时流+pc端预览方案
方案类型技术实现是否免费优点缺点适用场景延迟范围开发复杂度WebSocket图片帧定时拍照Base64传输✅ 完全免费无需服务器 纯前端实现高延迟高流量 帧率极低个人demo测试 超低频监控500ms-2s⭐⭐RTMP推流TRTC/即构SDK推流❌ 付费方案 (部分有免费额度&#x…...
【服务器压力测试】本地PC电脑作为服务器运行时出现卡顿和资源紧张(Windows/Linux)
要让本地PC电脑作为服务器运行时出现卡顿和资源紧张的情况,可以通过以下几种方式模拟或触发: 1. 增加CPU负载 运行大量计算密集型任务,例如: 使用多线程循环执行复杂计算(如数学运算、加密解密等)。运行图…...

MySQL 知识小结(一)
一、my.cnf配置详解 我们知道安装MySQL有两种方式来安装咱们的MySQL数据库,分别是二进制安装编译数据库或者使用三方yum来进行安装,第三方yum的安装相对于二进制压缩包的安装更快捷,但是文件存放起来数据比较冗余,用二进制能够更好管理咱们M…...
多模态图像修复系统:基于深度学习的图片修复实现
多模态图像修复系统:基于深度学习的图片修复实现 1. 系统概述 本系统使用多模态大模型(Stable Diffusion Inpainting)实现图像修复功能,结合文本描述和图片输入,对指定区域进行内容修复。系统包含完整的数据处理、模型训练、推理部署流程。 import torch import numpy …...

实战三:开发网页端界面完成黑白视频转为彩色视频
一、需求描述 设计一个简单的视频上色应用,用户可以通过网页界面上传黑白视频,系统会自动将其转换为彩色视频。整个过程对用户来说非常简单直观,不需要了解技术细节。 效果图 二、实现思路 总体思路: 用户通过Gradio界面上…...