Xiaowang

文件代码

计算机绘制图形

代码描述:

爱心代码:用科技传递温暖"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;
}

添加评论