日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發布時間:2023/12/14 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 音乐相册(程序员表白必备,或者生日礼物)(小白学习向) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

啊,抱歉,本人是單身狗,嗚嗚嗚
廢話少說,我來展示我的音樂相冊的開發歷程(也是為了更好的讓你們學習)
首先我先想好我要實現的功能
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++;} }

這就是我的音樂相冊,哈哈哈,我可以去給女朋友了!!!誒,好像,沒有女朋友,嗚嗚嗚嗚

總結

以上是生活随笔為你收集整理的音乐相册(程序员表白必备,或者生日礼物)(小白学习向)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。