EASYX动画效果实现

news2024/11/26 16:39:38

eg1:绘制小球的动画效果

  • 通过一下的代码实现小球从左向右移动效果,计算小球的移动速度和帧率实现移动效果平和造成视觉上的错觉
#include <stdio.h>
#include <easyx.h>
#include <iostream>
#include <math.h>
#define PI 3.14
// 1PI = 180度 2PI = 360度

int main()
{
    // 编写动画的效果
    initgraph(800, 600);
    setorigin(400, 300);;
    setaspectratio(1, -1);
    // 创建动画背景
    setbkcolor(RGB(164, 225, 202));
    // 清除原来的背景颜色,换上我们给定的背景颜色
    cleardevice();
    // 设置填充的颜色为白色
    setfillcolor(WHITE);
    // 绘制出圆在每一个时刻的静态画面
    int x = 0;
    int y = 0;
    for (x = -400; x <= 400; x += 5) {
        // 清除之前绘制的画面
        cleardevice();
        solidcircle(x, y, 50);
        // sleep()函数起到的作用是休眠
        Sleep(40);
    }
    // 延时
    getchar();
    closegraph();
    return 0;
}

eg2:实现五角星往返运动

#include <stdio.h>
#include <easyx.h>
#include <iostream>
#include <math.h>
#define PI 3.14
// 1PI = 180度 2PI = 360度

// 绘制五角星的函数,参数radius表示的是五角星外切圆的半径,参数startAngle是五角星的起始角度x, y 表示移动五角星的坐标
void fivePointedStar(int x,int y ,int radius, double startAngle) {
    double delta = 2 * PI / 5;
    POINT points[5];
    // 循环5次
    for (int i = 0; i < 5; i++) {
        // 使用三角函数计算出如何绘画五角星和五角星绘画的位置
        points[i].x = cos(startAngle + i * delta * 2) * radius + x;
        points[i].y = sin(startAngle + i * delta * 2) * radius + y;
    }
    solidpolygon(points, 5);
}

int main()
{
    // 编写动画的效果
    initgraph(800, 600);
    setorigin(400, 300);;
    setaspectratio(1, -1);
    // 创建动画背景
    setbkcolor(RGB(164, 225, 202));
    // 清除原来的背景颜色,换上我们给定的背景颜色
    cleardevice();
    // 设置填充的颜色为白色
    setfillcolor(WHITE);
    // 指定多边形的填充模式为winding
    setpolyfillmode(WINDING);
    // 绘制出圆在每一个时刻的静态画面
    int x = 0;
    int y = 0;
    int dx = 5;
    while (1) {
        cleardevice();
        fivePointedStar(x, y, 50, PI / 2);
        Sleep(40);

        x = x + dx;
        if (x == -400 || x == 400) {
            dx = -dx;
        }
    }
    for (x = -400; x <= 400; x += 5) {
        // 清除之前绘制的画面
        cleardevice();
        fivePointedStar(x, y, 50, PI / 2);
        // sleep()函数起到的作用是休眠
        Sleep(40);
    }
    // 延时
    getchar();
    closegraph();
    return 0;

}

在这里插入图片描述
eg3:实现五角星实现矩形运动

#include <stdio.h>
#include <easyx.h>
#include <iostream>
#include <math.h>
#define PI 3.14
// 1PI = 180度 2PI = 360度

// 绘制五角星的函数,参数radius表示的是五角星外切圆的半径,参数startAngle是五角星的起始角度x, y 表示移动五角星的坐标
void fivePointedStar(int x,int y ,int radius, double startAngle) {
    double delta = 2 * PI / 5;
    POINT points[5];
    // 循环5次
    for (int i = 0; i < 5; i++) {
        // 使用三角函数计算出如何绘画五角星和五角星绘画的位置
        points[i].x = cos(startAngle + i * delta * 2) * radius + x;
        points[i].y = sin(startAngle + i * delta * 2) * radius + y;
    }
    solidpolygon(points, 5);
}

int main()
{
    // 编写动画的效果
    initgraph(800, 600);
    setorigin(400, 300);;
    setaspectratio(1, -1);
    // 创建动画背景
    setbkcolor(RGB(164, 225, 202));
    // 清除原来的背景颜色,换上我们给定的背景颜色
    cleardevice();
    // 设置填充的颜色为白色
    setfillcolor(WHITE);
    // 指定多边形的填充模式为winding
    setpolyfillmode(WINDING);
    int x = -300;
    int y = 200;
    int dx, dy;
    while (1) {
        if (x == -300 && y == 200) {
            dx = 5;
            dy = 0;
        }
        else if (x == 300 && y == 200) {
            dx = 0;
            dy = -5;
        }
        else if (x == 300 && y == -200) {
            dx = -5;
            dy = 0;
        }
        else if (x == -300 && y == -200) {
            dx = 0;
            dy = 5;
        }
        cleardevice();
        fivePointedStar(x, y, 50, PI / 2);
        // sleep()函数起到的作用是休眠
        Sleep(40);
        x = x + dx;
        y = y + dy;
    }
     

    for (x = -400; x <= 400; x += 5) {
        // 清除之前绘制的画面
        cleardevice();
        fivePointedStar(x, y, 50, PI / 2);
        // sleep()函数起到的作用是休眠
        Sleep(40);
    }
    // 延时
    getchar();
    closegraph();
    return 0;

}

在这里插入图片描述
eg4:让五角星实现圆周运动
在这里插入图片描述

#include <stdio.h>
#include <easyx.h>
#include <iostream>
#include <math.h>
#define PI 3.14
// 1PI = 180度 2PI = 360度

// 绘制五角星的函数,参数radius表示的是五角星外切圆的半径,参数startAngle是五角星的起始角度x, y 表示移动五角星的坐标
void fivePointedStar(int x,int y ,int radius, double startAngle) {
    double delta = 2 * PI / 5;
    POINT points[5];
    // 循环5次
    for (int i = 0; i < 5; i++) {
        // 使用三角函数计算出如何绘画五角星和五角星绘画的位置
        points[i].x = cos(startAngle + i * delta * 2) * radius + x;
        points[i].y = sin(startAngle + i * delta * 2) * radius + y;
    }
    solidpolygon(points, 5);
}

int main()
{
    // 编写动画的效果
    initgraph(800, 600);
    setorigin(400, 300);;
    setaspectratio(1, -1);
    // 创建动画背景
    setbkcolor(RGB(164, 225, 202));
    // 清除原来的背景颜色,换上我们给定的背景颜色
    cleardevice();
    // 设置填充的颜色为白色
    setfillcolor(WHITE);
    // 指定多边形的填充模式为winding
    setpolyfillmode(WINDING);
    int x, y;
    int r = 200;
    double theta = 0;
    double dTheta = 0.05;
    while (1) {
        x = cos(theta) * r;
        y = sin(theta) * r;
        cleardevice();
        fivePointedStar(x, y, 50, PI / 2);
        // sleep()函数起到的作用是休眠
        Sleep(40);
        theta = theta + dTheta;
    }
     

    for (x = -400; x <= 400; x += 5) {
        // 清除之前绘制的画面
        cleardevice();
        fivePointedStar(x, y, 50, PI / 2);
        // sleep()函数起到的作用是休眠
        Sleep(40);
    }
    // 延时
    getchar();
    closegraph();
    return 0;

}

在这里插入图片描述
eg5:实现动画的自传移动效果

#include <stdio.h>
#include <easyx.h>
#include <iostream>
#include <math.h>
#define PI 3.14
// 1PI = 180度 2PI = 360度

// 绘制五角星的函数,参数radius表示的是五角星外切圆的半径,参数startAngle是五角星的起始角度x, y 表示移动五角星的坐标
void fivePointedStar(int x,int y ,int radius, double startAngle) {
    double delta = 2 * PI / 5;
    POINT points[5];
    // 循环5次
    for (int i = 0; i < 5; i++) {
        // 使用三角函数计算出如何绘画五角星和五角星绘画的位置
        points[i].x = cos(startAngle + i * delta * 2) * radius + x;
        points[i].y = sin(startAngle + i * delta * 2) * radius + y;
    }
    solidpolygon(points, 5);
}

int main()
{
    // 编写动画的效果
    initgraph(800, 600);
    setorigin(400, 300);;
    setaspectratio(1, -1);
    // 创建动画背景
    setbkcolor(RGB(164, 225, 202));
    // 清除原来的背景颜色,换上我们给定的背景颜色
    cleardevice();
    // 设置填充的颜色为白色
    setfillcolor(WHITE);
    // 指定多边形的填充模式为winding
    setpolyfillmode(WINDING);
    int x, y;
    int r = 200;

    double theta = 0;
    double dTheta = 0.05;
    
    double startAngle = PI / 2;
    double dStartAngle = 0.05;
    while (1) {
    
        x = cos(theta) * r;
        y = sin(theta) * r;
    
        cleardevice();
        fivePointedStar(x, y, 50, startAngle);
        Sleep(40);
    
        theta = theta + dTheta;
        startAngle = startAngle + dStartAngle;
    }
     
    for (x = -400; x <= 400; x += 5) {
        // 清除之前绘制的画面
        cleardevice();
        fivePointedStar(x, y, 50, PI / 2);
        // sleep()函数起到的作用是休眠
        Sleep(40);
    }
    // 延时
    getchar();
    closegraph();
    return 0;

}

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1146829.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Word批量删除文档属性和个人信息方法图解

投标文件中设计敏感信息&#xff0c;在投标前必须删除&#xff0c;Word批量删除文档属性和个人信息方法图解&#xff1a; 右键word文件属性--详细信息&#xff0c;可以查看如下信息&#xff1b; 删除上述信息的办法&#xff1a; 1.打开word文件---文件 2.检查文档、检查文档 检…

Kubernetes的hostpath创建pv和pvc的验证---以部署halo博客系统为例

结论&#xff1a;hostapath作为一种存储类型是支持使用pv及pvc声明使用的。 缘由&#xff1a;最近在寻求云计算方向的运维管理岗位&#xff0c;周五晚上参加了一个头部大厂的西安岗位电面&#xff0c;面试人似乎不情愿作为本场考评的面试官&#xff0c;我在电子会议等了大约17分…

C++ 动态规划 DP教程 (一)思考过程(*/ω\*)

动态规划是一种思维方法&#xff0c;大家首先要做的就是接受这种思维方法&#xff0c;认同他&#xff0c;然后再去运用它解决新问题。 动态规划是用递推的思路去解决问题。 首先确定问题做一件什么事情&#xff1f; 对这件事情分步完成&#xff0c;分成很多步。 如果我们把整件…

【0基础学Java第三课】-- 运算符

3. 运算符 3.1 什么是运算符3.2 算术运算符3.2.1 **基本四则运算符&#xff1a;加减乘除模( - * / %&#xff09;**3.2.2 增量运算符 - * %3.2.3 自增/自减运算符 -- 3.3 关系运算符3.4逻辑运算符(重点)3.4.1 逻辑与 &&3.4.2 逻辑 ||3.4.3逻辑非 !3.4.4 短路求值 3.5 …

Lauterbach使用指南之RunTime功能

Lauterbach使用指南之RunTime功能 前言 首先&#xff0c;请问大家几个小小问题&#xff0c;你清楚&#xff1a; Lauterbach这个工具是干什么用的吗&#xff1f;在软件运行过程中如何测量两个运行point之间的runtime时间呢&#xff1f;Lauterbach的RunTime功能具体应当如何来操…

Linux中shell脚本的基础知识

目录 一、shell脚本的意义 二、如何创建shell脚本 三、如何执行shell脚本 四、如何对脚本进行调试 五、练习 一、shell脚本的意义 1、shell&#xff1a;脚本中命令的解释器 2、脚本的意义&#xff1a; 记录命令执行的过程和执行逻辑&#xff0c;以便以后重复执行脚本可以…

matlabR2021a正版免费使用

目录 matlab介绍&#xff1a; 安装&#xff1a; matlab介绍&#xff1a; MATLAB&#xff08;Matrix Laboratory的缩写&#xff09;是一种高级技术计算和编程环境&#xff0c;由MathWorks公司开发。它在科学、工程、数据分析和数学建模领域中广泛应用&#xff0c;为用户提供了…

【RTOS学习】互斥管理 | 调试 | 信息统计

&#x1f431;作者&#xff1a;一只大喵咪1201 &#x1f431;专栏&#xff1a;《RTOS学习》 &#x1f525;格言&#xff1a;你只管努力&#xff0c;剩下的交给时间&#xff01; 互斥管理 | 调试 | 信息统计 &#x1f349;互斥管理&#x1f330;屏蔽中断&#x1f330;暂停调度器…

VMware Horizon 8 2309 Enterprise虚拟桌面

VMware Horizon 8 2309 Enterprise虚拟桌面 一、虚拟桌面二、产品发布三、VMware Horizon 8 2309 Enterprise1.VMware Horizon 8 2309 Enterprise产品清单2.安装部署3. 优化工具总结 一、虚拟桌面 利用虚拟桌面和应用随时随地进行访问。 从云端进行管理 使用云端控制台和 Saa…

IO线程及相关函数

进程是资源分配的最小单位&#xff0c;线程是cpu调度的最小单位 一、概念&#xff1a; 线程指的是共享相同地址空间的多个任务 是一个轻量级的进程&#xff0c;为了提高系统的性能引入线程&#xff0c;线程和进程都参与统一的调度 在同一个进程中创建的线程共享该进程的地址空间…

预制菜配送小程序商城的效果如何

预制菜是近些年热度较高的新赛道&#xff0c;很多商家品牌入局&#xff0c;而投入到市场中也受到不少商家的喜欢&#xff0c;各种品牌和经销商层出不穷&#xff0c;目前各品牌主要以拓展市场和研究菜品为主&#xff0c;而线上无疑是很好的宣传销售渠道。 接下来让我们看看通过…

搭建gnn环境

1.无法激活 激活pytorch遇到报错usage: conda-script.py [-h] [--no-plugins] [-V] COMMAND ... conda-script.py: error: arg-CSDN博客 参考教程 【精选】手把手教你在windows10安装GNN相关环境&#xff08;torchtorch_geometricrdkitdeepchem&#xff09;_gnn环境相关的包-…

Docker Consul概述及构建

Docker Consul概述及构建 一、Consul概述1.1、什么是Consul1.2、consul 容器服务更新与发现1.3、服务注册与发现的含义1.4、consul-template概述1.5、registrator的作用 二、consul部署2.1、环境配置2.2、在主节点上部署consul2.3 、配置容器服务自动加入nginx集群2.3.1、安装G…

【Linux】:进程程序替换

进程程序替换 一.替换原理二.替换函数三.exec类函数 一.替换原理 用fork创建子进程后执行的是和父进程相同的程序(但有可能执行不同的代码分支)&#xff0c;子进程往往要调用一种exec函数以执行另一个程序。当进程调用一种exec函数时&#xff0c;该进程的用户空间代码和数据完全…

CleanMyMac X2024永久免费版mac电脑管家

日常使用中&#xff0c;很多用户忽略了Mac清除数据的重要性。当Mac运行速度越来越慢&#xff0c;发热严重&#xff0c;储存空间总是不足的时候&#xff0c;才意识到保持日常清理才是解决这些问题的根本。经常清理Mac&#xff0c;还有你意想不到的好处。 提高系统性能&#xff…

React-快速搭建开发环境

1.安装 说明&#xff1a;react-excise-01是创建的文件名 npx create-react-app react-excise-01 2. 打开文件 说明:we suggest that you begin by typing:下面即是步骤。 cd react-excise-01 npm start 3.显示

HIT_OS_LAB1 调试分析 Linux 0.00 引导程序

操作系统实验一 姓名&#xff1a;董帅学号&#xff1a;2021111547班级&#xff1a;21R0312 1.1 实验目的 熟悉实验环境掌握如何手写Bochs虚拟机的配置文件掌握Bochs虚拟机的调试技巧掌握操作系统启动的步骤 1.2 实验内容 1.2.1 掌握如何手写Bochs虚拟机的配置文件 boot: f…

拉扎维模拟CMOS集成电路设计西交张鸿老师课程P10~13视频学习记录

--------------------------------------------------------------------------------------------------------------------------------- p10 短沟道&#xff0c;除了沟长调&#xff0c;还可能出现速度饱和问题&#xff1b; 但是在拉扎维这本书里面没有考虑这个问题&#…

python随手小练12(南农作业题)

题目&#xff1a; 设有四个字母:a bcd,能组成多少个互不相同且无重复数字的三个字母的单词?各是什么? 解题思路:遍历全部可能的组合,把有重复的删除 具体操作&#xff1a; total 0 s [0, a, b, c, d] #注意&#xff1a;不能写成[0, a, b, c, d] for i in range(1, 5): …

为什么数组的下标是从0开始呢?

我们在许多的编程语言中&#xff0c;大部分的数组下标都是从零开始的&#xff0c;那为什么不是从一开始的呢&#xff1f; 首先我们&#xff0c;先要了解数组相关的定义。 数组&#xff08;Array&#xff09;是一种线性表数据结构。它用一组连续的内存空间&#xff0c;来存储一…