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

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

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

2.实现

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

1、打开冰箱

2、放入大象

3、关上冰箱

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

3.运行效果

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

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;  //  &#x7F16;&#x53F7;
  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();  // &#x521D;&#x59CB;&#x5316;&#x6570;&#x636E;
void updata();    // &#x66F4;&#x65B0;
void movedata();  // &#x5E73;&#x79FB;
void showdata();  // &#x663E;&#x793A;
int* GetRand(int* buf, int count, int range);  // &#x968F;&#x673A;&#x6570;&#x7684;&#x751F;&#x6210;
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);    // &#x6539;&#x4E3A;&#x7CBE;&#x786E;&#x5EF6;&#x65F6;
    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 &#x662F;&#x7535;&#x8BDD;&#x673A;&#x5728; Wingdings &#x5B57;&#x4F53;&#x4E2D;&#x7684;&#x5BF9;&#x5E94;&#x7F16;&#x7801;
  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;//&#x68C0;&#x67E5;&#x91CD;&#x590D;&#x3002;
      }
    }
    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;
  }
}

// &#x7CBE;&#x786E;&#x5EF6;&#x65F6;&#x51FD;&#x6570;(&#x53EF;&#x4EE5;&#x7CBE;&#x786E;&#x5230; 1ms&#xFF0C;&#x7CBE;&#x5EA6; &#xB1;1ms)
// by yangw80<yw80@qq.com>, 2011-5-4
void HpSleep(int ms)
{
  static clock_t oldclock = clock();    // &#x9759;&#x6001;&#x53D8;&#x91CF;&#xFF0C;&#x8BB0;&#x5F55;&#x4E0A;&#x4E00;&#x6B21; tick
  oldclock += ms * CLOCKS_PER_SEC / 1000;  // &#x66F4;&#x65B0; tick
  if (clock() > oldclock)          // &#x5982;&#x679C;&#x5DF2;&#x7ECF;&#x8D85;&#x65F6;&#xFF0C;&#x65E0;&#x9700;&#x5EF6;&#x65F6;
    oldclock = clock();
  else
  while (clock() < oldclock)      // &#x5EF6;&#x65F6;
    Sleep(1);            // &#x91CA;&#x653E; CPU &#x63A7;&#x5236;&#x6743;&#xFF0C;&#x964D;&#x4F4E; CPU &#x5360;&#x7528;&#x7387;&#xFF0C;&#x7CBE;&#x5EA6; 10~16ms
  //      Sleep(0);            // &#x66F4;&#x9AD8;&#x7CBE;&#x5EA6;&#x3001;&#x66F4;&#x9AD8; CPU &#x5360;&#x7528;&#x7387;&#xFF0C;&#x7CBE;&#x5EA6; 1ms
}</yw80@qq.com></sys></math.h></time.h></conio.h></graphics.h>

Original: https://blog.csdn.net/yx5666/article/details/127788428
Author: 编程小鱼六六六
Title: 《点燃我,温暖你》理工男神李峋同款C语言版本爱心

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/657722/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球