EasyX实现自由落体小球

 更新时间:2022年03月31日 15:08:22   作者:石小浪♪  
这篇文章主要为大家详细介绍了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++中指向结构体变量的指针

    C++中指向结构体变量的指针

    结构体变量的指针就是该变来那个所占据的内存段的起始地址。可以设一个指针变量,来指向一个结构体变量,此时该指针变量的值是结构体变量的起始地址
    2013-10-10
  • C语言实现设备管理系统

    C语言实现设备管理系统

    这篇文章主要为大家详细介绍了C语言实现设备管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-06-06
  • C语言实现简单扫雷源码

    C语言实现简单扫雷源码

    这篇文章主要为大家详细介绍了C语言实现简单扫雷源码,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-04-04
  • C++ using 编译指令与名称冲突问题

    C++ using 编译指令与名称冲突问题

    using 编译指令由名称空间名和它前面的关键字 using namespace 组成,它使名称空间中的所有名称都可用,而不需要使用作用域解析运算符,这篇文章主要介绍了C++ using 编译指令与名称冲突,需要的朋友可以参考下
    2022-11-11
  • C语言实现手写Map(全功能)的示例代码

    C语言实现手写Map(全功能)的示例代码

    这篇文章主要为大家详细介绍了如何利用C语言实现手写Map(全功能),文中的示例代码讲解详细,对我们学习C语言有一定帮助,需要的可以参考一下
    2022-08-08
  • Qt TCP网络通信学习

    Qt TCP网络通信学习

    用于数据传输的低层网络协议,多个物联网协议都是基于TCP协议的,这篇文章为大家介绍了Qt TCP网络通信,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-08-08
  • 详解C++中十六进制字符串转数字(数值)

    详解C++中十六进制字符串转数字(数值)

    这篇文章主要介绍了详解C++中十六进制字符串转数字(数值)的相关资料,这里提供两种实现方法,需要的朋友可以参考下
    2017-08-08
  • C语言冒泡排序法的实现(升序排序法)

    C语言冒泡排序法的实现(升序排序法)

    这篇文章主要介绍了C语言冒泡排序法的实现(升序排序法),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-09-09
  • C语言通过案例讲解并发编程模型

    C语言通过案例讲解并发编程模型

    所谓并发编程是指在一台处理器上“同时”处理多个任务。并发是在同一实体上的多个事件。多个事件在同一时间间隔发生,下面我们根据样例来理解
    2022-04-04
  • C语言实现随机抢红包功能

    C语言实现随机抢红包功能

    这篇文章主要为大家详细介绍了C语言实现随机抢红包功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-07-07

最新评论