最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

c++實現(xiàn)新年煙花效果完整代碼

 更新時間:2023年11月29日 10:37:09   作者:獨編  
這篇文章主要給大家介紹了關(guān)于c++實現(xiàn)新年煙花效果的相關(guān)資料,文中給出了詳細(xì)完整代碼,適合初學(xué)C語言/C++的小伙伴學(xué)習(xí)研究,需要的朋友可以參考下

分享一下我的煙花代碼,圖片可以去百度自己搜索

完整代碼:

#include <iostream>
#include <graphics.h>      
#include <easyx.h>
#include "math.h"
#include "time.h"
 
//煙花彈
struct Jet {
    int x = 0, y = 0;
    int hx = 0, hy = 0;
    unsigned long t1 = 0, t2 = 0, dt = 0;
    IMAGE img;
    bool isshoot = 1;
}jet;
Jet jet1, jet2, jet3;
//煙花
struct Fire {
    int r = 0;            //當(dāng)前半徑
    int maxr = 0;          //最大半徑
    int x = 0, y = 0;     //中心點坐標(biāo)(窗口)
    int cx = 0, cy = 0;    //中心點坐標(biāo)(圖畫)
    int xy[240][240];     //保存像素點
    bool isboom = 0;       //是否爆炸
    bool isdraw = 0;      //是否顯示
    unsigned long t1 = 0, t2 = 0, dt = 0;   //爆炸速度
}fire;
Fire fire1, fire2, fire3;
 
void jet_init(Jet* jetn)     //煙花彈的初始化
{
    jetn->x = rand() % 1100 - 20;
    jetn->y = rand() % 50 + 700;
    jetn->hx = jetn->x;
    jetn->hy = rand() % 450;
    jetn->t1 = GetTickCount();  //獲取系統(tǒng)時間
    jetn->isshoot = true;
    jetn->dt = rand() % 10 + 1;
}
 
void fire_init(Fire* firen)
{
    firen->r = 0;
    firen->maxr = 120;
    firen->cx = 120; firen->cy = 120;     //中心點的坐標(biāo)(圖片)
    firen->isboom = true; firen->isdraw = false;
    firen->t1 = GetTickCount();
    firen->dt = 5;             //煙花爆炸速度
    IMAGE fimg;
    
    loadimage(&fimg, L"煙花4.jpg", 240, 240);
    SetWorkingImage(&fimg);
    for (int a = 0; a < 240; a++)
    {
        for (int b = 0; b < 240; b++)
        {
            firen->xy[a][b] = getpixel(a, b);   //傳入像素點
        }
    }
    SetWorkingImage();
}
 
//函數(shù)測試
void fire_text(Jet* jetn, Fire* firen)
{
    DWORD* pmem = GetImageBuffer();
    jetn->t2 = GetTickCount();
    if (jetn->t2 - jetn->t1 > jetn->dt && jetn->isshoot == true)
    {
        putimage(jetn->x, jetn->y, &jetn->img, SRCINVERT);
        if (jetn->y > jetn->hy)
        {
            jetn->y -= 5;
            putimage(jetn->x, jetn->y, &jetn->img, SRCINVERT);
        }
        if (jetn->y <= jetn->hy)     //煙花彈移動出界
        {
            jetn->isshoot = false;
            putimage(jetn->x, jetn->y, &jetn->img, SRCINVERT);
            fire_init(firen);    //煙花的初始化
            firen->x = jetn->hx + 10;
            firen->y = jetn->hy - 20;
 
        }
        if (jetn->isshoot == false && firen->isboom == true && firen->isdraw == 0)
        {
            jet_init(jetn);
            putimage(jetn->x, jetn->y, &jetn->img, SRCINVERT);
        }
        jetn->t1 = jetn->t2;
        //煙花
        int drt[13] = { 5,5,5,10,10,15,15,25,35,40,40,55,55 }; //不一樣的速度
        firen->t2 = GetTickCount();
        if (firen->t2 - firen->t1 > firen->dt && firen->isboom == true)
        {
            if (firen->r < firen->maxr)
            {
                firen->r++;
                firen->dt = drt[firen->r / 10];
                firen->isdraw = true;
            }
            if (firen->r > firen->maxr - 1)
            {
                firen->isdraw = false;
                firen->isboom = false;
                //初始化煙花
                firen->r = 0;
                firen->maxr = 120;
 
            }
            firen->t1 = firen->t2;
            if (firen->isdraw = true)
            {
                for (double a = 0; a < 6.28; a += 0.01)
                {
                    for (int m = 0; m <= firen->r; m++)
                        //x1 y1 來自像素點的628個像素坐標(biāo)
                    {
                        int x2 = firen->cx + m * cos(a);
                        int y2 = firen->cy - m * sin(a);
                        //如果數(shù)據(jù)正常,獲取像素點的三原色系
                        if (x2 > 0 && x2 < 240 && y2 > 0 && y2 < 240)
                        {
                            int b = firen->xy[x2][y2] & 0xff;
                            int g = (firen->xy[x2][y2] >> 8) & 0xff;
                            int r = firen->xy[x2][y2] >> 16;
                            //求圈上的點在窗體上的坐標(biāo)
                            int xx2 = firen->x + m * cos(a);
                            int yy2 = firen->y - m * sin(a);
                            if (/*b > 0x20 && g > 0x20 && r > 0x20 &&*/ xx2 < 1200 && xx2 > 0 && yy2 > 0 && yy2 <= 600)
                            {
                                pmem[yy2 * 1100 + xx2] = BGR(firen->xy[x2][y2]);
                            }
                        }
                    }
                }
                firen->isdraw == false;
            }
        }
    }
}
 
 
int ss = 0;
int Fire_Finally()       //煙花主函數(shù)
{
    initgraph(1100, 800);
    srand(time(0));
/*-----------------------------------------圖片------------------------------------*/
    jet_init(&jet);
    loadimage(&jet.img, L"煙花彈2.jpg", 20, 50);
    putimage(jet.x, jet.y, &jet.img, SRCINVERT);
 
    DWORD* pmem = GetImageBuffer();
    BeginBatchDraw();
 
    while (1)
    {
        for (int clr = 0; clr < 1000; clr++)
        {
            for (int j = 0; j < 2; j++)
            {
                int px1 = rand() % 1200;
                int py1 = rand() % 650;
                if (py1 < 790)
                {
                    pmem[py1 * 1200 + px1] = pmem[py1 * 1200 + px1 + 1] = BLACK;
                }
            }
        }
        fire_text(&jet, &fire);
        FlushBatchDraw();
    }
    EndBatchDraw();
 
    closegraph();
 
    return 0;
}
 
int main()
{
    Fire_Finally();
    system("pause");
    return 0;
}

這是一個煙花連續(xù)放的程序,如果要更多的煙花道理相同,如果不想自己寫可以私信我哦。

總結(jié)

到此這篇關(guān)于c++實現(xiàn)新年煙花效果完整代碼的文章就介紹到這了,更多相關(guān)c++新年煙花內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Qt利用QChart實現(xiàn)實時波形圖的繪制

    Qt利用QChart實現(xiàn)實時波形圖的繪制

    這篇文章主要介紹了Qt如何利用QChart實現(xiàn)實時波形圖的繪制,文中的示例代碼講解詳細(xì),對我們學(xué)習(xí)有一定是參考價值,需要的可以參考一下
    2022-06-06
  • C語言關(guān)鍵字之a(chǎn)uto register詳解

    C語言關(guān)鍵字之a(chǎn)uto register詳解

    這篇文章主要為大家介紹了C語言關(guān)鍵字之a(chǎn)uto register,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-01-01
  • C++與Lua交互原理實例詳解

    C++與Lua交互原理實例詳解

    這篇文章主要介紹了C++與Lua交互原理實例詳解,有感興趣的同學(xué)可以研究下
    2021-02-02
  • C語言中的數(shù)據(jù)類型詳解

    C語言中的數(shù)據(jù)類型詳解

    在C語言中,數(shù)據(jù)類型指的是用于聲明不同類型的變量或函數(shù)的一個廣泛的系統(tǒng)。變量的類型決定了變量存儲占用的空間,以及如何解釋存儲的位模式,本文將詳細(xì)給大家介紹一下C語言中的基本數(shù)據(jù)類型,感興趣的同學(xué)可以參考下
    2023-05-05
  • C++ 對多線程/并發(fā)的支持(上)

    C++ 對多線程/并發(fā)的支持(上)

    這篇文章主要介紹的是C++ 對多線程/并發(fā)的支持,并發(fā),即同時執(zhí)行多個任務(wù),常用來提高吞吐量或者改善響應(yīng)性,下面我們就來看文章詳細(xì)介紹C++ 對多線程并發(fā)的支持相關(guān)資料的內(nèi)容吧
    2021-10-10
  • C++超詳細(xì)實現(xiàn)堆和堆排序過像

    C++超詳細(xì)實現(xiàn)堆和堆排序過像

    堆是計算機(jī)科學(xué)中一類特殊的數(shù)據(jù)結(jié)構(gòu)的統(tǒng)稱,通常是一個可以被看做一棵完全二叉樹的數(shù)組對象。而堆排序是利用堆這種數(shù)據(jù)結(jié)構(gòu)所設(shè)計的一種排序算法。本文將通過圖片詳細(xì)介紹堆排序,需要的可以參考一下
    2022-06-06
  • C語言位段(位域)機(jī)制結(jié)構(gòu)體的特殊實現(xiàn)及解析

    C語言位段(位域)機(jī)制結(jié)構(gòu)體的特殊實現(xiàn)及解析

    這篇文章主要為大家介紹了C語言位段位域機(jī)制結(jié)構(gòu)體的特殊實現(xiàn)講解有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步早日升職加薪
    2022-02-02
  • C/C++產(chǎn)生隨機(jī)數(shù)函數(shù)簡單介紹

    C/C++產(chǎn)生隨機(jī)數(shù)函數(shù)簡單介紹

    這篇文章主要為大家詳細(xì)介紹了C/C++產(chǎn)生隨機(jī)數(shù)函數(shù)的實現(xiàn)方法,如何使用C/C++產(chǎn)生隨機(jī)數(shù)函數(shù),感興趣的小伙伴們可以參考一下
    2016-04-04
  • 深入了解C++智能指針的使用

    深入了解C++智能指針的使用

    智能指針的本質(zhì)就是使用一個對象來接管一段開辟的空間,在該對象在銷毀的時候,自動調(diào)用析構(gòu)函數(shù)來釋放這段內(nèi)存。本文就來和大家詳細(xì)聊聊智能指針的使用,需要的可以參考一下
    2022-10-10
  • C++string容器基本概念詳解

    C++string容器基本概念詳解

    c++相比c的一個好處就是實現(xiàn)了很多的容器和泛型算法,使得程序員的工作得到了很大的簡化,本文重點給大家介紹C++string容器基本概念講解,需要的朋友參考下吧
    2021-07-07

最新評論

湄潭县| 永宁县| 金乡县| 北票市| 沐川县| 额尔古纳市| 密云县| 黄陵县| 明光市| 绥德县| 桐庐县| 乡城县| 龙川县| 原阳县| 吉水县| 甘孜县| 武穴市| 云安县| 江永县| 奉贤区| 高陵县| 金门县| 奇台县| 长顺县| 黄山市| 宜君县| 奉贤区| 连州市| 滦南县| 揭阳市| 长治县| 遂宁市| 壶关县| 婺源县| 辽源市| 武山县| 海南省| 绥德县| 龙江县| 宜川县| 特克斯县|