赞
踩

烟花的来历:烟花爆竹相传是由唐朝一个叫李畋的人发明的,他利用火药、纸筒等材料制作爆竹,目的是产生巨大声响以驱鬼辟邪;烟花寓意:最初民间燃放焰火是为了迎神与驱逐鬼怪,后来是为了给节日的喜庆增添色彩。烟花又称花炮、烟火、焰火、炮仗,根据《中国烟花爆竹标准—安全与质量》对烟花爆竹的定义为:以烟火药为原料,用于产生声光色的娱乐用品。
烟花的来历:烟花爆竹相传是由唐朝一个叫李畋的人发明的,他利用火药、纸筒等材料制作爆竹,目的是产生巨大声响以驱鬼辟邪;烟花寓意:最初民间燃放焰火是为了迎神与驱逐鬼怪,后来是为了给节日的喜庆增添色彩。烟花又称花炮、烟火、焰火、炮仗,根据《中国烟花爆竹标准—安全与质量》对烟花爆竹的定义为:以烟火药为原料,用于产生声光色的娱乐用品。
烟花的品种名目繁多。按燃放效果分,主要有十三大类:喷花类、旋转类、旋转升空类、火箭类、吐珠类、小礼花类、烟雾类、造型玩具类、组合烟花类、线香类、摩擦炮类、礼花弹等;具体又可分为冷光烟花、礼花弹、盆花、罗马烛光、火箭、电光花、舞台烟花、冷焰火、瞬间烟花、火炬烟花、玩具烟花、鞭炮、舞台喷泉、架子烟花、日景烟花等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的常量。
然后定义了两个结构体:JET和FIRE。
- 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.wav
- PlaySound(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-199
- if (n < NUM && jet[n].isshoot == false && fire[n].show == false)
- {
- //重置烟花弹
- jet[n].x = rand() % (WND_WIDTH - 20);
- jet[n].y = rand() % 100 + 400; //450-549
- jet[n].hx = jet[n].x;
- jet[n].hy = rand() % 400; //0-399
- jet[n].height = jet[n].y - jet[n].hy;
- jet[n].isshoot = true;
- //n
- putimage(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 }; //dt
-
- 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;
- }
-
- 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,结束程序。
主要代码如下:
-
- 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.wav
- PlaySound(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,y
- int 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-199
- if (n < NUM && jet[n].isshoot == false && fire[n].show == false)
- {
- //重置烟花弹
- jet[n].x = rand() % (WND_WIDTH - 20);
- jet[n].y = rand() % 100 + 400; //450-549
- jet[n].hx = jet[n].x;
- jet[n].hy = rand() % 400; //0-399
- jet[n].height = jet[n].y - jet[n].hy;
- jet[n].isshoot = true;
- //n
- putimage(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 }; //dt
-
- 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;
- }
-
- 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年奥运会美丽的烟花弥漫天空曾宪各种形状。它写出了时间,写出了气氛,写出了全世界的和谐和中国人的热情向上渴望和平的美好心情。
烟花绽放的那一刹那!
这一刻是就是人们所说的花火
花火虽然生命短暂,却发绽放出了灿烂的光芒,证明了自己的存在
从这一层面上看,花火代表了一种勇于牺牲,在烈火中永生的精神,在纪念烈士十分恰当
但是客观的说,作为一个存在于世间的事物,花火的瞬间并不能留下一些永远的东西,而且还会带去愿望与希望。就如昙花一现所说,仅仅能够暂时站在平凡之上,却会永恒的沉没在消逝之中其实,淡泊就可以明志,宁静终会致远。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。