海詩網(wǎng) 知識百科 c++表白代碼煙花(c++煙花特效代碼)

c++表白代碼煙花(c++煙花特效代碼)

c++表白代碼煙花, 什么是C表白碼煙花?不知道小伙伴們今天來看看邊肖的分享吧!

Fireworks源代碼:

#include graphics.h

#include conio.h

#include math.h

#include time.h

#include stdio.h

#include Mmsystem.h

#pragma comment ( lib, Winmm.lib )

/* * * * * *宏定義區(qū)域* * * * *

#define NUM13//煙花類型和數(shù)量的宏定義

#define PI 3.1415926548

/* * * * * *結(jié)構(gòu)定義區(qū)域* * * * * * * *

//煙花結(jié)構(gòu)

struct FIRE

{

int r;//當(dāng)前爆炸半徑

int max _ r;//從爆炸中心到邊緣的最大半徑

int x,y;//窗口中爆炸中心的坐標(biāo)

int cen_x,cen _ y;//爆炸中心相對于圖片左上角的坐標(biāo)

int寬度,高度;//圖片的寬度和高度

int xy[240][240];//存儲圖片像素

布爾秀;//是否開花?

布爾平局;//開始輸出像素點。

DWORD t1,t2,dt;//開花速度

}Fire[NUM];

//煙火炸彈結(jié)構(gòu)

struct JET

c++煙花特效代碼

{

int x,y;//注入點的坐標(biāo)

int hx,hy;//最高的坐標(biāo)-將在火中賦給x,y。

int高度;//煙花高度

布爾射;//能發(fā)射嗎?

DWORD t1,t2,dt;//啟動速度

圖像img[2];//存儲一張一明一暗的圖片。

字節(jié)n:1;//圖片下標(biāo)

}Jet[NUM];

/* * * *函數(shù)聲明區(qū)* * */

void welcome();

void Init(int);//初始化fireworks

空載荷();//加載煙花圖片

void shot();//發(fā)射煙花

void choosed(DWORD);//篩選煙花

Void style (dword); //emission pattern

Void display (dword *); //Bloom fireworks

//主函數(shù)

void main()

{

initgraph(1200, 800);

srand(time(0));

//播放背景音樂

mciSendString(open ./fire/bk.mp3 alias bk, 0, 0, 0);

mciSendString(play bk repeat, 0, 0, 0);

welcome();

DWORD t1=time gettime();//過濾焰火計時

DWORD st1=time gettime();//播放花樣計時

DWORD * pMem=GetImageBuffer();//獲取窗口內(nèi)存指針

for(int I=0;i NUMI )//初始化fireworks

{

Init(i);

}

load();//將fireworks圖片信息加載到相應(yīng)的結(jié)構(gòu)中。

BeginBatchDraw();//開始批量繪圖

while (!kbhit())

{

Sleep(10);

//隨機選擇4000個像素擦除。

for (int clr=0; clr 1000; clr++)

{

for (int j=0; j 2; j++)

{

int px1=rand() % 1200;

int py1=rand() % 800;

If (py1 799)//阻止跨越邊界

pMem[py1 * 1200 px1]=pMem[py1 * 1200 px1 1]=黑色;//給視頻內(nèi)存賦值,擦除像素。

}

}

選擇了(t1);//放映煙花

shoot();//發(fā)射煙花

顯示(pMem);//綻放煙花

風(fēng)格(st1);//模式啟動

FlushBatchDraw();//顯示所有以前的繪圖操作。

}

}

void welcome()

{

//setfillstyle(0);

setcolor(YELLOW);

for (int i=0; i 50; i++)

{

int x=600 + int(180 * sin(PI * 2 * i/60));

int y=200 + int(180 * cos(PI * 2 * i/60));

cleardevice();

settextstyle(i,0,楷體);

outtextxy(x,y,煙花);

Outtextxy(x,y-50,小惡魔出品);

Outtextxy(x-130,y 100,碼夢可能來!);

Sleep(25);

}

c++煙花特效代碼

getchar();

cleardevice();

settextstyle(25,0,楷體);

Outtextxy(400,150,沒有比現(xiàn)在更好的了);

Outtextxy(400,200,有一點希望);

Outtextxy(400,250,你有多少期待?);

Outtextxy(400,300,他媽的有多失望?);

outtextxy(400, 350, 煙花再美又怎么樣?);

outtextxy(400, 400, 女孩自己要懂得自己掙錢);

outtextxy(400, 450, 會開車會打扮);

outtextxy(400, 500, 車子有油);

outtextxy(400, 550, 手機有電);

outtextxy(400, 600, 錢包有錢);

outtextxy(400, 650, 再光鮮亮麗的副駕駛也不及自己握方向盤);

getchar();

}

//初始化煙花參數(shù)

void Init(int i)

{

//分別為:煙花中心到圖片邊緣的最遠距離、煙花中心到圖片左上角的距離(x、y) 兩個分量

int r[13]={ 120, 120, 155, 123, 130, 147, 138, 138, 130, 135, 140, 132, 155 };

int x[13]={ 120, 120, 110, 117, 110, 93, 102, 102, 110, 105, 100, 108, 110 };

int y[13]={ 120, 120, 85, 118, 120, 103, 105, 110, 110, 120, 120, 104, 85 };

/**** 初始化煙花*****/

Fire[i].x=0;//煙花中心坐標(biāo)

Fire[i].y=0;

Fire[i].width=240;//圖片寬

Fire[i].height=240;//圖片高

Fire[i].max_r=r[i];//最大半徑

Fire[i].cen_x=x[i];//中心距左上角距離

Fire[i].cen_y=y[i];

Fire[i].show=false;//是否綻放

Fire[i].dt=5;//綻放時間間隔

Fire[i].t1=timeGetTime();

Fire[i].r=0;//從0 開始綻放

/**** 初始化煙花彈*****/

Jet[i].x=-240;//煙花彈左上角坐標(biāo)

Jet[i].y=-240;

Jet[i].hx=-240;//煙花彈發(fā)射最高點坐標(biāo)

Jet[i].hy=-240;

Jet[i].height=0;//發(fā)射高度

Jet[i].t1=timeGetTime();

Jet[i].dt=rand() % 10;//發(fā)射速度時間間隔

Jet[i].n=0;//煙花彈閃爍圖片下標(biāo)

Jet[i].shoot=false;//是否發(fā)射

}

//加載圖片

void Load()

{

/**** 儲存煙花的像素點顏色****/

IMAGE fm, gm;

loadimage(fm,/fire/flower.jpg, 3120, 240);

for (int i=0; i 13; i++)

{

SetWorkingImage(fm);

getimage(gm, i * 240, 0, 240, 240);

SetWorkingImage(gm);

for (int a=0; a 240; a++)

for (int b=0; b 240; b++)

Fire[i].xy[a][b]=getpixel(a, b);

}

/**** 加載煙花彈************/

IMAGE sm;

loadimage(sm,/fire/shoot.jpg, 200, 50);

for (int i=0; i 13; i++)

{

SetWorkingImage(sm);

int n=rand() % 5;

getimage(Jet[i].img[0], n * 20, 0, 20, 50);//暗

getimage(Jet[i].img[1], (n + 5) * 20, 0, 20, 50);//亮

}

SetWorkingImage();//設(shè)置回繪圖窗口

}

c++煙花特效代碼

//在一定范圍內(nèi)篩選可發(fā)射的煙花,并初始化發(fā)射參數(shù),輸出煙花彈到屏幕,播放聲音

void Chose(DWORD t1)

{

DWORD t2=timeGetTime();

if (t2 - t1 100)

{

int n=rand() % 20;

if (n 13 Jet[n].shoot==false Fire[n].show==false)

{

/**** 重置煙花彈,預(yù)備發(fā)射*****/

Jet[n].x=rand() % 1200;

Jet[n].y=rand() % 100 + 600;

Jet[n].hx=Jet[n].x;

Jet[n].hy=rand() % 400;

Jet[n].height=Jet[n].y - Jet[n].hy;

Jet[n].shoot=true;

putimage(Jet[n].x, Jet[n].y, Jet[n].img[Jet[n].n], SRCINVERT);

/**** 播放每個煙花彈的聲音*****/

char c1[50], c2[30], c3[30];

sprintf(c1, open ./fire/shoot.mp3 alias s%d, n);

sprintf(c2, play s%d, n);

sprintf(c3, close n%d, n);

mciSendString(c3, 0, 0, 0);

mciSendString(c1, 0, 0, 0);

mciSendString(c2, 0, 0, 0);

}

t1=t2;

}

}

//掃描煙花彈并發(fā)射

void Shoot()

{

for (int i=0; i 13; i++)

{

Jet[i].t2=timeGetTime();

if (Jet[i].t2 - Jet[i].t1 Jet[i].dt Jet[i].shoot==true)

{

/**** 煙花彈的上升*****/

putimage(Jet[i].x, Jet[i].y, Jet[i].img[Jet[i].n], SRCINVERT);

if (Jet[i].y Jet[i].hy)

{

Jet[i].n++;

Jet[i].y -=5;

}

putimage(Jet[i].x, Jet[i].y, Jet[i].img[Jet[i].n], SRCINVERT);

/**** 上升到高度的3/4,減速*****/

if ((Jet[i].y - Jet[i].hy) * 4 Jet[i].height)

Jet[i].dt=rand() % 4 + 10;

/**** 上升到最大高度*****/

if (Jet[i].y=Jet[i].hy)

{

//播放爆炸聲

char c1[50], c2[30], c3[30];

sprintf(c1, open ./fire/bomb.wav alias n%d, i);

sprintf(c2, play n%d, i);

sprintf(c3, close s%d, i);

mciSendString(c3, 0, 0, 0);

mciSendString(c1, 0, 0, 0);

mciSendString(c2, 0, 0, 0);

putimage(Jet[i].x, Jet[i].y, Jet[i].img[Jet[i].n], SRCINVERT);//擦掉煙花彈

Fire[i].x=Jet[i].hx + 10;//在煙花彈中間爆炸

Fire[i].y=Jet[i].hy;//在最高點綻放

Fire[i].show=true;//開始綻放

Jet[i].shoot=false;//停止發(fā)射

}

Jet[i].t1=Jet[i].t2;

}

}

}

//顯示花樣

void Style(DWORD st1)

{

DWORD st2=timeGetTime();

if (st2 - st1 20000)//一首歌的時間

{

//心形坐標(biāo)

int x[13]={ 60, 75, 91, 100, 95, 75, 60, 45, 25, 15, 25, 41, 60 };

int y[13]={ 65, 53, 40, 22, 5, 4, 20, 4, 5, 22, 40, 53, 65 };

for (int i=0; i NUM; i++)

{

//cleardevice();

/**** 規(guī)律分布煙花彈***/

Jet[i].x=x[i] * 10;

Jet[i].y=(y[i] + 75) * 10;

Jet[i].hx=Jet[i].x;

Jet[i].hy=y[i] * 10;

Jet[i].height=Jet[i].y - Jet[i].hy;

Jet[i].shoot=true;

Jet[i].dt=7;

putimage(Jet[i].x, Jet[i].y, Jet[i].img[Jet[i].n], SRCINVERT);//顯示煙花彈

/**** 設(shè)置煙花參數(shù)***/

Fire[i].x=Jet[i].x + 10;

Fire[i].y=Jet[i].hy;

Fire[i].show=false;

Fire[i].r=0;

/**** 播放發(fā)射聲音***/

char c1[50], c2[30], c3[30];

sprintf(c1, open ./fire/shoot.mp3 alias s%d, i);

sprintf(c2, play s%d, i);

sprintf(c3, close n%d, i);

mciSendString(c3, 0, 0, 0);

mciSendString(c1, 0, 0, 0);

mciSendString(c2, 0, 0, 0);

}

st1=st2;

}

}

//綻放煙花

void Show(DWORD* pMem)

{

//煙花個階段綻放時間間隔,制作變速綻放效果

int drt[16]={ 5, 5, 5, 5, 5, 6, 25, 25, 25, 25, 55, 55, 55, 55, 55 };

for (int i=0; i NUM; i++)

{

Fire[i].t2=timeGetTime();

//增加爆炸半徑,綻放煙花,增加時間間隔做變速效果

if (Fire[i].t2 - Fire[i].t1 Fire[i].dt Fire[i].show==true)

{

if (Fire[i].r Fire[i].max_r)

{

Fire[i].r++;

Fire[i].dt=drt[Fire[i].r/10];

Fire[i].draw=true;

}

if (Fire[i].r=Fire[i].max_r - 1)

{

Fire[i].draw=false;

Init(i);

}

Fire[i].t1=Fire[i].t2;

}

//如果該號炮花可爆炸,根據(jù)當(dāng)前爆炸半徑畫煙花,顏色值接近黑色的不輸出。

if (Fire[i].draw)

{

for (double a=0; a=6.28; a +=0.01)

{

int x1=(int)(Fire[i].cen_x + Fire[i].r * cos(a));//相對于圖片左上角的坐標(biāo)

int y1=(int)(Fire[i].cen_y - Fire[i].r * sin(a));

if (x1 0 x1 Fire[i].width y1 0 y1 Fire[i].height)//只輸出圖片內(nèi)的像素點

{

int b=Fire[i].xy[x1][y1] 0xff;

int g=(Fire[i].xy[x1][y1] 8) 0xff;

int r=(Fire[i].xy[x1][y1] 16);

//煙花像素點在窗口上的坐標(biāo)

int xx=(int)(Fire[i].x + Fire[i].r * cos(a));

int yy=(int)(Fire[i].y - Fire[i].r * sin(a));

//較暗的像素點不輸出、防止越界

if (r 0x20 g 0x20 b 0x20 xx 0 xx 1200 yy 0 yy 800)

pMem[yy * 1200 + xx]=BGR(Fire[i].xy[x1][y1]);//顯存操作繪制煙花

}

}

Fire[i].draw=false;

}

}

}

c++表白代碼煙花,以上就是本文為您收集整理的c++表白代碼煙花最新內(nèi)容,希望能幫到您!更多相關(guān)內(nèi)容歡迎關(guān)注。

本文來自網(wǎng)絡(luò),不代表海詩網(wǎng)立場,轉(zhuǎn)載請注明出處:http://x91880.com/n/169694.html
      

php(php與人民幣換算)

發(fā)表回復(fù)
聯(lián)系我們
聯(lián)系我們

在線咨詢: QQ交談

郵箱: 3587015498@qq.com

工作時間:周一至周五,9:00-17:30,節(jié)假日休息

關(guān)注微信
微信掃一掃關(guān)注我們
微信掃一掃關(guān)注我們
關(guān)注微博
返回頂部