EasyX实现自由落体小球
短信预约 -IT技能 免费直播动态提醒
本文实例为大家分享了EasyX实现自由落体小球的具体代码,供大家参考,具体内容如下
1. 要实现自由落体,首先得实现匀速下落
#include<graphics.h> //图形库头文件
#include<conio.h>
#include<cstdio>
#define WIDTH 400 //窗口宽度
#define HEIGHT 600 //窗口高度
int main()
{
//定义并初始化小球坐标
float ballX = WIDTH / 2;
float ballY = 10;
//创建窗口
initgraph(WIDTH, HEIGHT);
while (1)
{
ballY++; //改变小球的y坐标
cleardevice(); //清屏
fillcircle(ballX, ballY, 10); //绘制小球
Sleep(10); //暂停10毫秒
}
_getch(); //等待按键输入(卡屏作用)
closegraph(); //关闭窗口
return 0;
}
2.然后在匀速的基础上实现加速运动
(只需要实现y方向的增量不断改变即可)
#include<graphics.h>
#include<conio.h>
#include<cstdio>
#define WIDTH 400 //窗口宽度
#define HEIGHT 600 //窗口高度
int main()
{
//定义并初始化小球坐标
float ballX = WIDTH / 2;
float ballY = 10;
//定义小球初始下落速度
float vy = 0.0;
//定义小球下落加速度
float g = 0.5; //y方向的增量
//创建窗口
initgraph(WIDTH, HEIGHT);
while (1)
{
//实现加速下落
//改变下落速度
vy = vy + g;
//改变Y方向坐标
ballY = ballY + vy;
//做反弹处理
if (ballY >= 590)
vy = -0.95*vy; //改变vy的方向,加一点阻力
//做下边界处理
if (ballY > 590)
ballY = 590;
cleardevice(); //清屏
fillcircle(ballX, ballY, 10); //绘制小球
Sleep(100); //暂停100毫秒
}
_getch();
closegraph();
return 0;
}
要点一: 通过增量改变每一次 y 方向上值改变的不同
要点二: 下边界处理, 当 y >窗口高度 - 小球半径 时需要将 y 坐标置为 窗口高度 - 小球半径
要点三: vy的反向
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程网。
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341