计算机绘制图形
2025-10-11 ~ 2025-10-19
(0)
代码描述:
爱心代码:用科技传递温暖"D:\Users\小王\source\repos\爱心❤"
在这个由 0 和 1 组成的世界里,代码不仅仅是冰冷的指令,它也可以是情感的载体。
“爱心代码”是程序员们用自己的方式,将善意、关怀与创意融合在一起,用屏幕上跳动的字符编织出温暖的形状。它可能是网页上缓缓绽放的一颗心,也可能是程序运行后弹出的一句问候,甚至是一次公益项目背后的底层逻辑。
代码的力量,不只是改变产品和效率,更是连接人与人之间的温度。当技术与爱心相遇,便能跨越语言与距离,让温暖在指尖流动。
操作方法:
可以通过 vs 来控制爱心的上下左右移动
通过 Easyx 呈现图形
源代码:
#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[400];
int CenterX = 320;
int CenterY = 180;
double Size = 60;
// 初始化数据
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;
}
}
// 生成随机数
int* GetRand(int* buf, int count, int range)
{
struct timeb timeSeed;
ftime(&timeSeed);
srand(timeSeed.time * 1000 + timeSeed.millitm);
for (int i = 0; i < count; i++)
{
buf[i] = rand() % range;
}
return buf;
}
// 绘制爱心
void heart(int x0, int y0, int size, COLORREF C)
{
setfillcolor(C);
fillcircle(x0, y0, size);
}
// 精确延时函数
void HpSleep(int ms)
{
static clock_t oldclock = clock();
oldclock += ms * CLOCKS_PER_SEC / 1000;
if (clock() > oldclock)
oldclock = clock();
else
while (clock() < oldclock)
Sleep(1);
}
// 更新数据
void updata()
{
int* buf = (int*)malloc(sizeof(int) * 20);
buf = GetRand(buf, 20, (int)(2 * Size / 0.01));
// 平移数据
for (int i = 399; i > 19; i--)
{
mylove[i] = mylove[i - 20];
}
// 生成新数据
for (int i = 0; i < 20; i++)
{
mylove[i].m = buf[i] * 0.01;
mylove[i].n = ((sin(buf[i] * 0.01) * sqrt(fabs(cos(buf[i] * 0.01)))) / (sin(buf[i] * 0.01) + 1.4142)) - 2 * sin(buf[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);
}
free(buf);
// 更新已有数据
for (int i = 20; i < 400; i++)
{
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 showdata()
{
settextcolor(RED);
wchar_t c = 0x2665; // 爱心字符的 Unicode 编码
for (int i = 0; i < 400; i++)
{
settextstyle(mylove[i].NUMS + 10, 0, _T("Webdings"));
setbkmode(TRANSPARENT);
outtextxy(mylove[i].x + 20, mylove[i].y + 20, c);
}
}
int main()
{
initgraph(640, 480); // 初始化图形窗口
initdata(); // 初始化数据
BeginBatchDraw(); // 开始批量绘制
while (true)
{
updata(); // 更新数据
showdata(); // 显示数据
HpSleep(30); // 延时
FlushBatchDraw(); // 刷新绘图
cleardevice(); // 清空屏幕
}
EndBatchDraw(); // 结束批量绘制
_getch(); // 等待按键
closegraph(); // 关闭图形窗口
return 0;
}
添加评论
取消回复