今天来实现一下触墙能反弹的小球、
我们之前所实现的都只是小球的上下,也就是y轴方向的运动(详见:C++图形开发(6):落下后能弹起的小球),那么要使小球能够呈抛物线状运动,我们就需要让x轴方向也跟着运动起来。
也就是:
抛物线运动也就是:
那么我们还要实现一个x轴的运动,显然就也需要定义x轴上的时间和速度,所以我们需要定义的变量为:
double x = 100;
double y = 100;
double vx = 2;
double vy = 0;
double g = 0.9832;
因为x方向小球没有受力,所以vx的值是不变的,但y方向 小球会受到一个向下的重力,所以要做改变(其实还会受到一个向上的阻力,这里忽略不计了)
整段代码:
#include<graphics.h>
#include<conio.h>
#include<stdio.h>
int main() {
double x = 100;
double y = 100;
double vx = 2;
double vy = 0;
double g = 0.9832;
initgraph(600, 600);
while (1) {
vy = vy + g;
y = y + vy;
x = x + vx;
cleardevice();
fillcircle(x, y, 20);
Sleep(10);
if (y >= 580 || y <= 20) {
vy = -vy;
}
if (x >= 580 || x <= 20) {
vx = -vx;
}
}
_getch();
closegraph();
}
效果: