弹跳球模拟程序

本程序根据物理原理模拟一个球自由落体并持续弹跳的效果,小球只受重力影响,忽略空气阻力,反弹时能量损耗 10%。

程序源代码如下:

#include <graphics.h>
#include <conio.h>

void main()
{
	double h = 300;				// 高度
	double v = 0;				// 速度(方向向下)
	double dv = 9.8 / 50;		// 加速度(每 1/50 秒)

	// 初始化绘图窗口
	initgraph(640, 480);

	// 画地平线
	line(100, 421, 540, 421);

	while (!_kbhit())
	{
		v += dv;				// 根据加速度计算速度
		h -= (v - dv / 2);		// 计算高度

		// 如果高度低于地平线,实现反弹,速度方向取反
		if (h <= 0)
		{
			h += (v - dv / 2);
			v = -v * 0.9;		// 反弹时能量损耗 10%
		}

		// 画绿色球
		setcolor(GREEN);
		circle(320, 400 - int(h), 20);

		Sleep(20);				// 延时(每帧延时 1/50 秒)

		// 擦掉球
		setcolor(BLACK);
		circle(320, 400 - int(h), 20);
	}

	// 关闭绘图窗口
	closegraph();
}

结果:

发布了109 篇原创文章 · 获赞 179 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/weixin_44350205/article/details/105667509