近期很火的《点燃我,温暖你》很火,里面的爱心代码也很惊艳,但是程序员看了觉得尬的扣脚,
网上也有他其他的语言爱心源码,但都不是C语言的,用语言描述一下,就是好多爱心,然后从内到外,从小到大的显示。今天就给大家分享:爱心代码,边看边用!
2.实现
C语言程序的编写就像同将一头大象放到冰箱里。
1、打开冰箱
2、放入大象
3、关上冰箱
首先就是计算坐标,更新坐标,绘制爱心三步。重复调用,就可以实现。里面的具体细节,可以查看代码。
3.运行效果
4.源码
///
//程序名称:《点燃我,温暖你》爱心程序
//编译环境:MictosoftVisualStudio,+EasyX_(beta)
//作
者:爱编程的胡桃
//源码获取加q群:想学习更多项目、和同行交流学习都可以进来~
//
#includegraphics.h
#includeconio.h
#includetime.h
#includemath.h
#includesys/timeb.h
structMyLove
{
intNUMS;//编号
doublem;
doublen;
doublesize;
boolIs_show;
intx;
inty;
};
MyLovemylove[];
intCenterX=;
intCenterY=;
doubleSize=60;
voidinitdata();//初始化数据
voidupdata();//更新
voidmovedata();//平移
voidshowdata();//显示
int*GetRand(int*buf,intcount,intrange);//随机数的生成
voidheart(intx0,inty0,intsize,COLORREFC);
voidHpSleep(intms);
intmain()
{
initgraph(,);
initdata();
BeginBatchDraw();
while(true)
{
updata();
showdata();
HpSleep(30);//改为精确延时
FlushBatchDraw();
cleardevice();
}
EndBatchDraw();
_getch();
return0;
}
voidupdata()
{
int*buf=(int*)malloc(sizeof(int)*20);
buf=GetRand(buf,20,(int)(2*Size/0.01));
movedata();
for(inti=0;i20;i++)
{
mylove.m=buf*0.01;
mylove.n=(((sin(buf[(int)i]*0.01)*sqrt(fabs(cos(buf[(int)i]*0.01))))/(sin(buf[(int)i]*0.01)+1.))-2*sin(buf[(int)i]*0.01)+2);
mylove.size=Size;
mylove.NUMS=i/20;
mylove.Is_show=true;
mylove.x=(int)(-Size*mylove.n*cos(mylove.m)+CenterX);
mylove.y=(int)(-Size*mylove.n*sin(mylove.m)+CenterY-mylove.size);
}
for(inti=20;i;i++)
{
mylove.size=mylove.size+1;
if(mylove.size80)
{
mylove.size=80;
}
mylove.NUMS=i/20;
mylove.x=(int)(-mylove.size*mylove.n*cos(mylove.m)+CenterX);
mylove.y=(int)(-mylove.size*mylove.n*sin(mylove.m)+CenterY-mylove.size);
}
}
voidmovedata()
{
for(inti=;i19;i--)
{
mylove=mylove[i-20];
}
}
voidshowdata()
{
settextcolor(RED);
wchar_tc=0x59;//0x28是电话机在Wingdings字体中的对应编码
for(inti=0;i;i++)
{
settextstyle(mylove.NUMS+10,0,"Webdings");
setbkmode(TRANSPARENT);
outtextxy(mylove.x+20,mylove.y+20,c);
}
}
int*GetRand(int*buf,intcount,intrange)
{
structtimebtimeSeed;
ftime(timeSeed);
srand(timeSeed.time*+timeSeed.millitm);//millitime
for(inti=0;icount;i++)
{
intrandTmp=rand()%range;
for(intj=0;ji;j++)
{
if(buf[j]==randTmp)
{
break;//检查重复。
}
}
buf=randTmp;
}
returnbuf;
}
voidinitdata()
{
for(inti=0;i;i++)
{
mylove.NUMS=0;
mylove.m=0;
mylove.n=0;
mylove.size=0;
mylove.Is_show=false;
mylove.x=0;
mylove.y=0;
}
}
//精确延时函数(可以精确到1ms,精度±1ms)
//byyangw80yw80
qq.