easyX实现自由落体小球

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的反向

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

石小浪♪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值