Easyx实现窗口自动碰撞的小球

 更新时间:2022年01月14日 09:01:30   作者:shi_xiaobin  
这篇文章主要为大家详细介绍了Easyx实现窗口自动碰撞的小球,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了Easyx实现窗口自动碰撞的小球的具体代码,供大家参考,具体内容如下

代码:

#include<easyx.h>
#include<stdlib.h>
#include<time.h>
 
int main()
{
    //创建窗口
    initgraph(640, 480);
 
    //定义小球的数据
    int bx = getwidth() / 2;
    int by = getheight() / 2;
    int br = 20;
    int xSpeed = 5;//速度
    int ySpeed = 5;
    
    //处理消息
    while (true)
    {
        int startTime = clock();//获取当前的毫秒数(程序启动到调用clock的时间)
        //双缓冲
        BeginBatchDraw();//开始双缓冲
        //清屏
        cleardevice();
        //绘制小球
        setfillcolor(GREEN);
        solidcircle(bx, by, br);
 
        //移动小球
        bx += xSpeed;
        by += ySpeed;
 
        //如果碰撞到边界就反弹
        if (bx+br>getwidth()||bx - br < 0)
        {
            xSpeed = -xSpeed;
        }
        if (by + br > getheight() || by - br < 0)
        {
            ySpeed = -ySpeed;
        }
        
        static ExMessage msg;//每次循环的时候,不要重新定义
        while (peekmessage(&msg,EM_MOUSE | EM_KEY))
        {
 
        }
        EndBatchDraw();//把内存中的图片显示到窗口上
 
        //fps帧数  一般游戏是24帧数或60帧数  怎么控制帧率  1000毫秒/60帧=16.666
        int frameTime = clock() - startTime;//获取当前帧执行了多少毫秒
        //如果当前帧执行时间小于美珍应该执行的时间(提前执行完毕)
        if (frameTime < 1000 / 60)
        {
            Sleep(1000 / 60 - frameTime);//多余的时间睡觉
            //Sleep(16);
        }
        
    }
 
    return 0;
}

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

相关文章

  • C语言小程序 杨辉三角示例代码

    C语言小程序 杨辉三角示例代码

    输入要显示的杨辉三角的行数,会打印出金字塔型的杨辉三角,不过行数太多的话,效果不太好,可以再调整一下格式控制
    2013-07-07
  • 如何使用递归和非递归方式反转单向链表

    如何使用递归和非递归方式反转单向链表

    以下是对使用递归和非递归方式反转单向链表的示例进行了详细的分析介绍,需要的朋友可以过来参考下
    2013-07-07
  • 一起来学习C++的函数指针和函数对象

    一起来学习C++的函数指针和函数对象

    这篇文章主要为大家详细介绍了C++函数指针和函数对象,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-03-03
  • 使用C/C++读取matlab中.mat格式数据的操作

    使用C/C++读取matlab中.mat格式数据的操作

    这篇文章给大家介绍了使用C/C++读取matlab中.mat格式数据的操作,文中通过图文结合的方式介绍的非常详细,对大家的学习或工作有一定的帮助,需要的朋友可以参考下
    2023-12-12
  • C++动态内存分配(new/new[]和delete/delete[])详解

    C++动态内存分配(new/new[]和delete/delete[])详解

    这篇文章主要介绍了C++动态内存分配(new/new[]和delete/delete[])详解的相关资料,需要的朋友可以参考下
    2017-05-05
  • Matlab实现鼠标光标变成爱心和瞄准镜形状

    Matlab实现鼠标光标变成爱心和瞄准镜形状

    这篇文章主要为大家详细介绍了如何利用Matlab实现将鼠标光标变成爱心和瞄准镜等形状,文中的示例代码讲解详细,感兴趣的可以了解一下
    2022-08-08
  • C实现的非阻塞方式命令行端口扫描器源码

    C实现的非阻塞方式命令行端口扫描器源码

    这篇文章主要介绍了C实现的非阻塞方式命令行端口扫描器源码,对于大家理解C端口扫描器有很大帮主,需要的朋友可以参考下
    2014-07-07
  • C语言逻辑运算符知识整理

    C语言逻辑运算符知识整理

    本文主要介绍C语言逻辑运算符,这里详细讲解了C语言中的逻辑运算符,并提供了实例代码以便大家学习参考,希望能帮助有需要的小伙伴
    2016-07-07
  • Qt拖放操作和打印操作的实现

    Qt拖放操作和打印操作的实现

    本文主要介绍了Qt拖放操作和打印操作的实现,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-04-04
  • C++之OpenCV图像高光调整具体流程

    C++之OpenCV图像高光调整具体流程

    PS中的高光命令是一种校正由于太接近相机闪光灯而有些发白的焦点的方法,对高光区和非高光区的边缘作平滑处理,接下来通过本文给大家分享C++之OpenCV图像高光调整具体流程,感兴趣的朋友一起看看吧
    2021-09-09

最新评论