爱心代码——c++(借鉴b站up主)

这篇具有很好参考价值的文章主要介绍了爱心代码——c++(借鉴b站up主)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

#include<graphics.h>
#include<stdio.h>
#include<conio.h>
#include<math.h>
#include<stdlib.h>


//爱心点的结构体
struct Point {
	double x, y;//坐标
	COLORREF color;//颜色
};
//COLORREF colors[7] = { RGB(255,32,83),RGB(252,222,250),RGB(255,0,0),RGB(255,0,0),RGB(255,2,2),RGB(255,0,8),RGB(255,5,5) };
COLORREF colors[7] = { RGB(55,132,183),RGB(252,222,250),RGB(25,120,130),RGB(25,5,215),RGB(25,230,40),RGB(25,24,112),RGB(255,230,128) };
const int xScreen = 1200;//屏幕宽度
const int yScreen = 800;//屏幕高度
const double PI = 3.1415926;//圆周率
const double e = 2.71828;//自然数e
const double averag_distance = 0.162;//	弧度以0.01增长时,原始参数方程每个点的平均距离
const int quantity = 506;//所用点数
const int frames = 20;//爱心扩张的频率
const int circles = 210;//组成爱心的爱心个数
Point origin_points[quantity];//创建一个保存原始爱心数据的数组
Point points[circles * quantity];//创建一个保存所有爱心的数据数组
IMAGE images[frames];//创建图片数组

double screen_x(double x) {
	x += xScreen / 2;
	return x;
}//坐标转换为函数
double screen_y(double y) {
	y = -y + yScreen / 2;
	return y;
}//坐标转换为函数
int creat_random(int x1, int x2) {
	if (x2 > x1)
		return rand() % (x2 - x1 + 1) + x1;
}//创建x1-x2的随机数函数
void creat_date()
{
	int index = 0;
	double x1 = 0, y1 = 0, x2 = 0, y2 = 0;
	for (double radian = 0.1;radian <= 2 * PI;radian += 0.005)
	{
		x2 = 16 * pow(sin(radian), 3);
		y2 = 13 * cos(radian) - 5 * cos(2 * radian) - 2 * cos(3 * radian) - cos(4 * radian);
		double distance = sqrt(pow(x2 - x1, 2) + pow(y2 - y1, 2));
		if (distance > averag_distance) {
			x1 = x2, y1 = y2;
			origin_points[index].x = x2;
			origin_points[index++].y = y2;

		}
	}
	index = 0;
	for (double size = 0.1, lightness = 1.5;size <= 20;size += 0.1) {
		double success_p = 1 / (1 + pow(e, 8 - size / 2));
		if (lightness > 1) lightness -= 0.0025;
		for (int i = 0;i < quantity;i++) {
			if (success_p > creat_random(0, 100) / 100.0) {
				COLORREF color = colors[creat_random(0, 6)];
				points[index].color = RGB(GetRValue(color) / lightness, GetGValue(color) / lightness, GetBValue(color) / lightness);
				points[index].x = size * origin_points[i].x + creat_random(-4, 4);
				points[index++].y = size * origin_points[i].y + creat_random(-4, 4);
			}
		}
	}
	index = 0;
	for (double size = 0.1;size <= 20;size += 0.1) {
		double success_p = 1 / (1 + pow(e, 8 - size / 2));
		for (int i = 0;i < quantity;i++) {
			if (success_p > creat_random(0, 100) / 100.0) {
				points[index].color = colors[creat_random(0, 6)];
				points[index].x = size * origin_points[i].x + creat_random(-4, 4);
				points[index++].y = size * origin_points[i].y + creat_random(-4, 4);
			}
		}
	}
	int points_size = index;
	for (int frame = 0;frame < frames;frame++) {
		images[frame] = IMAGE(xScreen, yScreen);
		SetWorkingImage(&images[frame]);
		for (index = 0;index < points_size;index++)
		{
			double x = points[index].x, y = points[index].y;
			double distance = sqrt(pow(x, 2) + pow(y, 2));
			double distance_increase = -0.0009 * distance * distance + 0.35714 * distance + 5;
			double x_increase = distance_increase * x / distance / frames;
			double y_increase = distance_increase * y / distance / frames;


			points[index].x += x_increase;
			points[index].y += y_increase;
			setfillcolor(points[index].color);
			solidcircle(screen_x(points[index].x), screen_y(points[index].y), 1);
		}

		for (double size = 17;size < 23;size += 0.3) {
			for (index = 0;index < quantity;index++) {
				if ((creat_random(0, 100) / 100.0 > 0.6 && size >= 20) || (size < 20 && creat_random(0, 100) / 100.0>0.95))
				{
					double x, y;
					if (size >= 20) {
						x = origin_points[index].x * size + creat_random(-frame * frame / 5 - 15, frame * frame / 5 + 15);
						y = origin_points[index].y * size + creat_random(-frame * frame / 5 - 15, frame * frame / 5 + 15);
					}
					else {
						x = origin_points[index].x * size + creat_random(-5, 5);
						y = origin_points[index].x * size + creat_random(-5, 5);
					}
					setfillcolor(colors[creat_random(0, 6)]);
					solidcircle(screen_x(x), screen_y(y), 1);
				}

			}

		}


	}
}





int main() {
	initgraph(xScreen, yScreen);
	BeginBatchDraw();
	/*srand(time(0));*/
	creat_date();
	SetWorkingImage();
	bool extend =true, shrink = false;
	for (int frame = 0;!_kbhit();) {
		putimage(0, 0, &images[frame]);
		FlushBatchDraw();
		Sleep(20);
		cleardevice();
		if (extend)
			frame == 19 ? (shrink =true, extend = false) : ++frame;
		else
			frame == 0 ? (shrink = false, extend = true) : --frame;
	}
	BeginBatchDraw();
	closegraph();
	return 0;

}


如果打开不了graphics,可能缺少EasyX文件,找官网下一个即可,如果还有更简洁的方式请留言文章来源地址https://www.toymoban.com/news/detail-743660.html

到了这里,关于爱心代码——c++(借鉴b站up主)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • C C++ Java python 分别写出不同表白girlfriend的爱心动态代码实现

    C `` #include stdio.h #include stdlib.h #include windows.h void heart_animation() { int i, j, k; for (i = 1; i = 6; i++) { for (j = -3; j = 3; j++) { for (k = -4; k = 4; k++) { if (abs(j) + abs(k) i * 2) { printf(“I”); } else { printf(\\\" “); } } printf(”n\\\"); } Sleep(500); system(“cls”); } } int main() { heart_animation(); return 0; } `` C++ `` 动态

    2023年04月09日
    浏览(49)
  • 母亲节到了,写一个简单的C++代码给老妈送上一个爱心祝福

    🍎 博客主页:🌙@披星戴月的贾维斯 🍎 欢迎关注:👍点赞🍃收藏🔥留言 🍇系列专栏:🌙 C/C++专栏 🌙请不要相信胜利就像山坡上的蒲公英一样唾手可得,但是请相信,世界上总有一些美好值得我们全力以赴,哪怕粉身碎骨!🌙 🍉一起加油,去追寻、去成为更好的自己

    2024年02月04日
    浏览(43)
  • 爱心代码html或c++调用opengl库两种实现(二维三维动态也可键盘交互)

    最近打火机与公主裙电视剧追疯了!!!谁还没有李峋爱心代码!!快来领!!沉浸式追剧大学生今天午觉没睡怒干爱心代码现有三分资源如下: 效果: 1)、公主两个for循环二维C++控制台输出爱心; 2)、原创C++语言利用openGL库实现三维动态旋转粉色爱心; 以上两者可以在

    2024年02月13日
    浏览(64)
  • C++ 实现命令行画心形代码,有多个爱心代码,简单可调数据和字符,可装X,也可用于浪漫的表白,可实现跳动、保存等功能

    绘制一个简易爱心 绘制一个精致爱心 另一个好的版本 一个最花里胡哨的 绘制红心并保存到文件 绘制跳动的心脏:注此版本只能在Windows系统下编译运行。 升级版 其他做法html 也许我们还可以再做点什么,比如加点动画,看看下面这个吧。 点这里下载源码,里面已经加了很

    2024年02月08日
    浏览(53)
  • 微软detours代码借鉴点备注

    借鉴点1 Loadlibray的时间选择 注入库wrotei.dll,为了获取istream的接口,需要loadlibrary,但是在dllmain中是不建议这样做的。因此,动态库在dllmain的时候直接挂载了comeasy.exe的入口 //获取入口 TrueEntryPoint = (int (WINAPI *)(VOID))DetourGetEntryPoint(NULL); ... //挂载入口 DetourAttach((PVOID)TrueEntryPo

    2024年04月09日
    浏览(49)
  • Flink CDC 2.0 主要是借鉴 DBLog 算法

    DBLog 算法原理 DBLog 这个算法的原理分成两个部分,第一部分是分 chunk,第二部分是读 chunk。分 chunk 就是把一张表分为多个 chunk(桶/片) 。我可以把这些 chunk 分发给不同的并发的 task 去做。例如:有 reader1 和 reader2,不同的 reader 负责读不同的 chunk。其实只要保证每个 reade

    2024年02月08日
    浏览(37)
  • YOLOv8算法改进【NO.97】借鉴YOLOv7算法的方法添加辅助训练头

     前   言        YOLO算法改进系列出到这,很多朋友问改进如何选择是最佳的,下面我就根据个人多年的写作发文章以及指导发文章的经验来看,按照优先顺序进行排序讲解YOLO算法改进方法的顺序选择。具体有需求的同学可以私信我沟通: 第一, 创新主干特征提取网络,

    2024年01月22日
    浏览(50)
  • 公司前端实习项目技术,可以借鉴一些组件设计思路及基本代码逻辑,应届生来!

    1.跳转 2.请求 1.mounted() 1.从登陆界面开始,通过Common.httpRequest()发送请求,经过Common.forward()跳转传参,在mounted或者created生命周期中通过common.getActivePageStack()获取到跳转所传参数,这样就可以根据id或者其他唯一数据发送请求查询所需数据 1.DialogInfo 1.用法 先引入组件 在

    2024年02月21日
    浏览(57)
  • html爱心特效代码——爱心代码

    今天闲来无事,教大家一个哄妹子的小case。我们需要创建一个心形图案,按照心形图案的位置和长度,对所创建的字符串进行截断并在所需的位置上输出,最终能呈现在屏幕上满满的爱心。废话不多说,直接上源码看效果 ~

    2024年02月09日
    浏览(71)
  • 跳动的爱心代码--李峋爱心代码(完整源码)

    本文章分为两部分: 第一部分为实现效果展示,第二部分是实现跳动爱心源码。 关注微信公众号: ClassmateJie 关注微信公众号【 ClassmateJie 】获取完整源码,回复 爱心代码 。 1.建一个html文件,代码如下: 建立一个css文件 运行html文件 关注微信公众号「 ClassmateJie 」 更多惊喜

    2024年02月16日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包