百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

「程序员必备」七夕表白攻略:教你用代码轻松打动她的内心

haoteby 2025-04-27 13:46 15 浏览

不会吧!不会吧!下个星期四就是七夕节了,你还是单身嘛?


自古七夕好像“关我屁事”。

朋友:距离七夕没剩几天了。你准备怎么过?

你说:嗯,什么?七夕到了?七夕是什么,能吃吗?你问我怎么过???

但是作为一个资深的bug程序员,我不允许你们好不容易约到心仪的妹子出去玩,一天之后没有成效,于是我写了这篇文章。

当你用代码把你们一天的照片风景留念都保存起来,而不是简单发个朋友圈,这份独特的操作,还拿不下她?现在把代码程序准备好,到时候直接替换图片就完美了!

那么话不多说,我们直接开肝!

首先你需要准备这样一些素材:

素材分为照片(可以替换为你们两个的七夕游玩照)音乐文件(可以替换为你觉得更浪漫的音乐)以及背景图,当然这个你也可以去找个好看点的背景!

然后就是编译环境,你需要安装你写代码的编译环境,建议的是VS2019/2022,然后要实现要用C语言实现窗口绘图还需要安装easyX图形库插件。注:可能要注意编译器与图形库插件不兼容的问题,VS可以直接安装。

代码展示:

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <graphics.h>
#include <math.h>
#include <mmsystem.h>
#pragma comment(lib,"winmm.lib")
/*************************************************
*	背景:需要一个变量
*	四张大藤原:数组长度为四变量
*	四张小藤原:数组长度为四变量
**************************************************/
IMAGE backImg;		//存放背景
IMAGE girlBig[4];	//存放四个大女孩
IMAGE girlSmall[4];	//存放四个小女孩
int smallNum = 0;	//记录翻看的照片的页码
/************************************************
*	封装函数初始化数据:初始化变量
*	加载资源
*	loadResource();
**************************************************/
void loadResource()
{
	mciSendString("open 1.mp3 alias music", 0, 0, 0);
	mciSendString("play music repeat", 0, 0, 0);
	loadimage(&backImg, "background.jpg");
	//批量加载:因为文件名字格式
	for (int i = 0; i < 4; i++)\
	{
		char fileName[20] = "";
		//0.jpg  1.jpg  2.jpg
		sprintf(fileName, "%d.jpg", i);
		loadimage(girlBig + i, fileName, 250, 350);
		loadimage(girlSmall + i, fileName, 100, 130);
	}
}
/************************************************
*	按钮处理
*	画按钮
*	drawButton(int x,int y,char postion);
*	x,y 表示按钮的位置 postion:代表左边还是右边朝向
**************************************************/
void drawButton(int x,int y,char postion)  //<-- l  --> r
{
	setfillcolor(BLACK);	//设置填充颜色为黑色
	solidcircle(x, y, 20);	//已,x,y为坐标画一个20半径的圆
	setlinecolor(WHITE);	//设置线的颜色为白色
	setlinestyle(PS_SOLID, 3, 0);	//设置线的格式
	if (postion == 'r')
	{
		circle(x, y, 15);
		line(x - 10, y, x + 10, y);
		line(x + 6, y - 4, x + 10, y);
		line(x + 6, y + 4, x + 10, y);
	}
	else if (postion == 'l')
	{
		circle(x, y, 15);
		line(x - 10, y, x + 10, y);
		line(x - 6, y - 4, x - 10, y);
		line(x - 6, y + 4, x - 10, y);
	}

}

/************************************************
*	初始化界面
*	画界面
*	drawMap();
**************************************************/
void drawMap()
{
	//画背景
	putimage(0, 0, &backImg);
	//画小图 第0张和第1张
	putimage(90, 160, girlSmall+0);//100, 130
	putimage(90, 310, girlSmall + 1);
	//画大图
	putimage(345, 100, girlBig+0); 
	//画按钮
	drawButton(180, 120, 'r');
	drawButton(110, 120, 'l');
	//文字:爱情宣言
	settextcolor(BLUE);		//设置文字颜色为蓝色
	settextstyle(25, 0, "字魂24号-镇魂手书");	//设置字大小和字体
	//去掉文字背景
	setbkmode(TRANSPARENT);	//背景透明
	//坐标计算:用截图工具去测坐标
	outtextxy(350, 50, "顿开教育 爱情相册 v1.0版本");	//打印文字

}
/************************************************
*	鼠标停留在按钮上一级鼠标离开按钮处理
*	处理用户交互
*	clickButton()
**************************************************/
void  clickButton(int x,int y,char postion)
{
	setfillcolor(BLACK);	//设置填充颜色为黑色
	solidcircle(x, y, 20);	//已,x,y为坐标画一个20半径的圆
	setlinecolor(YELLOW);	//设置线的颜色为白色
	setlinestyle(PS_SOLID, 3, 0);	//设置线的格式
	if (postion == 'r')
	{
		circle(x, y, 15);
		line(x - 10, y, x + 10, y);
		line(x + 6, y - 4, x + 10, y);
		line(x + 6, y + 4, x + 10, y);
	}
	else if (postion == 'l')
	{
		circle(x, y, 15);
		line(x - 10, y, x + 10, y);
		line(x - 6, y - 4, x - 10, y);
		line(x - 6, y + 4, x - 10, y);
	}
}
/************************************************
*	画矩形
*	小图片的矩形
*	drawRect()
**************************************************/
void  drawRect(int flag)
{
	if (flag == 1)
	{
		setlinecolor(GREEN);
		//	putimage(90, 160, girlSmall+0);//100, 130
		//	putimage(90, 310, girlSmall + 1); 
		rectangle(90-5,160-5,90+100+5,130+160+5);
		setlinecolor(WHITE);
		rectangle(90 - 5, 310 - 5, 90 + 100 + 5, 130 + 310 + 5);

	}
	else if (flag == 2)
	{
		setlinecolor(GREEN);
		//	putimage(90, 160, girlSmall+0);//100, 130
		//	putimage(90, 310, girlSmall + 1); 
		rectangle(90 - 5, 310 - 5, 90 + 100 + 5, 130 + 310 + 5);
		setlinecolor(WHITE);
		rectangle(90 - 5, 160 - 5, 90 + 100 + 5, 130 + 160 + 5);
	}
}


/************************************************
*	处理用户交互
*	处理鼠标操作
*	userMoveMouse()
**************************************************/
void userMoveMouse()
{
	MOUSEMSG m;
	int flag = 1;
	while (1)
	{
		m = GetMouseMsg();
		switch (m.uMsg)
		{
			//drawButton(180, 120, 'r');
			//drawButton(110, 120, 'l');
		case WM_MOUSEMOVE:	//鼠标移动
			//鼠标是否在按钮上:判断鼠标坐标是不是在圆里面
			if (sqrt((double)(m.x - 180)*(m.x - 180) + (m.y - 120)*(m.y - 120)) < 20) //右边
			{
				clickButton(180, 120, 'r');
			}
			else if (sqrt((double)(m.x - 110)*(m.x - 110) + (m.y - 120)*(m.y - 120)) < 20) //左边
			{
				clickButton(110, 120, 'l');
			}
			else   //当鼠标不在按钮上还原以前的按钮
			{
				drawButton(180, 120, 'r');
				drawButton(110, 120, 'l');
			}
			break;
		case WM_LBUTTONDOWN://鼠标左键按下
			if (sqrt((double)(m.x - 180)*(m.x - 180) + (m.y - 120)*(m.y - 120)) < 20) //右边
			{
				drawRect(flag);
				if (smallNum == 4)	//图片全部放完 循环一次
				{
					//	putimage(90, 160, girlSmall+0);//100, 130
					//	putimage(90, 310, girlSmall + 1);
					//要显示第0张和第1张
					putimage(90, 160, girlSmall + 0);
					putimage(90, 310, girlSmall + 1);
					smallNum = 0;
				}
				if (smallNum == 2)
				{
					//0 1 2 3
					putimage(90, 160, girlSmall + 2);
					putimage(90, 310, girlSmall + 3);
				}
				putimage(345, 100, girlBig + smallNum);
				smallNum++;
			}
			//左边自己完善
			else if (sqrt((double)(m.x - 110)*(m.x - 110) + (m.y - 120)*(m.y - 120)) < 20) //左边
			{
				//左边 作业
				drawRect(flag);
			}
			flag++;
			if (flag == 3)
				flag = 1;

			break;
		}
	}
}

int main()
{
	initgraph(932, 538);
	loadResource();
	drawMap();
	userMoveMouse();
	getchar();
	closegraph();
	return 0;
}

那么以上就是咱们本次送给大家的七夕秘密武器了!源码已经分享,大家可以自己去试试,现在把代码程序准备好,到时候直接替换图片就完美了!如果有偷懒的朋友想直接拿到这个程序也可以来找我哦!

为了帮助大家,轻松,高效学习C语言/C++,给大家分享我收集的资源,从最零基础开始的,帮助大家在学习C语言的道路上披荆斩棘!

编程学习书籍分享:

编程学习视频分享:

整理分享(多年学习的源码、项目实战视频、项目笔记,基础入门教程)

欢迎转行和学习编程的伙伴,利用更多的资料学习成长比自己琢磨更快哦!大家也要把握住大学的时光,抓住成长的每一次机会哦~

对于C/C++感兴趣可以关注小编在后台私信我:【编程交流】一起来学习哦!可以领取一些C/C++的项目学习视频资料哦!已经设置好了关键词自动回复,自动领取就好了!

相关推荐

5个珍藏多年的资源网站,免费又实用,建议收藏

今天给大家分享5个珍藏多年的资源网站,每个都是免费的,而且非常的实用,建议收藏。1、wallhaven一个国外知名的壁纸网站,拥有海量的8k、4k的超清图片壁纸,该网站的图片是由各地的创作者提供下载,...

设计网站推荐 | 国内外设计类素材网站

网站分享|十个不得不推荐的设计类素材网站!一些压箱底的常用的设计类素材分享!一定要打开这些网站试一试哦!...

阿里巴巴旗下菜鸟裹裹换新LOGO?长高了

LOGO大师整理编辑(ID:logods)...

10个做PPT必备的素材网站,越用越上瘾,每个都是宝藏

Pexelshttps://www.pexels.com/zh-cn/...

阿里旗下的四款免费小工具 好用并且能大大提升工作效率

好的工具能大大的提升你的工作效率,今天给大家分享的是阿里旗下的四款经典免费小工具,主要是用来设计,能方便,且高效的提高你的工作效率,觉得有用就收藏了吧。第一个:阿里巴巴图标库阿里巴巴图标库有将近80多...

UI设计入门干货!八大软件+技能+素材网站

随着互联网行业的发展,UI设计师越来越多的被提及,UI设计师大火,需求岗位越来越多,也有越来越多的人转行投身UI设计师。UI设计是什么?一般所说的UI设计多指UI视觉设计,主要负责APP、Web、H5...

干货!宝藏PPT素材——海量图标免费使用

我是星辰四个月的假期收集了一些PPT素材,筹备了这个公众号今天终于和大家见面了此公众号不定时更新各种素材干活和PPT模板记得关注我哦~后台发送“PPT”领取免费PPT模板总是很难找到合适PPT素材?费...

写了100多篇原创文章,我常用的在线工具网站推荐给大家

摘要不知不觉写博客已经一年多了,累计写了100多篇原创文章,今天给大家分享下我经常使用的在线工具网站,希望对大家有所帮助!MarkdownNice支持自定义样式的在线Markdown编辑器,编辑完成...

设计者必备神器:必须收藏的在线软件推荐

本内容来源于@什么值得买SMZDM.COM|首席生活家保密对于新电脑或重新刷系统的电脑,安装一堆软件是很费时间的,而软件多了会对系统运行速度有影响,特别是机械硬盘,响应时间与软件数量成正比的。而用了...

干货 | 设计师必备网站,大神作品、图片素材一网打尽

经常会听到这样的一句话:设计师每日正式开始工作的第一件事,就是打开3个及以上的设计/素材网站。网站中的优秀作品不仅可以帮助设计师提升自己,还能激发创作的灵感,所以今天,我们为大家整理了一些国内外优秀的...

推荐11个超好用的在线作图网站

现在做图好像已经不是设计师的专利不管是新媒体人、文案,还是随便一个人不会随时随地做几张漂亮图不能分分钟出点海报、封面图、邀请函什么的还怎么昂首挺胸在办公室里混不会PS没关系,不会做图可不行所以今天老贼...

做设计还只知道花瓣包图网?这100+个免费商用素材网站送给你

作为设计师你常用的网站是哪些呢?花瓣?站酷?千库?千图?包图?这些网站确实是大家最常用的网站,各种风格的元素、模板、源文件,用起来可以说是得心应手了~但是一旦出现了这个场景,你就也跟着崩溃了........

5个好看的图标网站,直接搜索下载

今天和大家分享5个图标网站,里面收录大量丰富的图标,在这里找到好图标不是什么难事。Iconsdbwww.iconsdb.com...

8个高清无版权的图片资源网站,质量高又免费,够你用一辈子

很多时候我们找素材总是要花费很多时间,今天就给大家分享8个,高清无版权的图片资源网站,质量高又免费,够你用一辈子。01*Logosc...

淘宝PPT设计师不会告诉你的4个网站!帮你剩下不少钱

之前的文章中,给各位推荐过图片素材网站,像:500px,unsplash等,也给各位推荐过图标网站,像阿里巴巴图标库。这些网站都很好用。但是,我最近发现,有一类素材网站,在做PPT时也会经常用到,...