520表白:炫酷动态的流星表白程序,原来是这样做出来的(含源码)
Posted 一起学编程
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了520表白:炫酷动态的流星表白程序,原来是这样做出来的(含源码)相关的知识,希望对你有一定的参考价值。
谁说C/C++程序员不浪漫???
用C语言+easyX图形库,给你的对象一个小惊喜—【流星雨浪漫表白程序】,配上好听的音乐,瞬间高大上的感觉。
效果展示(动态效果,图片只是展示):
所需素材:
网盘链接:(如过期可以来粉丝群领取)
链接: https://pan.baidu.com/s/1mG7vKQtSRlcYO49lcAWQYA?pwd=trhg 提取码: trhg
话不多说,下面我们一起来看看源码,里面有注释,大家可以进行代码解读!
源码分享:
#include<stdio.h>
#include<conio.h>
#include<time.h>
#include<easyx.h> //简单的图形图,会C语言就可以用的飞起
#include<mmsystem.h> //多媒体头文件
#pragma comment(lib,"winmm.lib")
#define NUM 100 //流星雨数量
//背景图
IMAGE img_bk[2];
//流星图片
IMAGE img_meteor[2];
//结构体封装属性
struct Meteor //流星
int x;
int y;
int speed; //速度
;
struct Meteor meteor[NUM];
void welcome()
//播放背景音乐 mci media device interface
mciSendString(_T("open ./images/浪漫空气.mp3 alias bgm"), NULL, 0, NULL);
//mciSendString(_T("play bgm"), NULL, 0, NULL);
//设置文字样式
settextstyle(40, 0, _T("华文行楷"));
//设置背景模式为透明
setbkmode(TRANSPARENT);
//按任意键退出循环
while (!_kbhit())
//清除屏幕
cleardevice();
//贴背景图
putimage(0, 0, img_bk);
//设置文字颜色
settextcolor(RGB(rand()%256, rand() % 256, rand() % 256));
//输出文字
outtextxy(450, 20, _T("鞠婧祎,我喜欢你"));
outtextxy(200, 100, _T("爱意随风起,风止意难平。"));
outtextxy(200, 150, _T("我还是很喜欢你,像风吹过几万里"));
outtextxy(200, 200, _T("春风十里不如你,我喜欢你"));
outtextxy(200, 250, _T("曾经有份真挚的感情摆在我面前,我却没有珍惜"));
outtextxy(200, 300, _T("春风十里,不及你嫣然一笑。"));
outtextxy(200, 350, _T("天青等烟雨,而我在等你"));
outtextxy(200, 400, _T("因为我爱你,所以纵容你"));
outtextxy(200, 450, _T("情书是抄的,爱你是真的。"));
outtextxy(200, 500, _T("----------------------------爱你的顿开学员"));
//随机坐标 x(0 1200) y(0,800)
for (size_t i = 0; i < 10; i++)
settextcolor(RGB(rand() % 256, rand() % 256, rand() % 256));
outtextxy(rand()%1200, rand() % 800, _T("♥"));
outtextxy(rand() % 1200, rand() % 800, _T("🌺"));
Sleep(1000);
//初始化流星
void initMeteor(int i)
meteor[i].x = rand() % (1200*2) - 1200; //(0-1200,1200)
meteor[i].y = rand() %20 - 200; //(-78,-200)
meteor[i].speed = rand() % 15 + 1;
//绘制流星
void drawMeteor()
for (int i = 0; i < NUM; i++)
putimage(meteor[i].x, meteor[i].y, img_meteor + rand() % 2,SRCPAINT);
//移动流星
void moveMeteor()
//改变坐标就可以实现移动了,斜向x,y都要变化
for (int i = 0; i < NUM; i++)
meteor[i].x += meteor[i].speed;
meteor[i].y += meteor[i].speed;
if (meteor[i].y > getheight() || meteor[i].x>getwidth())
initMeteor(i);
int main()
//创建图形窗口
initgraph(1200, 800,EW_SHOWCONSOLE);
//加载图片
loadimage(img_bk, _T("./images/welcome.png"),1200,800);
loadimage(img_bk + 1, _T("./images/bk.png"),1200,800);
loadimage(img_meteor, _T("./images/1.jpg"), 50, 50);
loadimage(img_meteor+1, _T("./images/2.jpg"), 50, 50);
welcome();
for (size_t i = 0; i < NUM; i++)
initMeteor(i);
//防止闪屏,双缓冲
BeginBatchDraw(); //开启双缓冲绘图
while (true)
//控制画面的帧率 26帧 60
int begin = clock(); //获取程序运行时间(毫秒数)
putimage(0, 0, img_bk + 1);
drawMeteor();
moveMeteor();
//Sleep(50); //让程序休眠
FlushBatchDraw();//刷新
//获取程序总共的执行时间
int timeRemaining = clock() - begin;
//计算每帧需要的时间
int timeFrame = 1000.0 / 60;
//获取程序执行时间有没有超过,每帧执行的最大时间
int delay = timeFrame - timeRemaining;
if (delay > 0)
printf("%d\\n", delay);
Sleep(delay); //动态变化
EndBatchDraw();
getchar();
return 0;
对于很多初学者来说,有一群一起学习一起解答的小伙伴很重要!如果你想更好的提升你的编程核心能力(内功)不妨从现在开始!
C语言C++编程学习交流圈子,QQ群:946108597【点击进入】微信公众号:C语言编程学习基地
整理分享(多年学习的源码、项目实战视频、项目笔记,基础入门教程)
以上是关于520表白:炫酷动态的流星表白程序,原来是这样做出来的(含源码)的主要内容,如果未能解决你的问题,请参考以下文章
我是如何用一行代码表白学妹~❤520情人节送女朋友的3D樱花雨相册礼物❤~(程序员表白专属)
520表白某程序员用代码这样表白,女友竟直接感动到删好友···
我是如何俘虏学姐芳心~❤给她放一场浪漫的烟花3D相册❤~(520情人节/七夕情人节/生日快乐/烟花告白/程序员表白专属)