啊,抱歉,本人是单身狗,呜呜呜
废话少说,我来展示我的音乐相册的开发历程(也是为了更好的让你们学习)
首先我先想好我要实现的功能
1.音乐播放
2.在某个位置显示字符串
3.字符串组合成心形
4.一个个字符串出现
5.滚动
6.贴图
7.图片切换
大概就是这么个顺序
首先是音乐播放

#include<Windows.h>
#include<mmsystem.h>//一定要加Windows头文件
#pragma comment(lib,"winmm.lib")
int main(){mciSendString("open 1.mp3", NULL, NULL, NULL);//加载音乐mciSendString("play 1.mp3", NULL, NULL, NULL);//播放
}

其中的音乐文件1.MP3 我是跟源码放在一起,这里相当于相对路径,如果在其他文件夹内,那么我们需要指出路径,本人建议是放到相同文件夹
第二是在某位置显示字符串
我用的是EasyX插件更好用,更容易理解
那么就是创建一定大小的窗口,在想要的坐标上展示字符串就行
以下实现:

#include<graphics.h>
#include<stdio.h>
int main() {initgraph(800, 800);settextcolor(PINK);//设置字体颜色outtextxy(400, 400, "goudan,真是菜");
}

运行以后看到中心生成的“goudan,真是菜”的红色文字
第三我要实现的功能是字符串组成心形
上面我已经知道了怎么展示字符串,利用的就是所需要的坐标
既然是多个字符组成的心形,必定需要多个坐标
那么何不必设计个结构体表达我们的坐标

struct point
{int x;int y;
};

那么接下来就是得到心形的坐标了
我们可以利用画图工具和心形图片来得到所需的坐标


通过这样的方法,鼠标移动,然后得到像素位置就成了,然后以下是我得到的坐标

point arr[NUM] = {{ 395,268 },{ 406,222 },{ 416,193 },{ 441,162 },{ 468,133 },{ 500,117 },{ 537,105 },{ 577,107 },{ 617,120 },{ 649,146 },{ 666,173 },{ 680,211 },{ 683,247 },{ 680,293 },{ 675,338 },{ 660,385 },{ 640,440 },{ 616,484 },{ 588,529 },{ 557,573 },{ 530,610 },{ 493,645 },{ 460,675 },{ 422,696 },{ 381,676 },{ 350,654 },{ 320,626 },{ 292,606 },{ 257,570 },{ 230,540 },{ 200,500 },{ 180,470 },{ 160,430 },{ 140,390 },{ 126,342 },{ 117,293 },{ 120,250 },{ 133,203 },{ 160,170 },{ 200,140 },{ 240,130 },{ 280,135 },{ 312,146 },{ 340,170 },{ 360,195 },{ 375,230 }
};

然后坐标有了,我就可以实现字符串组成心形的功能了:

int main() {initgraph(800, 800);for (int i = 0; i < NUM; i++) {settextcolor(RED);outtextxy(arr[i].x, arr[i].y, "yyds");Sleep(100);
}

接下来是一个个字符串出现
这个是很简单的一个功能,Sleep函数就成(Windows头的函数)
但是我想要一个花样的,我想要显示不同的字符串成为心形
那么我们想到字符数组
以下是我找的歌词并实现了这个功能

char buff[NUM][50] = {"一封信","两年未都","没动笔","三个字","过了","几个四季","你是有","多想逃避","来不及","问问你","我已经","错过","相爱","的日期","那天你","消失在","人海里","你的背影","沉默的","让人恐惧","你说的","那些问题","我回答得","很坚定","偏偏","那个时候","我最想你","我不曾","爱过你","我自己","骗自己","已经给你","写了信","又被我","丢进海里","我不曾","爱过你","我自己","骗自己","明明觉得","自己","很冷静","却还","掉入","我自己","的陷阱"
};
int main(){initgraph(800, 800);for (int i = 0; i < NUM; i++) {settextcolor(RED);outtextxy(arr[i].x, arr[i].y, buff[i]);Sleep(100);}
}

我想要更骚一点的,不同字符串不同颜色
添加随机函数头和time头就可以

#include<time.h>
#include<conio.h>
int main(){initgraph(800, 800);srand(time(NULL));for (int i = 0; i < NUM; i++) {settextcolor(RGB(rand() % 256, rand() % 256, rand() % 256));outtextxy(arr[i].x, arr[i].y, buff[i]);Sleep(100);}
}

接下来是字符串滚动
如何让字体爱的魔力转圈圈呢?
很简单更换字符串就行,看我代码实现理解:

while (1) {for (int i = 0; i < NUM; i++) {settextcolor(RGB(rand() % 256, rand() % 256, rand() % 256));outtextxy(arr[i].x, arr[i].y, buff[(i+n)%NUM]);}Sleep(500);n++;}
}

但是呢这里有个显著的问题就是,发现有的字没有跟着滚动(没有一起带走,留下了影分身!)
这是因为没有清屏:

while (1) {for (int i = 0; i < NUM; i++) {cleardevice();settextcolor(RGB(rand() % 256, rand() % 256, rand() % 256));outtextxy(arr[i].x, arr[i].y, buff[(i+n)%NUM]);}Sleep(500);n++;}
}

接下来是音乐相册的最重要部分了:贴图

IMAGE img;//图片类变量,声明
loadimage(&img1, "1.jpg", 200, 200, true);//加载1.jpg图片
putimage(300,300,&img1);//在300,300的位置上加载图片

但是我们音乐相册肯定不只是一张图片啊
那么先把这些图片都放到一个文件夹里,我这里放在了名为image的文件夹里,然后放在根目录下方便查找和写入
接下来有提到一个问题就是,我不想一个个声明,加载,图片太多了!!!
看我的操作:

 IMAGE img[8];//图片变量声明成数组char temp[256];for (int i = 0;i<8;i++){memset(temp, 0, sizeof(char) * 256);sprintf_s(temp, "image\\%d.jpg", i+1 );//写成字符串一遍加载的使用loadimage(&img[i], temp, 200, 200, true);}

那么最后一步:图片切换
很简单就是putimage的参数变一变就行了循环一下,所以我添加到字符串滚动的后面就可以了:

while (1) {cleardevice();for (int i = 0; i < NUM; i++) {settextcolor(RGB(rand() % 256, rand() % 256, rand() % 256));outtextxy(arr[i].x, arr[i].y, buff[(i+n)%NUM]);}putimage(300, 300, &img[n%8]);Sleep(500);n++;}

那么咱的功能实现都想好了,咱来组装一下:
1.创建窗口
2.一个个显示字符串并组成心形
3.播放音乐
4.字符串滚动,图片展示并开始切换
5.延时这样好看
那么整体代码就出来了

#include<stdio.h>
#include<time.h>
#include<conio.h>
#include<graphics.h>
#include<Windows.h>
#include<mmsystem.h>//一定要加Windows头文件
#pragma comment(lib,"winmm.lib")
const int NUM = 46;
struct point
{int x;int y;
};
point arr[NUM] = {{ 395,268 },{ 406,222 },{ 416,193 },{ 441,162 },{ 468,133 },{ 500,117 },{ 537,105 },{ 577,107 },{ 617,120 },{ 649,146 },{ 666,173 },{ 680,211 },{ 683,247 },{ 680,293 },{ 675,338 },{ 660,385 },{ 640,440 },{ 616,484 },{ 588,529 },{ 557,573 },{ 530,610 },{ 493,645 },{ 460,675 },{ 422,696 },{ 381,676 },{ 350,654 },{ 320,626 },{ 292,606 },{ 257,570 },{ 230,540 },{ 200,500 },{ 180,470 },{ 160,430 },{ 140,390 },{ 126,342 },{ 117,293 },{ 120,250 },{ 133,203 },{ 160,170 },{ 200,140 },{ 240,130 },{ 280,135 },{ 312,146 },{ 340,170 },{ 360,195 },{ 375,230 }
};
char buff[NUM][50] = {"一封信","两年未都","没动笔","三个字","过了","几个四季","你是有","多想逃避","来不及","问问你","我已经","错过","相爱","的日期","那天你","消失在","人海里","你的背影","沉默的","让人恐惧","你说的","那些问题","我回答得","很坚定","偏偏","那个时候","我最想你","我不曾","爱过你","我自己","骗自己","已经给你","写了信","又被我","丢进海里","我不曾","爱过你","我自己","骗自己","明明觉得","自己","很冷静","却还","掉入","我自己","的陷阱"
};
int main() {initgraph(800, 800);srand(time(NULL));IMAGE img[8];char temp[256];for (int i = 0;i<8;i++){memset(temp, 0, sizeof(char) * 256);sprintf_s(temp, "image\\%d.jpg", i+1 );loadimage(&img[i], temp, 200, 200, true);}for (int i = 0; i < NUM; i++) {settextcolor(RGB(rand() % 256, rand() % 256, rand() % 256));outtextxy(arr[i].x, arr[i].y, buff[i]);Sleep(100);}//putimage(300,300,&img[0]);mciSendString("open 1.mp3", NULL, NULL, NULL);mciSendString("play 1.mp3", NULL, NULL, NULL);Sleep(3000);int n = 0;while (1) {cleardevice();for (int i = 0; i < NUM; i++) {settextcolor(RGB(rand() % 256, rand() % 256, rand() % 256));outtextxy(arr[i].x, arr[i].y, buff[(i+n)%NUM]);}putimage(300, 300, &img[n%8]);Sleep(500);n++;}
}

这就是我的音乐相册,哈哈哈,我可以去给女朋友了!!!诶,好像,没有女朋友,呜呜呜呜

音乐相册(程序员表白必备,或者生日礼物)(小白学习向)相关推荐

  1. html+css+javascript满屏雪花爱心520表白网站 (含音乐)520告白/七夕情人节/生日礼物/程序员表白必备

    ❉ html+css+javascript雪花爱心520表白网站 (含音乐)程序员表白必备 一年一度的/520情人节/七夕情人节/生日礼物/告白师妹/圣诞节/元旦节跨年/程序员表白, 程序员浪漫起来真 ...

  2. ❤唯美满天星❤ html+css+js炫酷3D相册(含音乐/可自定义文字)程序员表白必备

    元旦节快到了,在跨年夜前夕.是不是要给女朋友或者正在追求的妹子一点小惊喜呢,今天这篇博客就分享下前端代码如何实现3D立体动态相册.赶紧学会了,来制作属于我们程序员的浪漫吧! ❤元旦节表白3D相册,在元 ...

  3. html+css+javascript满屏雪花爱心520表白网站 (含音乐)520告白/七夕情人节/生日礼物/程序员表白必备...

    ❉ html+css+javascript雪花爱心520表白网站 (含音乐)程序员表白必备 一年一度的/520情人节/七夕情人节/生日礼物/告白师妹/圣诞节/元旦节跨年/程序员表白, 程序员浪漫起来真 ...

  4. 超炫html+css+javascript幻化3D相册 (含背景音乐)程序员表白必备 _520_七夕情人节

    ❉ 超炫html+css+javascript幻化3D相册 (含背景音乐)程序员表白必备 _520_七夕情人节 一年一度的/520情人节/七夕情人节/生日礼物/告白师妹/程序员表白,是不是要给女朋友或 ...

  5. 程序员520❤七夕情人节表白代码Html+Js+Css花瓣相册网页模板❤程序员表白必备

    ❉ 520程序员求婚Html+Js+Css花瓣相册❤ (爱心3D动画,自定义文字)/ 程序员表白必备 一年一度的/520情人节/七夕情人节/生日礼物/告白师妹/程序员表白, 非常经典的程序员式的表达爱 ...

  6. ❤女朋友生日❤ HTML+css3+js 实现抖音炫酷樱花3D相册 (含背景音乐)程序员表白必备

    一年一度的/520/七夕情人节/女朋友生日/程序员表白,是不是要给女朋友或者正在追求的妹子一点小惊喜呢,今天这篇博客就分享下前端代码如何实现3D立体动态相册.赶紧学会了,来制作属于我们程序员的浪漫吧! ...

  7. html+css+javascript实现520告白爱情树(含音乐)程序员表白必备

    ❉ html+css+javascript实现浪漫爱情树 (含音乐)程序员表白必备 一年一度的/520情人节/七夕情人节/生日礼物/告白师妹/圣诞节/元旦节跨年/程序员表白, 引用了CSS3的动画效果 ...

  8. ❤女朋友生日❤ HTML+css3+js 实现抖音炫酷樱花3D相册 (含背景音乐)程序员表白必备...

    一年一度的/520/七夕情人节/女朋友生日/程序员表白,是不是要给女朋友或者正在追求的妹子一点小惊喜呢,今天这篇博客就分享下前端代码如何实现3D立体动态相册.赶紧学会了,来制作属于我们程序员的浪漫吧! ...

  9. 用HTML+CSS+JavaScript教你如何制作浪漫的表白网站(程序员表白必备)

    ❤ 精彩专栏推荐

最新文章

  1. 【深度学习】基于Pytorch进行深度神经网络计算(二)
  2. Firefox 有 6 成用户仍使用 Add-On 扩展
  3. python 模块 wmi 远程连接 windows 获取配置信息
  4. php post请求后端拿不到值_PHP Post获取不到非表单数据的问题解决办法
  5. UART协议概述与实现
  6. Vue整合nginx:(1)开发环境npm run dev下,通过nginx解决前后端分离造成的跨域问题
  7. 项目搭建 windows_08. SpringCloud实战项目-配置Git
  8. 网站在微信中提示从浏览器打开
  9. 计算机通信与网络实验西电,西安电子科技大学计算机通信与网络CH04 数字传输.pdf...
  10. php 防挂马,织梦dedecms安全设置防挂马教程
  11. VSFTPD 上传文件 200 227 553错误
  12. 各大主流社交软件显示ip地址-如何实现ip飘移
  13. [iOS Animation]-CALayer 变换-灭点
  14. 港科夜闻|沈向洋教授获委任为香港科大校董会主席
  15. 利用一般处理程序处理头像的浏览和更新
  16. 韩顺平Oracle笔记
  17. 椭圆曲线标量乘法快速算法(附源码实现)
  18. Assertion failed: cond.is_weights() cond.weights().count() == 1 “If condition must be a initia
  19. 英特尔下代安腾芯片全面揭秘
  20. 关于“东京爱情故事补拍结局”

热门文章

  1. 运维笔记之调用163邮箱发送邮件
  2. Cocoapods:podspec与使用过程中遇到的问题
  3. Koa在实际的业务场景中,路由如何做分割?【文末留言送书】
  4. uniapp 基础知识学习
  5. html 布局缩放比例,css布局之百分比宽度布局的使用
  6. .NetCore外国一些高质量博客分享
  7. 数据结构——左倾红黑树
  8. Android支付接入(七):Google In-app-Billing
  9. mysql高性能优化方案
  10. win7 下删除XP系统安装启动项