当前位置:主页 > c/c++教程 > EasyX自由落体小球

EasyX实现自由落体小球

发布:2022-12-02 14:17:52 59


给大家整理一篇c++相关的编程文章,网友通承志根据主题投稿了本篇教程内容,涉及到EasyX自由落体小球、EasyX自由落体、EasyX小球、EasyX自由落体小球相关内容,已被538网友关注,相关难点技巧可以阅读下方的电子资料。

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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持码农之家。


相关文章

  • c++连接mysql数据库的两种方法(ADO连接和mysql api连接)

    发布:2022-10-19

    为网友们分享了关于c++的教程,现在正做一个接口,通过不同的连接字符串操作不同的数据库。要用到mysql数据库,C++连接mysql有2种方法:利用ADO连接、利用mysql自己的api函数进行连接,下面看看如何用吧


  • VS2019中CMake项目如何指定c++语言标准

    发布:2022-11-03

    给网友们整理关于c++的教程,这篇文章主要介绍了VS2019中CMake项目如何指定c++语言标准,需要的朋友可以参考下


  • 解析c++中参数对象与局部对象的析构顺序的详解

    发布:2022-04-15

    本篇文章是对c++中参数对象与局部对象的析构顺序进行了详细的分析介绍,需要的朋友参考下


  • 如何理解C++ 临时变量的常量性

    发布:2022-04-02

    这篇文章主要介绍了如何理解C++ 临时变量的常量性,帮助大家更好的理解和学习c++ 变量,感兴趣的朋友可以了解下


  • 关于C++ string和c类型字符数组的对比

    发布:2022-10-21

    为网友们分享了关于C++的教程,下面小编就为大家带来一篇关于C++ string和c类型字符数组的对比。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧


  • 详解C++中shared_ptr的使用教程

    发布:2022-10-26

    给大家整理一篇关于C++的教程,shared_ptr能够记录对象被引用的次数,主要被用来管理动态创建的对象的销毁,这里我们就来详解C++中shared_ptr的使用教程,需要的朋友可以参考下


  • C/C++函数调用栈的实现方法

    发布:2022-06-22

    给网友朋友们带来一篇关于C++的教程,这篇文章主要介绍了C/C++函数调用栈的实现方法,可实现一个简单的脚本解释器,具有一定的参考借鉴价值,需要的朋友可以参考下


  • C++连接mysql的方法(直接调用C-API)

    C++连接mysql的方法(直接调用C-API)

    发布:2022-06-21

    给大家整理一篇关于C++的教程,首先安装mysql,点完全安装,才能在在安装目录include找到相应的头文件,注意,是完全安装,需要的朋友可以参考下


  • C++和Java命令行绘制心形图代码分享

    发布:2020-04-21

    这篇文章主要为大家详细介绍了C++和Java命令行绘制心形图案,具有一定的参考价值,感兴趣的小伙伴们可以参考一下


网友讨论