当前位置: 首页 > news >正文

C/C++动态爱心

img

写在前面

用代码写一封情书——这是我在创作这个程序时最初的冲动。这不是一段普通的动画,而是一场献给“她”的视觉告白。通过C++与EasyX图形库的结合,我构建了一个不断跳动、缓缓绽放的爱心矩阵,每一颗跳动的“❤”都承载着情感的震颤。整个程序以数学函数为笔,以时间流逝为墨,在屏幕上绘出一颗永不熄灭的心。

系列文章

序号直达链接
1C/C++爱心代码
2C/C++跳动的爱心
3C/C++李峋同款跳动的爱心代码
4C/C++满屏飘字表白代码
5C/C++大雪纷飞代码
6C/C++烟花代码
7C/C++黑客帝国同款字母雨
8C/C++樱花树代码
9C/C++奥特曼代码
10C/C++精美圣诞树
11C/C++俄罗斯方块
12C/C++贪吃蛇
13C/C++孤单又灿烂的神-鬼怪
14C/C++闪烁的爱心
15C/C++哆啦A梦
16C/C++简单圣诞树
17C/C++小宇宙
18C/C++冰墩墩
19C/C++七彩花朵
20C/C++玫瑰花
21C/C++小猪佩奇
22C/C++简易爱心

技术需求

  1. 图形环境初始化:使用initgraph创建固定尺寸的绘图窗口,奠定视觉展示基础;通过BeginBatchDrawFlushBatchDraw实现双缓冲绘制,避免画面闪烁,提升动画流畅度。
  2. 动态数据管理:设计MyLove结构体封装每个心形元素的属性,包括位置、大小、状态和编号,实现数据与行为的统一管理,便于批量更新与渲染。
  3. 数学建模驱动运动:基于极坐标与经典心形函数(如 $ r = \sin(\theta)\sqrt{|\cos(\theta)|}/(\sin(\theta)+1.4142) - 2\sin(\theta) + 2 $)计算心形轨迹上的点分布,使整体图形符合数学美感。
  4. 随机化与去重机制:通过GetRand函数结合系统毫秒级时间戳生成种子,确保每次运行都有独特起点,并在生成过程中避免重复值,保证运动轨迹的多样性。
  5. 视觉表现优化:采用淡粉色(RGB(255,192,203))作为心形颜色,字体使用Arial并动态调整字号,配合透明背景模式(setbkmode(TRANSPARENT)),增强视觉柔和感与层次感。
  6. 精确延时控制:自定义HpSleep函数,利用clock()Sleep(1)结合实现接近毫秒级的延时精度,平衡CPU占用与动画节奏,确保动画稳定运行。
  7. 动画循环机制:主循环中持续调用更新、显示、刷新与清屏操作,形成闭环动画流程,模拟心跳般持续跳动的效果。

主要代码

创作不易,订阅后可查看完整代码

  • 《Python趣味编程》
  • 《C/C++趣味编程》
  • 《HTML趣味编程》
  • 《Java趣味编程》
#include<graphics.h>
#include<conio.h>
#include<time.h>
#include<math.h>
#include<sys/timeb.h>struct MyLove
{int NUMS;  // 编号double m;double n;double size;bool Is_show;int x;int y;
};MyLove mylove[400];
int CenterX = 1000 / 2 - 30; 
int CenterY = 600 / 2 - 100; 
double Size = 60;
void initdata();  // 初始化数据
void updata();    // 更新
void movedata();  // 平移
void showdata();  // 显示
int* GetRand(int* buf, int count, int range);  // 随机数的生成
void heart(int x0, int y0, int size, COLORREF C);
void HpSleep(int ms);……

创作流程

我开始写这段代码的时候,心里想的不是技术,而是“如何让一颗心真正活起来”。我不想做一个静态的图案,我想要的是呼吸、是脉动、是那种仿佛能听见心跳的声音。于是,我决定用数学来模拟爱的律动。

首先,我选择了心形函数作为核心公式。这个函数并不简单,它融合了正弦、余弦、绝对值与分式运算,能描绘出一个极具美感的立体心形轮廓。我知道,如果直接把所有点画出来,会显得死板。所以我引入了“时间”的概念——让这些点随着每一帧逐渐出现,像是从虚空中被召唤而来。

接着,我设计了一个包含400个元素的数组,每一个都代表一个跳动的“❤”。前20个是先锋,它们根据随机生成的角度参数实时计算位置,构成心形的前沿边界。而后面的380个则像是追随者,通过位移传递的方式,逐帧继承前面的位置信息,形成一种“波浪式推进”的视觉效果,就像心跳时血液的涌动。

为了让这个心不那么机械,我加入了随机性。每一次运行程序,都会从系统时间中提取毫秒级种子,生成一组不重复的初始角度。这样,每一次启动,都是独一无二的心跳节奏。同时,我还让每个字符的大小在一定范围内缓慢放大,模拟“膨胀”的感觉,仿佛这颗心正因激动而加速跳动。

在视觉呈现上,我选择了柔和的粉红色,字体用的是Arial,简洁而优雅。我把背景设为透明,不让任何多余的东西干扰这份纯粹的情感表达。每一个“❤”都微微偏移坐标,让它更自然地落在心形曲线上,而不是生硬地堆叠。

最让我纠结的是节奏。太快像抽搐,太慢又显得冷漠。于是我写了一个高精度延时函数,精确控制每一帧间隔为30毫秒,既不会卡顿,也不会过于急促。当整个画面开始循环刷新时,那种缓缓跳动的感觉终于出现了——像是深夜里,你静静听着另一个人的心跳。

这不仅仅是一个图形程序,它是我在用代码写诗。每一行都是思念的注解,每一次刷新都是情感的重燃。当那颗由400个“❤”组成的巨大心脏在屏幕上缓缓搏动时,我知道,我已经把最柔软的情绪,编译进了最坚硬的逻辑之中。

写在后面

我是一只有趣的兔子,感谢你的喜欢!


文章转载自:

http://ivIEbiVT.rjjjk.cn
http://3WvkLhSe.rjjjk.cn
http://ktdgutMM.rjjjk.cn
http://vFbNkQjA.rjjjk.cn
http://6VFUYlAK.rjjjk.cn
http://F0TyRp5U.rjjjk.cn
http://glsI1vrJ.rjjjk.cn
http://nIJw8lYQ.rjjjk.cn
http://9vso52mT.rjjjk.cn
http://sOc7xww4.rjjjk.cn
http://N1C7mF3u.rjjjk.cn
http://KVMTbGZM.rjjjk.cn
http://hiwu1nMn.rjjjk.cn
http://xL5QjStG.rjjjk.cn
http://HRSUl4ph.rjjjk.cn
http://wnq9kbxO.rjjjk.cn
http://Ibz1prM2.rjjjk.cn
http://v7C9ukYp.rjjjk.cn
http://iFkNmMVE.rjjjk.cn
http://OTRqWAJi.rjjjk.cn
http://fYcNaOWi.rjjjk.cn
http://HrrSWMXh.rjjjk.cn
http://hkq5TsXA.rjjjk.cn
http://ypffk8gT.rjjjk.cn
http://GZZfgaZZ.rjjjk.cn
http://jTnJNVij.rjjjk.cn
http://9LRCy6UY.rjjjk.cn
http://0k0uQjou.rjjjk.cn
http://vUo5sC3m.rjjjk.cn
http://K4gzHLvZ.rjjjk.cn
http://www.dtcms.com/a/370112.html

相关文章:

  • YOLOv8 在 Intel Mac 上的 Anaconda 一键安装教程
  • 关于 React 19 的四种组件通信方法
  • Joplin-解决 Node.js 中 “digital envelope routines::unsupported“ 错误
  • [论文阅读] 软件工程 - 需求工程 | 2012-2019年移动应用需求工程研究趋势:需求分析成焦点,数据源却藏着大问题?
  • sensitive-word 敏感词性能提升14倍优化全过程 v0.28.0
  • 留数法分解有理分式
  • 基于FPGA的汉明码编解码器系统(论文+源码)
  • C++经典的数据结构与算法之经典算法思想:排序算法
  • 大恒-NF相机如何控制风扇
  • 01.单例模式基类模块
  • 数位DP -
  • kotlin - 2个Fragment实现左右显示,左边列表,右边详情,平板横、竖屏切换
  • 基于SpringBoot+Thymeleaf开发的实验室助理工作管理系统
  • 手写MyBatis第53弹: @Intercepts与@Signature注解的工作原理
  • 基于SpringBoot+JSP开发的潮鞋网络商城
  • docker run 命令,不接it选项,run一个centos没有显示在运行,而run一个nginx却可以呢?
  • 【C++框架#3】Etcd 安装使用
  • 洛谷 P3178 [HAOI2015] 树上操作-提高+/省选-
  • Java全栈开发工程师的面试实战:从基础到复杂场景的技术探索
  • 【Flask】测试平台开发,重构提测管理页面-第二十篇
  • ICPC 2023 Nanjing R L 题 Elevator
  • TensorFlow 面试题及详细答案 120道(101-110)-- 底层原理与扩展
  • 《sklearn机器学习——聚类性能指标》Davies-Bouldin Index (戴维斯-博尔丁指数)
  • 美团9-6:编程题
  • 深度学习--自然语言预处理--- Word2Vec
  • Nikto 漏洞扫描工具使用指南
  • Redis(46) 如何搭建Redis哨兵?
  • Python零基础速成指南:12周从小白到项目实战
  • XXL-JOB源码分析(服务端)
  • 2025年财会专业人士职业发展认证路径分析