当前位置:首页 » 《随便一记》 » 正文

《点燃我,温暖你》理工男神李峋同款C语言版本爱心

16 人参与  2022年11月12日 14:49  分类 : 《随便一记》  评论

点击全文阅读


近期很火的《点燃我,温暖你》很火,里面的爱心代码也很惊艳,但是程序员看了觉得尬的扣脚,

网上也有他其他的语言爱心源码,但都不是C语言的,用语言描述一下,就是好多爱心,然后从内到外,从小到大的显示。今天就给大家分享:爱心代码,边看边用!

2.实现

C语言程序的编写就像同将一头大象放到冰箱里。

1、打开冰箱

2、放入大象

3、关上冰箱

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

3.运行效果

 4.源码

///// 程序名称:《点燃我,温暖你》爱心程序// 编译环境:Mictosoft Visual Studio 2013,+EasyX_20200315(beta)// 作  者:爱编程的胡桃// 源码获取加q群:724050348   想学习更多项目、和同行交流学习都可以进来 ~// #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 time  for (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-4void HpSleep(int ms){  static clock_t oldclock = clock();    // 静态变量,记录上一次 tick  oldclock += ms * CLOCKS_PER_SEC / 1000;  // 更新 tick  if (clock() > oldclock)          // 如果已经超时,无需延时    oldclock = clock();  else  while (clock() < oldclock)      // 延时    Sleep(1);            // 释放 CPU 控制权,降低 CPU 占用率,精度 10~16ms  //      Sleep(0);            // 更高精度、更高 CPU 占用率,精度 1ms}

想学习更多实战项目的可以看看的个人空间_哔哩哔哩_Bilibili,的主页、动态、视频、专栏、频道、收藏、订阅等。哔哩哔哩Bilibili,你感兴趣的视频都在B站。icon-default.png?t=M85Bhttps://space.bilibili.com/1827181878?spm_id_from=333.788.0.0

源码获取处:源码获取、问题解答icon-default.png?t=M85Bhttps://jq.qq.com/?_wv=1027&k=D22WxKDq


点击全文阅读


本文链接:http://zhangshiyu.com/post/48054.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1