程序员必备七夕表白攻略:教你用代码轻松打动她的内心!
Posted 一起学编程
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了程序员必备七夕表白攻略:教你用代码轻松打动她的内心!相关的知识,希望对你有一定的参考价值。
不会吧!不会吧!下个星期四就是七夕节了,你还是单身嘛?
自古七夕好像“关我屁事”。
朋友:距离七夕没剩几天了。你准备怎么过?
你说:嗯,什么?七夕到了?七夕是什么,能吃吗?你问我怎么过???
但是作为一个资深的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语言编程学习基地
以上是关于程序员必备七夕表白攻略:教你用代码轻松打动她的内心!的主要内容,如果未能解决你的问题,请参考以下文章
七夕节还不知道送啥,教你用MATLAB制作一款刮刮乐抽奖特效,让她的手气决定她的礼物
七夕节还不知道送啥,教你用MATLAB制作一款刮刮乐抽奖特效,让她的手气决定她的礼物