亲宝软件园·资讯

展开

EasyX自由落体小球

石小浪♪ 人气:0

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

加载全部内容

相关教程
猜你喜欢
用户评论