1.前言

最近一部电视剧《点燃我,温暖你》可火啦,大家纷纷在搞男主阿瑟的同款爱心代码,但是虽然网上有它的源码,但都不是 C 语言的,看不懂。我看了一下这个视频,大致分析了一下它的运行过程。用语言描述一下,就是好多爱心,然后从内到外,从小到大的显示。

2.实现

对于这个程序的编写,我的思路是这样的。就如同将一头大象放到冰箱里。就是打开冰箱,放入大象,关上冰箱。编写程序也是如此。

首先就是计算坐标,更新坐标,绘制爱心,这样三步。重复调用,就可以实现。里面的具体细节,可以查看代码。

3.效果展示

3.编译环境:VS2019+easyx图形库插件

4.代码展示:

#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 = 320;
int CenterY = 180;
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);int main()
{initgraph(640, 480);initdata();BeginBatchDraw();while (true){updata();showdata();HpSleep(30);    // 改为精确延时FlushBatchDraw();cleardevice();}EndBatchDraw();_getch();return 0;
}void updata()
{int* buf = (int*)malloc(sizeof(int) * 20);buf = GetRand(buf, 20, (int)(2 * Size / 0.01));movedata();for (int i = 0; i < 20; i++){mylove[i].m = buf[i] * 0.01;mylove[i].n = (((sin(buf[(int)i] * 0.01) * sqrt(fabs(cos(buf[(int)i] * 0.01)))) / (sin(buf[(int)i] * 0.01) + 1.4142)) - 2 * sin(buf[(int)i] * 0.01) + 2);mylove[i].size = Size;mylove[i].NUMS = i / 20;mylove[i].Is_show = true;mylove[i].x = (int)(-Size * mylove[i].n * cos(mylove[i].m) + CenterX);mylove[i].y = (int)(-Size * mylove[i].n * sin(mylove[i].m) + CenterY - mylove[i].size);}for (int i = 20; i < 400; i++){mylove[i].size = mylove[i].size + 1;if (mylove[i].size > 80){mylove[i].size = 80;}mylove[i].NUMS = i / 20;mylove[i].x = (int)(-mylove[i].size * mylove[i].n * cos(mylove[i].m) + CenterX);mylove[i].y = (int)(-mylove[i].size * mylove[i].n * sin(mylove[i].m) + CenterY - mylove[i].size);}
}void movedata()
{for (int i = 399; i > 19; i--){mylove[i] = mylove[i - 20];}
}void showdata()
{settextcolor(RED);wchar_t c = 0x59;    // 0x28 是电话机在 Wingdings 字体中的对应编码for (int i = 0; i < 400; i++){settextstyle(mylove[i].NUMS + 10, 0, "Webdings");setbkmode(TRANSPARENT);outtextxy(mylove[i].x + 20, mylove[i].y + 20, c);}
}int* GetRand(int* buf, int count, int range)
{struct timeb timeSeed;ftime(&timeSeed);srand(timeSeed.time * 1000 + timeSeed.millitm);  // milli timefor (int i = 0; i < count; i++){int randTmp = rand() % range;for (int j = 0; j < i; j++){if (buf[j] == randTmp){break;//检查重复。}}buf[i] = randTmp;}return buf;
}void initdata()
{for (int i = 0; i < 400; i++){mylove[i].NUMS = 0;mylove[i].m = 0;mylove[i].n = 0;mylove[i].size = 0;mylove[i].Is_show = false;mylove[i].x = 0;mylove[i].y = 0;}
}// 精确延时函数(可以精确到 1ms,精度 ±1ms)
// by yangw80<yw80@qq.com>, 2011-5-4
void HpSleep(int ms)
{static clock_t oldclock = clock();    // 静态变量,记录上一次 tickoldclock += ms * CLOCKS_PER_SEC / 1000;  // 更新 tickif (clock() > oldclock)          // 如果已经超时,无需延时oldclock = clock();elsewhile (clock() < oldclock)      // 延时Sleep(1);            // 释放 CPU 控制权,降低 CPU 占用率,精度 10~16ms//      Sleep(0);            // 更高精度、更高 CPU 占用率,精度 1ms
}

 END


今天的分享到此结束了,更多C/C++项目分享欢迎点点关注~

源码素材直通车https://jq.qq.com/?_wv=1027&k=XesHSNyl

李峋同款的C语言动态爱心代码(终于不是html的啦)相关推荐

  1. 抖音上的c语言动态爱心代码,教程:利用Excel 制作 抖音上的心形动态函数图像 ,可以用来表白哈...

    本帖最后由 一笑倾城雪 于 2019-1-5 22:39 编辑 今天在抖音上看到一个抖友,发了一个短视频.视频中利用Excel制作出一个漂亮,并通过动态赋值,实现心形变化的函数图(如下图). 觉得十分 ...

  2. 李峋同款-C语言版本-爱心

    近期很火的<点燃我,温暖你>很火,里面的李峋爱心代码相信很多人心动, 网上有很多的"李峋同款"爱心源码,但都不是C语言的,用语言描述一下,就是好多爱心,然后从内到外,从 ...

  3. 214 情人节来袭,电视剧 《点燃我温暖你》李峋同款 Python爱心表白代码,赶紧拿去用吧

    大家好,我是徐公,六年大厂程序员经验,今天为大家带来的是动态心形代码,电视剧 <点燃我温暖你>同款的,大家赶紧看看,拿去向你心仪的对象表白吧,下面说一下灵感来源. 灵感来源 今天,早上起来 ...

  4. 李峋同款爱心代码(附源码,前端代码,python代码)

    Hello 大家好 如何浪漫的表白,作为程序员出身的小编,今天就带你实现热播剧<点燃我,温暖你>中超火的李峋同款爱心代码!前面是教程,怕麻烦的朋友可以直接划到文末,下载现成的,下载完成后打 ...

  5. 【Python】《点燃我,温暖你》李峋同款爱心_python程序

    目录 前言 一.效果展示 二.设备准备 三.代码呈现 前言 偶然在抖音上刷到最近很火的电视剧<点燃我,温暖你>,看到很多人都在网上找源码,侥幸在b站上看见一位up主,简单地复刻了一下. 这 ...

  6. 李峋同款爱心代码 (超好看) | 电视剧《点燃我温暖你》

    李峋同款爱心代码 (超好看) | 电视剧<点燃我温暖你> 废话不多说,上代码: import random from math import sin, cos, pi, log from ...

  7. 李峋同款爱心代码-电视剧《点燃我温暖你》

    浅浅模仿了一下李峋同款跳动的心,用python完成,引用了tkinter库,最后效果图如图1所示.电视剧里面应该是用AE做的动画(大概率是). """ @author:A ...

  8. 李峋同款会动的爱心Python代码版

    最近看到不少关于李峋同款爱心的视频.文章,今天我们也分享一下李峋同款爱心 Python 代码版.要问李峋是谁?我也不太清楚,大家可自行百度,这个是我百度的结果,仅供参考. 简单来说李峋同款爱心就是一个 ...

  9. 李峋同款爱心代码【有声版】

    一.工具准备 1.安装Pycharm 1.1双击pycharm-professional-2020.1.exe一直下一步即可. 1.2将图中所框目录放到桌面(脚本有需要的评论留言) 1.3双击图中所框 ...

  10. 李峋同款心跳Python代码

    李峋同款心跳Python代码[按头安利<点燃我温暖你>] import random from math import sin,cos,pi,log from tkinter import ...

最新文章

  1. 程序员生存定律--管理向左,技术向右
  2. 【攻防】Kubelet访问控制机制与提权方法研究
  3. java时间戳动态,是否可以根据窗口元素的时间戳动态生成BigQuery表名?
  4. 2.4.5 MySQL InnoDB重做与回滚介绍
  5. css中实现div的显示和隐藏
  6. javaone_Javaone 2013评论
  7. mysql注入技巧原理_MySQL注入技巧总结
  8. linux永久启动服务命令,Linux(CentOS)用service命令启动任意服务
  9. Android使用init.rc触发脚本实现隐藏内置应用
  10. 安装go client调用Kubernetes API
  11. Emberjs学习之路(一)
  12. scikit-learn:在实际项目中用到过的知识点(总结)
  13. 6款字体转换工具网站,一键生成想要字体!
  14. LDAP 统一认证 单点登录学习
  15. 编写基础程序:Hello World
  16. java对象转excel_Java中excel与对象的互相转换的通用工具类编写与使用(基于apache-poi-ooxml)...
  17. 蓝牙软件测试指标,蓝牙测试简介
  18. 【Python数据分析学习实例】计算某个函数的一阶导数、二阶导数,并绘出图像
  19. nuc7 android tv,NUC7PJYH HDMI在特定显示屏上出现问题
  20. Redisson封装及应用实例

热门文章

  1. linux下mysql5.7环境
  2. WINDOWS删除N天前的文件命令forfiles
  3. php生成一个500错误_Hyperf 发布 v2.0.1 版本 | 企业级的 PHP 微服务云原生协程框架...
  4. python多次判断_python - 怎么判断函数或方法多次使用是否需要定义临时变量?
  5. C++ 基类指针和派生类指针之间的转换
  6. 探讨【IGE】的源代码【四】。
  7. 微软MVP总结的Windows XP优化大全
  8. 基于matlab的高等数学,基于matlab的高等数学实验详解.ppt
  9. java web编程技术实用教程_Java Web编程技术实用教程
  10. CSS中文手册下载、使用技巧(附下载链接,压缩包被禁用了)