easyX实现自由落体小球

简介: 本文介绍了使用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的反向

相关文章
|
11月前
|
Dubbo JavaScript Java
SpringBoot 调用外部接口的三种方式
SpringBoot不仅继承了Spring框架原有的特性,还简化了应用搭建与开发流程。在SpringBoot项目中,有时需要访问外部接口或URL。本文介绍三种不使用Dubbo的方式:一是利用原生`httpClient`发起请求;二是使用`RestTemplate`,支持GET和POST请求,包括`getForEntity`、`getForObject`及`postForEntity`等方法;三是采用`Feign`客户端简化HTTP请求,需引入相关依赖并在启动类上启用Feign客户端。这三种方式均能有效实现对外部服务的调用。
376 0
|
9月前
|
C++
EasyX之太空人表盘(2021-6-16)
这篇文章介绍了如何使用C++和EasyX库制作一个太空人表盘程序,包括绘制圆盘、文字、动画、动态时间显示以及音乐播放等功能,并提供了详细的代码实现。
87 0
EasyX之太空人表盘(2021-6-16)
|
9月前
|
安全 C++
EasyX见缝插针
这篇博客介绍了如何使用C++和EasyX图形库来实现一个见缝插针的小游戏,包括绘制圆盘和针、实现旋转、发射针、判断游戏输赢以及绘制分数等功能。
129 0
EasyX见缝插针
|
9月前
EasyX之跳跳球
本文介绍了如何使用EasyX库开发一个跳跳球游戏,包括绘制小球和矩形、实现小球的起跳与下落、处理矩形的移动、解决小球二次起跳问题、判断游戏结束条件以及打印分数。
134 0
EasyX之跳跳球
|
9月前
easyX类平抛小球
本文展示了如何使用easyX库创建一个类平抛运动的小球,通过增加水平速度分量并处理水平和垂直方向的加速度以及边界反弹效果。
61 0
easyX类平抛小球
|
8月前
|
机器学习/深度学习 算法 量子技术
量子计算的最新进展:从理论到实践的跨越
量子计算的最新进展:从理论到实践的跨越
|
11月前
|
存储 关系型数据库 MySQL
2022年最新最详细的MYSQL数据库安装(详细图解过程、毕成功)
这篇文章提供了2022年最新最详细的MYSQL数据库安装教程,包括下载、安装步骤图解、初始化配置文件创建、登录密码修改注意事项,并分享了作者在安装过程中遇到的常见问题及其解决方法。
2022年最新最详细的MYSQL数据库安装(详细图解过程、毕成功)
|
11月前
|
前端开发 UED
触屏新体验:CSS动画让移动端底部导航活起来!
触屏新体验:CSS动画让移动端底部导航活起来!
|
11月前
|
前端开发
CSS动画新境界:打造逼真的水罐摇晃动效!
CSS动画新境界:打造逼真的水罐摇晃动效!
|
资源调度 前端开发 JavaScript
web实现酷炫的canvas粒子动画背景
web实现酷炫的canvas粒子动画背景
337 0
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等

登录插画

登录以查看您的控制台资源

管理云资源
状态一览
快捷访问