下方有完整代码!

    

烟花的来历:烟花爆竹相传是由唐朝一个叫李畋的人发明的,他利用火药、纸筒等材料制作爆竹,目的是产生巨大声响以驱鬼辟邪;烟花寓意:最初民间燃放焰火是为了迎神与驱逐鬼怪,后来是为了给节日的喜庆增添色彩。烟花又称花炮、烟火、焰火、炮仗,根据《中国烟花爆竹标准—安全与质量》对烟花爆竹的定义为:以烟火药为原料,用于产生声光色的娱乐用品。

烟花的来历:烟花爆竹相传是由唐朝一个叫李畋的人发明的,他利用火药、纸筒等材料制作爆竹,目的是产生巨大声响以驱鬼辟邪;烟花寓意:最初民间燃放焰火是为了迎神与驱逐鬼怪,后来是为了给节日的喜庆增添色彩。烟花又称花炮、烟火、焰火、炮仗,根据《中国烟花爆竹标准—安全与质量》对烟花爆竹的定义为:以烟火药为原料,用于产生声光色的娱乐用品。

烟花的品种名目繁多。按燃放效果分,主要有十三大类:喷花类、旋转类、旋转升空类、火箭类、吐珠类、小礼花类、烟雾类、造型玩具类、组合烟花类、线香类、摩擦炮类、礼花弹等;具体又可分为冷光烟花、礼花弹、盆花、罗马烛光、火箭、电光花、舞台烟花、冷焰火、瞬间烟花、火炬烟花、玩具烟花、鞭炮、舞台喷泉、架子烟花、日景烟花等3000多个;另外,浏阳和万载等地生产的大型烟花,主要供大型焰火晚会欣赏而制造。主要种类有"焰火字幕"、"礼花弹"、"盆花"、"火箭"、"大彩火轮"、"架上烟花"6种,每年都有数十至上百个品类、规格。

获取更多相关资源公众号:每日推荐系列!

本篇内容,我将逐步解释代码并提供相关的代码片段,逐步分析其原理和代码。

首先,让我们看一下代码的头文件部分:

#pragma once
#include<stdio.h>
#include<graphics.h>   //图形界面库头文件
#include<math.h>       //计算圆形的轨迹坐标
#include<conio.h>
#include<time.h>
#include<stdlib.h>
#include<mmsystem.h>
#pragma comment(lib,"winmm.lib")

这些代码片段包含了程序所需的常见头文件,用于包含一些常用函数和库。其中,graphics.h是图形界面库头文件,math.h包含了一些数学计算函数,mmsystem.h用于音频播放。

接下来,我们定义了一些常量:

constexpr auto WND_WIDTH = 1000;
constexpr auto WND_HEIGHT = 600;
constexpr auto PI = 3.141592653589793238;
constexpr auto NUM = 14;

这些常量分别表示窗口的宽度、高度,圆周率PI的值以及一个名为NUM的常量。

然后定义了两个结构体:JETFIRE

struct JET  //烟花弹
{// 省略部分成员变量IMAGE img[2];       //保存烟花一明一暗的图片byte n : 1;         //保存烟花弹的明暗状态  位段
} jet[NUM];    //结构体数组13  img这个数组struct FIRE
{// 省略部分成员变量
} fire[NUM];

JET结构体表示烟花弹,包含了一些与烟花弹相关的信息,如坐标、高度、图片等。FIRE结构体表示火花,也包含了一些相关的信息。

接下来是一系列函数的声明:

void database1(int a);
void database2(int a);
void database3(int a);
void database4(int a);
void welcome1(int a);
void welcome();
void init(int i);
void loadimages();
void choice(DWORD& t1);
void shoot();
void Show(DWORD* pMem);
void delay(int a);

这些函数在后面的代码中会被调用。

然后是main函数:

int main(int agrv, char* agrc[])
{//res 1.wavPlaySound(L"sound.dll", NULL, SND_LOOP | SND_FILENAME | SND_ASYNC);//mp3播放//mciSendString(L"open 1.mp3 alias bkmusic", NULL, 0, NULL);//mciSendString(L"play bkmusic repeat", NULL, 0, NULL);welcome1(1);int i;int j;j = 0;for (i = 0; i < 36; i++){database1(i);delay(10000);system("cls");}initgraph(WND_WIDTH, WND_HEIGHT);       //init初始化  graph图形界面 窗口srand((unsigned int)time(NULL));DWORD t1 = timeGetTime();DWORD* pMem = GetImageBuffer();for (int i = 0; i < NUM; i++){init(i);}loadimages();BeginBatchDraw();while (!_kbhit()){//...choice(t1);shoot();Show(pMem);EndBatchDraw();}return 0;
}

在主函数中,我们首先使用PlaySound函数播放背景音乐,然后调用welcome1函数显示欢迎界面。之后,使用循环调用database1函数打印输出一些数据,每次循环延时10000毫秒。

先来一个函数:

void database1(int a)
{switch (a){case 1:{printf("你");}break;case 2:{printf("好");}break;case 3:{printf("鸭");}break;case 4:{printf("!");}break;case 26:{printf("你好鸭1");}break;case 27:{printf("Happy");}break;case 28:{printf("Spring");}break;case 29:{printf("Festival");}break;case 30:{printf("你好鸭1\n");printf("Happy Spring Festival\n");}break;case 31:{database2(31);}break;case 32:{database2(32);}break;case 33:{database2(33);}break;case 34:{database2(34);}break;case 35:{database2(35);}break;}
}

再来一个打印函数:

void database2(int a)
{switch (a){case 31:{//printf("■■■■■■■■■■■■■■■■■■■■■■■■■■\n");printf("                      ■■                          \n");printf("                      ■■                          \n");printf("                      ■■                          \n");printf("    ■■■■■■■■■■■■■■■■■■■■■      \n");printf("    ■■■■■■■■■■■■■■■■■■■■■      \n");printf("                    ■■                            \n");printf("                    ■■                            \n");printf("      ■■■■■■■■■■■■■■■■■■■        \n");printf("      ■■■■■■■■■■■■■■■■■■■        \n");printf("                  ■■                              \n");printf("                ■■■                              \n");printf("  ■■■■■■■■■■■■■■■■■■■■■■■    \n");printf("  ■■■■■■■■■■■■■■■■■■■■■■■    \n");printf("            ■■■            ■■■                \n");printf("          ■■■                ■■■              \n");printf("      ■■■■                  ■■■■            \n");printf("    ■■■■■■■■■■■■■■■■■■■■        \n");printf("■■■■  ■■                    ■■■■■■■    \n");printf("■■■    ■■                    ■■    ■■■    \n");printf("  ■      ■■■■■■■■■■■■■■              \n");printf("          ■■■■■■■■■■■■■■              \n");printf("          ■■                    ■■              \n");printf("          ■■                    ■■              \n");printf("          ■■                    ■■              \n");printf("          ■■■■■■■■■■■■■■              \n");printf("          ■■■■■■■■■■■■■■              \n");}break;case 32:{//printf("■■■■■■■■■■■■■■■■■■■■■■■■■\n");printf("                ■■          ■■                \n");printf("                ■■          ■■                \n");printf("                ■■          ■■                \n");printf("■■■■■■■■■■■■■■■■■■■■■■■■■\n");printf("■■■■■■■■■■■■■■■■■■■■■■■■■\n");printf("                ■■          ■■                \n");printf("                ■■          ■■                \n");printf("                ■■          ■■                \n");printf("                ■■          ■■                \n");printf("                                                  \n");printf("  ■■■■■■■■■■■■■■■■■■■■■■    \n");printf("  ■■■■■■■■■■■■■■■■■■■■■■    \n");printf("                  ■■                    ■■    \n");printf("                  ■■                    ■■    \n");printf("                  ■■                    ■■    \n");printf("                  ■■                    ■■    \n");printf("                  ■■                    ■■    \n");printf("                  ■■                    ■■    \n");printf("                  ■■                    ■■    \n");printf("                  ■■                ■■■■    \n");printf("                  ■■              ■■■■      \n");printf("                  ■■              ■■■        \n");printf("                  ■■                            \n");printf("                  ■■                            \n");printf("                  ■■                            \n");printf("                  ■■                            \n");}break;case 33:{//printf("■■■■■■■■■■■■■■■■■■■■■■■■■\n");printf("        ■■                  ■■                \n");printf("        ■■                  ■■                \n");printf("        ■■                  ■■                \n");printf("        ■■                  ■■                \n");printf("        ■■          ■■■■■■■■■■■      \n");printf("        ■■          ■■■■■■■■■■■■    \n");printf("  ■■  ■■  ■■            ■■      ■■      \n");printf("  ■■  ■■    ■■          ■■      ■■      \n");printf("■■    ■■    ■■          ■■      ■■      \n");printf("■■    ■■    ■■■        ■■      ■■      \n");printf("■■    ■■                  ■■      ■■      \n");printf("■■    ■■                  ■■      ■■      \n");printf("■■    ■■                  ■■      ■■■    \n");printf("        ■■      ■■■■■■■■■■■■■■■■\n");printf("        ■■      ■■■■■■■■■        ■■■\n");printf("        ■■                  ■■■              \n");printf("        ■■                ■■■■              \n");printf("        ■■                ■■  ■■            \n");printf("        ■■              ■■    ■■            \n");printf("        ■■              ■■      ■■          \n");printf("        ■■            ■■        ■■■        \n");printf("        ■■          ■■■          ■■■      \n");printf("        ■■        ■■■              ■■■■  \n");printf("        ■■      ■■■■                ■■■■\n");printf("        ■■      ■■■                    ■■  \n");printf("        ■■        ■                            \n");}break;case 34:{//不用                                             不用 //printf("■■■■■■■■■■■■■■■■■■■■■■■■■\n");printf("                                    ■■          \n");printf("        ■■  ■■■■■■■■■■■■■■        \n");printf("      ■■■■■■■■■■■■■■■■■■■      \n");printf("      ■■■                                      \n");printf("      ■■                                        \n");printf("      ■■              ■■                      \n");printf("      ■■              ■■                      \n");printf("      ■■              ■■                      \n");printf("      ■■              ■■                      \n");printf("    ■■■              ■■                      \n");printf("    ■■■              ■■                      \n");printf("    ■■■■■■■■■■■■■■■■■■■■■    \n");printf("    ■■■■            ■■■              ■    \n");printf("                        ■■                      \n");printf("                        ■■                      \n");printf("            ■          ■■                      \n");printf("          ■■■■      ■■      ■■■          \n");printf("          ■■■        ■■      ■■■■        \n");printf("        ■■■          ■■        ■■■■      \n");printf("      ■■■            ■■          ■■■■    \n");printf("    ■■■              ■■            ■■■■  \n");printf("  ■■■                ■■                      \n");printf("  ■■■                ■■                      \n");printf("                  ■■■■■                      \n");printf("                    ■■■■                      \n");printf("                    ■■                          \n");}break;case 35:{printf("happy spring festival!");}}
}

这一块有点玄乎哈!

void choice(DWORD& t1)
{DWORD t2 = timeGetTime();if (t2 - t1 > 2)   //2ms产生一个烟花弹{int n = rand() % 200;     //0-199if (n < NUM && jet[n].isshoot == false && fire[n].show == false){//重置烟花弹jet[n].x = rand() % (WND_WIDTH - 20);jet[n].y = rand() % 100 + 400;   //450-549jet[n].hx = jet[n].x;jet[n].hy = rand() % 400;        //0-399jet[n].height = jet[n].y - jet[n].hy;jet[n].isshoot = true;//nputimage(jet[n].x, jet[n].y, &jet[n].img[jet[n].n]);}t1 = t2;}
}void shoot()
{for (int i = 0; i < NUM; i++){jet[i].t2 = timeGetTime();if (jet[i].t2 - jet[i].t1 > jet[i].dt && jet[i].isshoot == true){putimage(jet[i].x, jet[i].y, &jet[i].img[jet[i].n]);if (jet[i].hy < jet[i].y){jet[i].n++;  //0-1  明暗交替jet[i].y -= 5;}putimage(jet[i].x, jet[i].y, &jet[i].img[jet[i].n]);if (jet[i].y <= jet[i].hy){fire[i].y = jet[i].hy;fire[i].x = jet[i].hx;fire[i].show = true;jet[i].isshoot = false;}jet[i].t1 = jet[i].t2;}}
}void Show(DWORD* pMem)
{int drt[16] = { 5,5,5,5,5,6,25,25,25,25,25,55,55,55,55,55 };    //dtfor (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;}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));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){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);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 < 1000 && yy < 600 && yy>0){pMem[yy * 1000 + xx] = BGR(fire[i].xy[x1][y1]);}}}fire[i].draw = true;}}}void delay(int a)
{while (a){a--;}
}

然后使用initgraph初始化图形界面,指定窗口的宽度和高度。

接下来使用srand函数初始化随机数种子,并使用timeGetTime函数获取当前时间作为计时器的起始值。

接着使用循环调用init函数进行烟花的初始化操作。

然后调用loadimages函数加载图片。

然后调用BeginBatchDraw开始图形绘制的批处理,进入一个循环,直到用户按下键盘上的任意键。

在循环中,依次调用choice函数进行烟花类型的选择,shoot函数发射烟花,Show函数显示图像,并调用EndBatchDraw结束绘制。

最后,主函数返回0,结束程序。

完整代码如下:

#pragma once
#include<stdio.h>
#include<graphics.h>   //图形界面库头文件
#include<math.h>       //计算圆形的轨迹坐标
#include<conio.h>
#include<time.h>
#include<stdlib.h>
#include<mmsystem.h>
#pragma comment(lib,"winmm.lib")
//#include 包含头文件
//#pragma comment(lib."文件名称")  包含库文件constexpr auto WND_WIDTH = 1000;
constexpr auto WND_HEIGHT = 600;
constexpr auto PI = 3.141592653589793238;
constexpr auto NUM = 14;/***********结构****************/
struct JET  //烟花弹
{int x, y;      //发射点坐标int hx, hy;    //最高点坐标  爆炸坐标int height;    //高度  最高点y 发射点y的差值bool isshoot;  //是否发射状态DWORD t1, t2, dt;   //保存时间  时间可以用来描述发射速度IMAGE img[2];       //保存烟花一明一暗的图片byte n : 1;         //保存烟花弹的明暗状态  位段//字节为单位 int 4 char 1 n一个位 0-1
}jet[NUM];    //结构体数组13  img这个数组struct FIRE
{int r;int max_r;int x, y;int cen_x, cen_y;int width, height;int xy[240][240];bool show;bool draw;DWORD t1, t2, dt;
}fire[NUM];
void database1(int a);
void database2(int a);
void database3(int a);
void database4(int a);
void welcome1(int a);
void welcome();
void init(int i);
void loadimages();
void choice(DWORD& t1);
void shoot();
void Show(DWORD* pMem);
void delay(int a);int main(int agrv, char* agrc[])
{//res 1.wavPlaySound(L"sound.dll", NULL, SND_LOOP | SND_FILENAME | SND_ASYNC);//mp3播放//mciSendString(L"open 1.mp3 alias bkmusic", NULL, 0, NULL);//mciSendString(L"play bkmusic repeat", NULL, 0, NULL);welcome1(1);int i;int j;j = 0;for (i = 0; i < 36; i++){database1(i);delay(10000);system("cls");}initgraph(WND_WIDTH, WND_HEIGHT);       //init初始化  graph图形界面 窗口srand((unsigned int)time(NULL));DWORD t1 = timeGetTime();DWORD* pMem = GetImageBuffer();//第一个界面welcome();//初始化for (int i = 0; i < NUM; i++){init(i);}loadimages();BeginBatchDraw();while (!_kbhit()){//Sleep(10);for (int i = 0; i < 1000; i++){for (int j = 0; j < 3; j++){int px1 = rand() % 1000;int py1 = rand() % 600;if (py1 < 599){pMem[py1 * 1000 + px1] = pMem[py1 * 1000 + px1 + 1] = BLACK;}}}choice(t1);shoot();Show(pMem);EndBatchDraw();}return 0;
}void database1(int a)
{switch (a){case 1:{printf("你");}break;case 2:{printf("好");}break;case 3:{printf("鸭");}break;case 4:{printf("!");}break;case 26:{printf("你好鸭1");}break;case 27:{printf("Happy");}break;case 28:{printf("Spring");}break;case 29:{printf("Festival");}break;case 30:{printf("你好鸭1\n");printf("Happy Spring Festival\n");}break;case 31:{database2(31);}break;case 32:{database2(32);}break;case 33:{database2(33);}break;case 34:{database2(34);}break;case 35:{database2(35);}break;}
}void database2(int a)
{switch (a){case 31:{//printf("■■■■■■■■■■■■■■■■■■■■■■■■■■\n");printf("                      ■■                          \n");printf("                      ■■                          \n");printf("                      ■■                          \n");printf("    ■■■■■■■■■■■■■■■■■■■■■      \n");printf("    ■■■■■■■■■■■■■■■■■■■■■      \n");printf("                    ■■                            \n");printf("                    ■■                            \n");printf("      ■■■■■■■■■■■■■■■■■■■        \n");printf("      ■■■■■■■■■■■■■■■■■■■        \n");printf("                  ■■                              \n");printf("                ■■■                              \n");printf("  ■■■■■■■■■■■■■■■■■■■■■■■    \n");printf("  ■■■■■■■■■■■■■■■■■■■■■■■    \n");printf("            ■■■            ■■■                \n");printf("          ■■■                ■■■              \n");printf("      ■■■■                  ■■■■            \n");printf("    ■■■■■■■■■■■■■■■■■■■■        \n");printf("■■■■  ■■                    ■■■■■■■    \n");printf("■■■    ■■                    ■■    ■■■    \n");printf("  ■      ■■■■■■■■■■■■■■              \n");printf("          ■■■■■■■■■■■■■■              \n");printf("          ■■                    ■■              \n");printf("          ■■                    ■■              \n");printf("          ■■                    ■■              \n");printf("          ■■■■■■■■■■■■■■              \n");printf("          ■■■■■■■■■■■■■■              \n");}break;case 32:{//printf("■■■■■■■■■■■■■■■■■■■■■■■■■\n");printf("                ■■          ■■                \n");printf("                ■■          ■■                \n");printf("                ■■          ■■                \n");printf("■■■■■■■■■■■■■■■■■■■■■■■■■\n");printf("■■■■■■■■■■■■■■■■■■■■■■■■■\n");printf("                ■■          ■■                \n");printf("                ■■          ■■                \n");printf("                ■■          ■■                \n");printf("                ■■          ■■                \n");printf("                                                  \n");printf("  ■■■■■■■■■■■■■■■■■■■■■■    \n");printf("  ■■■■■■■■■■■■■■■■■■■■■■    \n");printf("                  ■■                    ■■    \n");printf("                  ■■                    ■■    \n");printf("                  ■■                    ■■    \n");printf("                  ■■                    ■■    \n");printf("                  ■■                    ■■    \n");printf("                  ■■                    ■■    \n");printf("                  ■■                    ■■    \n");printf("                  ■■                ■■■■    \n");printf("                  ■■              ■■■■      \n");printf("                  ■■              ■■■        \n");printf("                  ■■                            \n");printf("                  ■■                            \n");printf("                  ■■                            \n");printf("                  ■■                            \n");}break;case 33:{//printf("■■■■■■■■■■■■■■■■■■■■■■■■■\n");printf("        ■■                  ■■                \n");printf("        ■■                  ■■                \n");printf("        ■■                  ■■                \n");printf("        ■■                  ■■                \n");printf("        ■■          ■■■■■■■■■■■      \n");printf("        ■■          ■■■■■■■■■■■■    \n");printf("  ■■  ■■  ■■            ■■      ■■      \n");printf("  ■■  ■■    ■■          ■■      ■■      \n");printf("■■    ■■    ■■          ■■      ■■      \n");printf("■■    ■■    ■■■        ■■      ■■      \n");printf("■■    ■■                  ■■      ■■      \n");printf("■■    ■■                  ■■      ■■      \n");printf("■■    ■■                  ■■      ■■■    \n");printf("        ■■      ■■■■■■■■■■■■■■■■\n");printf("        ■■      ■■■■■■■■■        ■■■\n");printf("        ■■                  ■■■              \n");printf("        ■■                ■■■■              \n");printf("        ■■                ■■  ■■            \n");printf("        ■■              ■■    ■■            \n");printf("        ■■              ■■      ■■          \n");printf("        ■■            ■■        ■■■        \n");printf("        ■■          ■■■          ■■■      \n");printf("        ■■        ■■■              ■■■■  \n");printf("        ■■      ■■■■                ■■■■\n");printf("        ■■      ■■■                    ■■  \n");printf("        ■■        ■                            \n");}break;case 34:{//不用                                             不用 //printf("■■■■■■■■■■■■■■■■■■■■■■■■■\n");printf("                                    ■■          \n");printf("        ■■  ■■■■■■■■■■■■■■        \n");printf("      ■■■■■■■■■■■■■■■■■■■      \n");printf("      ■■■                                      \n");printf("      ■■                                        \n");printf("      ■■              ■■                      \n");printf("      ■■              ■■                      \n");printf("      ■■              ■■                      \n");printf("      ■■              ■■                      \n");printf("    ■■■              ■■                      \n");printf("    ■■■              ■■                      \n");printf("    ■■■■■■■■■■■■■■■■■■■■■    \n");printf("    ■■■■            ■■■              ■    \n");printf("                        ■■                      \n");printf("                        ■■                      \n");printf("            ■          ■■                      \n");printf("          ■■■■      ■■      ■■■          \n");printf("          ■■■        ■■      ■■■■        \n");printf("        ■■■          ■■        ■■■■      \n");printf("      ■■■            ■■          ■■■■    \n");printf("    ■■■              ■■            ■■■■  \n");printf("  ■■■                ■■                      \n");printf("  ■■■                ■■                      \n");printf("                  ■■■■■                      \n");printf("                    ■■■■                      \n");printf("                    ■■                          \n");}break;case 35:{printf("happy spring festival!");}}
}void welcome1(int a)
{int i;int j;for (i = 0; i < 100; i++){for (j = 0; j < 20; j++){printf("\n");}printf("                                        this program is powered by lry\n");printf("                                         all rights reserved 2020~2021\n");printf("                                          begin to start this project\n");printf("                                              rate of progress:%d%c\n", i, '%');system("cls");}
}
void welcome()
{settextcolor(YELLOW);for (int i = 0; i < 50; i++){//圆心(500,300) 半径150  60个均匀点的x,yint x = 500 + int(150 * sin(PI * 2 * i / 60));int y = 300 + int(150 * cos(PI * 2 * i / 60));cleardevice();settextstyle(i, 0, L"微软雅黑");outtextxy(x - 100, y - 150, L"Eric,会点编程");     //在指定的位置去输出字符outtextxy(x, y - 100, L"Eric,会点编程");Sleep(25);}//_getch();   //接收字符 不回显 直接接收Sleep(2000);cleardevice();settextstyle(25, 0, L"宋体");outtextxy(400, 150, L"1,");outtextxy(400, 200, L"2");outtextxy(400, 250, L"3,");outtextxy(400, 300, L"4,");outtextxy(400, 350, L"5");outtextxy(560, 400, L"---6");Sleep(3000);//_getch();
}void init(int i)
{int r[14] = { 120,120,155,123,130,147,138,138,130,135,140,132,155,160 };int x[14] = { 120,120,110,117,110,93,102,102,110,105,100,108,110,132 };int y[14] = { 120,120,85,118,120,105,103,110,110,120,1201,04,85,145 };fire[i].x = 0;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;//初始化  烟花弹jet[i].x = 0;jet[i].y = 0;jet[i].hx = 0;jet[i].hy = 0;jet[i].height = 0;jet[i].t1 = timeGetTime();   //获取系统时间jet[i].dt = rand() % 10;   //0-9的随机时间jet[i].n = 0;jet[i].isshoot = false;
}void loadimages()
{IMAGE fm, gm;loadimage(&fm, L"flower.dll", 3120, 240);for (int i = 0; i < NUM; 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 jetimg;loadimage(&jetimg, L"shoot.dll", 200, 50);//set设置 working正在工作的 image图片SetWorkingImage(&jetimg);for (int i = 0; i < NUM; i++){int n = rand() % 5;   //0-4的随机数getimage(&jet[i].img[0], n * 20, 0, 20, 50);getimage(&jet[i].img[1], (n + 5) * 20, 0, 20, 50);}SetWorkingImage(NULL);
}void choice(DWORD& t1)
{DWORD t2 = timeGetTime();if (t2 - t1 > 2)   //2ms产生一个烟花弹{int n = rand() % 200;     //0-199if (n < NUM && jet[n].isshoot == false && fire[n].show == false){//重置烟花弹jet[n].x = rand() % (WND_WIDTH - 20);jet[n].y = rand() % 100 + 400;   //450-549jet[n].hx = jet[n].x;jet[n].hy = rand() % 400;        //0-399jet[n].height = jet[n].y - jet[n].hy;jet[n].isshoot = true;//nputimage(jet[n].x, jet[n].y, &jet[n].img[jet[n].n]);}t1 = t2;}
}void shoot()
{for (int i = 0; i < NUM; i++){jet[i].t2 = timeGetTime();if (jet[i].t2 - jet[i].t1 > jet[i].dt && jet[i].isshoot == true){putimage(jet[i].x, jet[i].y, &jet[i].img[jet[i].n]);if (jet[i].hy < jet[i].y){jet[i].n++;  //0-1  明暗交替jet[i].y -= 5;}putimage(jet[i].x, jet[i].y, &jet[i].img[jet[i].n]);if (jet[i].y <= jet[i].hy){fire[i].y = jet[i].hy;fire[i].x = jet[i].hx;fire[i].show = true;jet[i].isshoot = false;}jet[i].t1 = jet[i].t2;}}
}void Show(DWORD* pMem)
{int drt[16] = { 5,5,5,5,5,6,25,25,25,25,25,55,55,55,55,55 };    //dtfor (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;}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));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){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);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 < 1000 && yy < 600 && yy>0){pMem[yy * 1000 + xx] = BGR(fire[i].xy[x1][y1]);}}}fire[i].draw = true;}}}void delay(int a)
{while (a){a--;}
}

通过这个例子,我们可以看到程序的整体结构和实现原理。这种逐步解析的方法有助于理解复杂代码,并将其组织成一篇说明文本。在本文中,我们详细介绍了代码的各个部分,并提供了相应的代码片段。希望这篇文章对您有所帮助。

 烟火划过了夜空。

  年夜里,有一点只在不经意间才能感觉到的微雨。站在楼台顶上,我望着夜空,专注地想。烟火、雨水,毫不相容的两者能交织出怎样的精彩瞬间?

  等了许久,还是没有等到精彩。烟花依然保持着它固有的绚烂美。暗夜里,这种“万花齐放”的气势敌过了所有孤寞的雨滴,嚣张的喧闹声肆无忌惮地嘲笑着凉夜。有人说,烟火也是有生命的。它以火开始,以火展示,也是因为火的炽烈,在瞬间消逝。可能吧,在长空下掀起的一片热闹,便是花火的本色。

  热闹分很多种,但每一种都显得烟火一般短暂。不管是亲人团圆的喜悦,朋友相聚的热闹,还是和恋人相拥时的欢笑,种种欢乐,种种亲热,拥有的时候有多么真切,丢失的时候就会有多么的失落。天下无不散之筵席,离散仿佛是一种注定。当拥有的时候,我们毫无顾忌地享受着快乐,因为不需计较后果。就仿佛置身化作烟火,用炙热的情感燃烧出令人钦羡的颜色。然后在万家灯火的交互里,等不及找出绘有自己的年华。时间眨几次眼,等着我们燃尽相聚时的热情,就等到了平静。最后,当我们再想听一听熟悉的声音,黑夜却也似听故事般安静。

  热闹是指尖里的沙,触动了神经,仅给思绪染上风的急切。它来得那么欢乐,走得却那么感伤。人生的繁华也如同盛世的烟花,虽美好,也不过一夜刹那。时光轻擦,躲过的是离人们的守候。两个世界里,一个安静的全是自己,一个热闹的属于他们。学会懂得照顾好唯一的自己,再守候他们给的倾情。闹曲奏出内心的孤寂,终途始终流淌着记忆。再也不须贪恋,流年里都是缘分。曲终人散,何叹再难聚,即使都已隔离天涯。

        烟花是一种美妙绚丽吉庆之物。它寓意这各种喜庆,吉祥,宏伟,欢乐,热情的场面和心情。

        一般寓意:一飞冲天,一炮而红;此外不同种类烟花寓意不同。“绿色拉手”烟花,就像拱手般向各位拜年。 “金元宝”烟花,好像财神从天空洒金元宝到地上。
百花齐放,欣欣向荣。 红、粉红、草绿、橙及蓝色带等闪烁烟花,寓意洗涤疲惫心灵,身心康泰。“红暗绿纺”及“红暗银纺”的烟花,就好像大地初开,寓

         烟花是绚丽的,但它不是文静的,当它冲出匣子的那一刻,它就是一个诡秘的魔术师,把匣子里的化学成分变成美丽的炮竹,让人们看到它的美,看到它的绚丽。 同时,它也想吸引很多人,让大家都来看看它多么的自信,多么的快乐,多么的美丽!

        一般寓意:一飞冲天,一炮而红;此外不同种类烟花寓意不同。“绿色拉手”烟花,就像拱手般向各位拜年。 “金元宝”烟花,好像财神从天空洒金元宝到地上。
百花齐放,欣欣向荣。 红、粉红、草绿、橙及蓝色带等闪烁烟花,寓意洗涤疲惫心灵,身心康泰。“红暗绿纺”及“红暗银纺”的烟花,就好像大地初开,寓意着旧貌换新颜。

        不同时节缩放的烟花也代表不同的寓意:2008年奥运会美丽的烟花弥漫天空曾宪各种形状。它写出了时间,写出了气氛,写出了全世界的和谐和中国人的热情向上渴望和平的美好心情。

烟花绽放的那一刹那!

这一刻是就是人们所说的花火

花火虽然生命短暂,却发绽放出了灿烂的光芒,证明了自己的存在

从这一层面上看,花火代表了一种勇于牺牲,在烈火中永生的精神,在纪念烈士十分恰当

但是客观的说,作为一个存在于世间的事物,花火的瞬间并不能留下一些永远的东西,而且还会带去愿望与希望。就如昙花一现所说,仅仅能够暂时站在平凡之上,却会永恒的沉没在消逝之中其实,淡泊就可以明志,宁静终会致远。

手把手教你用C语言制作炫酷烟花代码!相关推荐

  1. 手把手教你使用R语言制作临床决策曲线

    DCA(Decision Curve Analysis)临床决策曲线是一种用于评价诊断模型诊断准确性的方法,在2006年由AndrewVickers博士创建,我们通常判断一个疾病喜欢使用ROC曲线的A ...

  2. 实战案例,手把手教你使用 Tableau 绘制超炫酷可视化图表

    有一种美叫数据的美,Tableau可以让你看到这种数据美,以及探索数据美的可能,如下图表均是由强大的tableau可视化而成的. 喜欢点赞.收藏 使用tableau的优势就在于不需要懂技术,更不需要写 ...

  3. 如何用c语言编写炫酷烟花程序,C语言实现放烟花的程序

    这是一个利用C语言编写放烟花的程序(同时也可以播放音乐),供大家参考,具体内容如下 代码如下 #pragma once #include #include //图形界面库头文件 #include // ...

  4. 纯js代码,制作炫酷烟花特效。快给你的朋友瞧瞧吧!

      首先我们来看看烟花最终实现的效果 是不是很有意思呢,接下来就来讲解实现烟花特效所需的步骤: 实现步骤: 首先我们将html与body填满整个屏幕 <style>html,body{pa ...

  5. js炫酷烟花代码,手动自动燃放都可以哦

    马上春节啦,咱们程序猿当然要用本土的方式庆贺一下啦,来跟我一起放个烟花吧~ 祝大家新的一年里像烟花一样生活五彩缤纷,绽放光彩! 话不多说,直接看效果✨✨✨ 自动燃放状态:点击下屏幕就会不断往随机位置发 ...

  6. HTML+CSS+JS制作炫酷【烟花特效】

    文章目录 制作炫酷烟花特效 一.普通烟花(分散形) HTML代码 CSS代码 JS代码 二.圆形烟花 HTML代码 CSS代码 JS代码 三.爱心形烟花 HTML代码 CSS代码 JS代码 四.源码获 ...

  7. 元旦到了,手把手教你用 Python 制作一个炫酷烟花秀

    大家好,我是小张, 今天是2021 的最后一天,到了这个时间点,部分小伙伴已经开始复盘这一年的得与失.比如今年增加了多少技能点,看了多少本书,写了多少篇文章或者年前的小目标实现进度大概多少等等:做一个 ...

  8. 手把手教你如何用Python制作一个电子相册?末附python教程

    这里简单介绍一下python制作电子相册的过程,主要用到tkinter和pillow这2个库,tkinter用于窗口显示照片,pillow用来处理照片,照片切换分为2种方式,一种是自动切换(每隔5秒) ...

  9. 手把手教你构建 C 语言编译器(8)- 表达式

    这是整个编译器的最后一部分,解析表达式.什么是表达式?表达式是将各种语言要素的一个组合,用来求值.例如:函数调用.变量赋值.运算符运算等等. 表达式的解析难点有二:一是运算符的优先级问题,二是如何将表 ...

最新文章

  1. 欧式聚类分割并可视化
  2. ROS系统——动态修改realsense相机参数方法
  3. 为什么有些人非技术出身,却能带好团队?
  4. python怎么使用预训练的模型_Keras使用ImageNet上预训练的模型方式
  5. [转帖]Mootools源码分析-02 -- Utils
  6. 用SQL语句批量生成一个表的INSERT语句
  7. 中国民企老板要牢记的四句话
  8. 【英语学习】【Level 08】U05 Better option L5 A picture is worth a thousand words
  9. QT每日一练day16:QMessageBox消息对话框
  10. C++ {}作用域 return
  11. 写在注册测绘师考完之后
  12. FMS视频在线采集系统
  13. 关于各种网站音频mp3的外链地址,真实的外链播放地址
  14. A problem occurred configuring project ‘:app‘.
  15. 学java好还是学挖机好_现在开挖掘机还能月入上万吗,为何年轻人还是热衷于学挖掘机?...
  16. Linux实战(20):Docker部署EKL入门环境记录文档
  17. 楼市步入慢行道 购房窗口期显现?
  18. 问题记录之——windows10系统蓝牙失灵
  19. Eclipse下用JFS和Tomcat防问SQLServer数据库的以下配置
  20. 全志T7 Display驱动分析

热门文章

  1. 一件程序员的灵异事件,胆小者勿进!
  2. centos7 设置主机名称
  3. oracle 启动错误1067,oracle监听器启动1067错误处理
  4. 数据建模及数据分析浅析
  5. seetaface2人脸识别
  6. WindowsAPI--CreateFile、ReadFile
  7. 程序员如何保住“金饭碗”
  8. one + two = 3 数组(转载)
  9. (附源码)基于SpringBoot框架的古风乐曲网站的设计与实现 毕业设计271611
  10. 解析java当中switch语句的作用和break、continue关键字的用法