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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

动态爱心(C/C++)

發布時間:2024/8/1 c/c++ 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 动态爱心(C/C++) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

首先來看效果

C/C++動態愛心

源代碼(代碼思路主要參考了b站up主碼農天高)

#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<math.h> #include<time.h> #include<windows.h> #include<graphics.h> #include<mmsystem.h>//要調用mciSendString必須包含這個頭文件 #pragma comment(lib,"WINMM.LIB");//及這個預處理 #define SIZE 9 #define CANVAS_WIDTH 640 #define CANVAS_HEIGHT 480 #define CANVAS_CEBTER_X CANVAS_WIDTH / 2 #define CANVAS_CEBTER_Y CANVAS_HEIGHT / 2 void scatter_inside(int xo, int yo, double beta = 0.1) {//隨機內部擴散double ratio_x = -beta * log(rand());double ratio_y = beta * log(rand());double x, y;x = ratio_x * xo;y = ratio_y * yo;putpixel(x, y, RGB(245,145,247)); } void heart(int particle,double ratio,COLORREF color) {double x, y;//記錄直角坐標double i;//控制循環和心的精細程度//笛卡爾愛心//for (i = 0; i <= 2 * size; i += 0.1)//{// m = i;// n = -size * (((sin(i) * sqrt(fabs(cos(i)))) / (sin(i) + 1.4142)) - 2 * sin(i) + 2);// x = n * cos(m) + xo;// y = n * sin(m) + yo;// putpixel(x, y, color);//}for (i = 0; i <= 2 * particle; i += 0.001){//關鍵,畫愛心的公式x = 16 * (sin(i) * sin(i)* sin(i));y = -(13 * cos(i) - 5 * cos(2 * i) - 2 * cos(3 * i) - cos(4 * i));//控制愛心的大小x = x * ratio;y = y * ratio;putpixel(x, y, color);//擴散if((int)(i*10000)% 7 == 0)//擴散粒子太多了,控制粒子產生量scatter_inside(x, y);if ((int)(i * 10000) % 107 == 0)scatter_inside(x, y, 0.07);//愛心里面加字settextcolor(RGB(91, 176, 179));//設置愛心字體顏色settextstyle(40, 0, L"楷體");outtextxy(0, 0, L"喵");}}int main() {srand(time(0));initgraph(CANVAS_WIDTH, CANVAS_HEIGHT);//添加音樂mciSendString(L"open youhebuke.mp3 alias music", 0, 0, 0);mciSendString(L"play music repeat",0,0,0);//+repeat循環播放 -----------------------------------------------------------------------------------------//開頭界面,可刪除settextcolor(RGB(245,152,173));//顏色參數調配,畫圖板查看顏色參數settextstyle(15, 0, L"宋體");outtextxy(300, 300, L"----被虐的喵");settextcolor(RGB(91, 176, 179));//顏色參數調配,畫圖板查看顏色參數settextstyle(40, 0, L"楷體");outtextxy(175, 180, L"C/C++版跳動愛心");fflush(stdout);Sleep(10000);cleardevice();//清畫布,重新畫 -----------------------------------------------------------------------------------------setorigin(CANVAS_CEBTER_X, CANVAS_CEBTER_Y);//循環播放while (1){double ratio;//控制粒子頻率和圖像大小for (int i = 140; i <= 250; i++){ratio = 16 * sin(i / 360.0 * 3.1415926535);}if (ratio < 0){ratio *= -1;}//Sleep(10);heart(80, ratio, RED);cleardevice();}mciSendString(L"close music", 0, 0, 0);getchar();closegraph();return 0; }

?這次寫的代碼有點臭,耦合度太高了,以至于修改一個參數會導致整體改變。于是就沒實現愛心跳動了。

一,下載一個可視化庫,推薦easyx

直接去官網下載https://easyx.cn/

下載好后會有這個exe文件

打開文件,點下一步到這個界面

?選擇你要配置的編譯器,它就會自動幫你將庫配置好。

第二步 將所要的頭文件,畫布大小設置好

第三步 初始化畫布,并畫一個普通的愛心

最初我用的笛卡爾公式。畫出來的愛心并不是很好看。我在網上不斷找也找不到滿意的公式,最終還是借用了b站up碼農天高找的這個公式

?

?為什么要手動控制呢?因為最初創建窗口位置默認坐標為

四 愛心渲染

接下來要對這個愛心渲染,就要不斷在它每個點的周圍隨機渲染一些點,?這里就需要獲取每個點的坐標,但是由于函數只能返回一個值,我也沒用類。所以直接在heart函數內部寫了個渲染函數

又因為隨機所以用到rand(),產生隨機數,至于這個scatter_inside函數實現思路我依舊是參考up主碼農天高的。

參數我沒控制好,就變成這樣了。反正自己根據畫布和畫的愛心大小,慢慢調去

對了,這里顏色是可以控制的?

使用RGB(xxx,xxx,xxx)紅綠藍的參數,而如果像按照自己喜歡的顏色調,打開畫圖板

點擊編輯顏色,里面就有顏色參數、

?

?第五步 讓愛心按一定頻率波動起來

也就是畫n張大小不同的連續圖,循環播放,這里頻率控制我用的是正選函數sin,這里就是我自己找到公式實現了,

我選的是這個頻率段,這樣既可以讓愛心收縮也放大,但是由于我寫的耦合性太高,導致不能輕易改頻率,會導致改變愛心大小。以及如果每次愛心動起來,縮放,周圍粒子坐標也要有一定改變,但由于我能力有限,再加上耦合度高,全用函數實現,難以獲得坐標,所以我就沒實現了。

將sin函數公式轉為代碼?

?

這時我也不用size控制大小了,直接用ratio,反正這個愛心大小自己慢慢調。

基本上這就是我的愛心實現流程了。

補:添加音樂和漢字

添加音樂用到的函數有??? ?mciSendString();

要包含

這兩個,不然會出現鏈接錯誤

我來解釋一下怎么使用

?首先將你要加入的xxx.mp3音樂放入所在路徑

右鍵這里,打開所在文件夾,將音樂放入其中

然后使用mciSendString(L"open xxx.mp3 alias music",0,0,0)

這些字符串意思是open打開音樂文件(open是系統調用接口),給它命名music.?傳3個000參數過去。

然后再調用mciSendString(L"play music repeat",0,0,0);

播放music 后面repeat可以不加,不加只播放一次,加了就是重復播放。

?添加漢字

這個數easyx提供的函數接口,具體使用參考EasyX 文檔 - 文字輸出相關函數

這里僅提供在愛心里插入文字

將他們放入heart函數里,在愛心和隨機散射粒子畫出來后,在執行這三行代碼

outtextxy(坐標,坐標,L"文本內容");

這里坐標參考第一步畫的愛心位置來估計大概范圍

outtextxy可多次調用,多次輸入。?

這是鄙人第一次學習使用eaxyx,若有錯誤,請以斧正

謝謝閱讀!!!!!

總結

以上是生活随笔為你收集整理的动态爱心(C/C++)的全部內容,希望文章能夠幫你解決所遇到的問題。

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