当前位置:   article > 正文

手把手教你用C语言制作炫酷烟花代码!_c语言炫酷代码

c语言炫酷代码

  下方有完整代码!

    

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

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

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

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

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

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

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

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

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

  1. constexpr auto WND_WIDTH = 1000;
  2. constexpr auto WND_HEIGHT = 600;
  3. constexpr auto PI = 3.141592653589793238;
  4. constexpr auto NUM = 14;

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

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

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

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

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

  1. void database1(int a);
  2. void database2(int a);
  3. void database3(int a);
  4. void database4(int a);
  5. void welcome1(int a);
  6. void welcome();
  7. void init(int i);
  8. void loadimages();
  9. void choice(DWORD& t1);
  10. void shoot();
  11. void Show(DWORD* pMem);
  12. void delay(int a);

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

然后是main函数:

  1. int main(int agrv, char* agrc[])
  2. {
  3. //res 1.wav
  4. PlaySound(L"sound.dll", NULL, SND_LOOP | SND_FILENAME | SND_ASYNC);
  5. //mp3播放
  6. //mciSendString(L"open 1.mp3 alias bkmusic", NULL, 0, NULL);
  7. //mciSendString(L"play bkmusic repeat", NULL, 0, NULL);
  8. welcome1(1);
  9. int i;
  10. int j;
  11. j = 0;
  12. for (i = 0; i < 36; i++)
  13. {
  14. database1(i);
  15. delay(10000);
  16. system("cls");
  17. }
  18. initgraph(WND_WIDTH, WND_HEIGHT); //init初始化 graph图形界面 窗口
  19. srand((unsigned int)time(NULL));
  20. DWORD t1 = timeGetTime();
  21. DWORD* pMem = GetImageBuffer();
  22. for (int i = 0; i < NUM; i++)
  23. {
  24. init(i);
  25. }
  26. loadimages();
  27. BeginBatchDraw();
  28. while (!_kbhit())
  29. {
  30. //...
  31. choice(t1);
  32. shoot();
  33. Show(pMem);
  34. EndBatchDraw();
  35. }
  36. return 0;
  37. }

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

先来一个函数:

  1. void database1(int a)
  2. {
  3. switch (a)
  4. {
  5. case 1:
  6. {
  7. printf("你");
  8. }
  9. break;
  10. case 2:
  11. {
  12. printf("好");
  13. }
  14. break;
  15. case 3:
  16. {
  17. printf("鸭");
  18. }
  19. break;
  20. case 4:
  21. {
  22. printf("!");
  23. }
  24. break;
  25. case 26:
  26. {
  27. printf("你好鸭1");
  28. }
  29. break;
  30. case 27:
  31. {
  32. printf("Happy");
  33. }
  34. break;
  35. case 28:
  36. {
  37. printf("Spring");
  38. }
  39. break;
  40. case 29:
  41. {
  42. printf("Festival");
  43. }
  44. break;
  45. case 30:
  46. {
  47. printf("你好鸭1\n");
  48. printf("Happy Spring Festival\n");
  49. }
  50. break;
  51. case 31:
  52. {
  53. database2(31);
  54. }
  55. break;
  56. case 32:
  57. {
  58. database2(32);
  59. }
  60. break;
  61. case 33:
  62. {
  63. database2(33);
  64. }
  65. break;
  66. case 34:
  67. {
  68. database2(34);
  69. }
  70. break;
  71. case 35:
  72. {
  73. database2(35);
  74. }
  75. break;
  76. }
  77. }

再来一个打印函数:

  1. void database2(int a)
  2. {
  3. switch (a)
  4. {
  5. case 31:
  6. {
  7. //printf("■■■■■■■■■■■■■■■■■■■■■■■■■■\n");
  8. printf(" ■■ \n");
  9. printf(" ■■ \n");
  10. printf(" ■■ \n");
  11. printf(" ■■■■■■■■■■■■■■■■■■■■■ \n");
  12. printf(" ■■■■■■■■■■■■■■■■■■■■■ \n");
  13. printf(" ■■ \n");
  14. printf(" ■■ \n");
  15. printf(" ■■■■■■■■■■■■■■■■■■■ \n");
  16. printf(" ■■■■■■■■■■■■■■■■■■■ \n");
  17. printf(" ■■ \n");
  18. printf(" ■■■ \n");
  19. printf(" ■■■■■■■■■■■■■■■■■■■■■■■ \n");
  20. printf(" ■■■■■■■■■■■■■■■■■■■■■■■ \n");
  21. printf(" ■■■ ■■■ \n");
  22. printf(" ■■■ ■■■ \n");
  23. printf(" ■■■■ ■■■■ \n");
  24. printf(" ■■■■■■■■■■■■■■■■■■■■ \n");
  25. printf("■■■■ ■■ ■■■■■■■ \n");
  26. printf("■■■ ■■ ■■ ■■■ \n");
  27. printf(" ■ ■■■■■■■■■■■■■■ \n");
  28. printf(" ■■■■■■■■■■■■■■ \n");
  29. printf(" ■■ ■■ \n");
  30. printf(" ■■ ■■ \n");
  31. printf(" ■■ ■■ \n");
  32. printf(" ■■■■■■■■■■■■■■ \n");
  33. printf(" ■■■■■■■■■■■■■■ \n");
  34. }
  35. break;
  36. case 32:
  37. {
  38. //printf("■■■■■■■■■■■■■■■■■■■■■■■■■\n");
  39. printf(" ■■ ■■ \n");
  40. printf(" ■■ ■■ \n");
  41. printf(" ■■ ■■ \n");
  42. printf("■■■■■■■■■■■■■■■■■■■■■■■■■\n");
  43. printf("■■■■■■■■■■■■■■■■■■■■■■■■■\n");
  44. printf(" ■■ ■■ \n");
  45. printf(" ■■ ■■ \n");
  46. printf(" ■■ ■■ \n");
  47. printf(" ■■ ■■ \n");
  48. printf(" \n");
  49. printf(" ■■■■■■■■■■■■■■■■■■■■■■ \n");
  50. printf(" ■■■■■■■■■■■■■■■■■■■■■■ \n");
  51. printf(" ■■ ■■ \n");
  52. printf(" ■■ ■■ \n");
  53. printf(" ■■ ■■ \n");
  54. printf(" ■■ ■■ \n");
  55. printf(" ■■ ■■ \n");
  56. printf(" ■■ ■■ \n");
  57. printf(" ■■ ■■ \n");
  58. printf(" ■■ ■■■■ \n");
  59. printf(" ■■ ■■■■ \n");
  60. printf(" ■■ ■■■ \n");
  61. printf(" ■■ \n");
  62. printf(" ■■ \n");
  63. printf(" ■■ \n");
  64. printf(" ■■ \n");
  65. }
  66. break;
  67. case 33:
  68. {
  69. //printf("■■■■■■■■■■■■■■■■■■■■■■■■■\n");
  70. printf(" ■■ ■■ \n");
  71. printf(" ■■ ■■ \n");
  72. printf(" ■■ ■■ \n");
  73. printf(" ■■ ■■ \n");
  74. printf(" ■■ ■■■■■■■■■■■ \n");
  75. printf(" ■■ ■■■■■■■■■■■■ \n");
  76. printf(" ■■ ■■ ■■ ■■ ■■ \n");
  77. printf(" ■■ ■■ ■■ ■■ ■■ \n");
  78. printf("■■ ■■ ■■ ■■ ■■ \n");
  79. printf("■■ ■■ ■■■ ■■ ■■ \n");
  80. printf("■■ ■■ ■■ ■■ \n");
  81. printf("■■ ■■ ■■ ■■ \n");
  82. printf("■■ ■■ ■■ ■■■ \n");
  83. printf(" ■■ ■■■■■■■■■■■■■■■■\n");
  84. printf(" ■■ ■■■■■■■■■ ■■■\n");
  85. printf(" ■■ ■■■ \n");
  86. printf(" ■■ ■■■■ \n");
  87. printf(" ■■ ■■ ■■ \n");
  88. printf(" ■■ ■■ ■■ \n");
  89. printf(" ■■ ■■ ■■ \n");
  90. printf(" ■■ ■■ ■■■ \n");
  91. printf(" ■■ ■■■ ■■■ \n");
  92. printf(" ■■ ■■■ ■■■■ \n");
  93. printf(" ■■ ■■■■ ■■■■\n");
  94. printf(" ■■ ■■■ ■■ \n");
  95. printf(" ■■ ■ \n");
  96. }
  97. break;
  98. case 34:
  99. {
  100. //不用 不用
  101. //printf("■■■■■■■■■■■■■■■■■■■■■■■■■\n");
  102. printf(" ■■ \n");
  103. printf(" ■■ ■■■■■■■■■■■■■■ \n");
  104. printf(" ■■■■■■■■■■■■■■■■■■■ \n");
  105. printf(" ■■■ \n");
  106. printf(" ■■ \n");
  107. printf(" ■■ ■■ \n");
  108. printf(" ■■ ■■ \n");
  109. printf(" ■■ ■■ \n");
  110. printf(" ■■ ■■ \n");
  111. printf(" ■■■ ■■ \n");
  112. printf(" ■■■ ■■ \n");
  113. printf(" ■■■■■■■■■■■■■■■■■■■■■ \n");
  114. printf(" ■■■■ ■■■ ■ \n");
  115. printf(" ■■ \n");
  116. printf(" ■■ \n");
  117. printf(" ■ ■■ \n");
  118. printf(" ■■■■ ■■ ■■■ \n");
  119. printf(" ■■■ ■■ ■■■■ \n");
  120. printf(" ■■■ ■■ ■■■■ \n");
  121. printf(" ■■■ ■■ ■■■■ \n");
  122. printf(" ■■■ ■■ ■■■■ \n");
  123. printf(" ■■■ ■■ \n");
  124. printf(" ■■■ ■■ \n");
  125. printf(" ■■■■■ \n");
  126. printf(" ■■■■ \n");
  127. printf(" ■■ \n");
  128. }
  129. break;
  130. case 35:
  131. {
  132. printf("happy spring festival!");
  133. }
  134. }
  135. }

这一块有点玄乎哈!

  1. void choice(DWORD& t1)
  2. {
  3. DWORD t2 = timeGetTime();
  4. if (t2 - t1 > 2) //2ms产生一个烟花弹
  5. {
  6. int n = rand() % 200; //0-199
  7. if (n < NUM && jet[n].isshoot == false && fire[n].show == false)
  8. {
  9. //重置烟花弹
  10. jet[n].x = rand() % (WND_WIDTH - 20);
  11. jet[n].y = rand() % 100 + 400; //450-549
  12. jet[n].hx = jet[n].x;
  13. jet[n].hy = rand() % 400; //0-399
  14. jet[n].height = jet[n].y - jet[n].hy;
  15. jet[n].isshoot = true;
  16. //n
  17. putimage(jet[n].x, jet[n].y, &jet[n].img[jet[n].n]);
  18. }
  19. t1 = t2;
  20. }
  21. }
  22. void shoot()
  23. {
  24. for (int i = 0; i < NUM; i++)
  25. {
  26. jet[i].t2 = timeGetTime();
  27. if (jet[i].t2 - jet[i].t1 > jet[i].dt && jet[i].isshoot == true)
  28. {
  29. putimage(jet[i].x, jet[i].y, &jet[i].img[jet[i].n]);
  30. if (jet[i].hy < jet[i].y)
  31. {
  32. jet[i].n++; //0-1 明暗交替
  33. jet[i].y -= 5;
  34. }
  35. putimage(jet[i].x, jet[i].y, &jet[i].img[jet[i].n]);
  36. if (jet[i].y <= jet[i].hy)
  37. {
  38. fire[i].y = jet[i].hy;
  39. fire[i].x = jet[i].hx;
  40. fire[i].show = true;
  41. jet[i].isshoot = false;
  42. }
  43. jet[i].t1 = jet[i].t2;
  44. }
  45. }
  46. }
  47. void Show(DWORD* pMem)
  48. {
  49. int drt[16] = { 5,5,5,5,5,6,25,25,25,25,25,55,55,55,55,55 }; //dt
  50. for (int i = 0; i < NUM; i++)
  51. {
  52. fire[i].t2 = timeGetTime();
  53. if (fire[i].t2 - fire[i].t1 > fire[i].dt && fire[i].show == true)
  54. {
  55. if (fire[i].r < fire[i].max_r)
  56. {
  57. fire[i].r++;
  58. fire[i].dt = drt[fire[i].r / 10];
  59. fire[i].draw = true;
  60. }
  61. if (fire[i].r >= fire[i].max_r - 1)
  62. {
  63. fire[i].draw = false;
  64. init(i);
  65. }
  66. fire[i].t1 = fire[i].t2;
  67. }
  68. if (fire[i].draw)
  69. {
  70. for (double a = 0; a <= 6.28; a += 0.01)
  71. {
  72. int x1 = (int)(fire[i].cen_x + fire[i].r * cos(a));
  73. int y1 = (int)(fire[i].cen_y + fire[i].r * sin(a));
  74. if (x1 > 0 && x1 < fire[i].width && y1>0 && y1 < fire[i].height)
  75. {
  76. int b = fire[i].xy[x1][y1] & 0xff;
  77. int g = (fire[i].xy[x1][y1] >> 8) & 0xff;
  78. int r = (fire[i].xy[x1][y1] >> 16);
  79. int xx = (int)(fire[i].x + fire[i].r * cos(a));
  80. int yy = (int)(fire[i].y + fire[i].r * sin(a));
  81. if (r > 0x20 && g > 0x20 && b > 0x20 && xx > 0 && xx < 1000 && yy < 600 && yy>0)
  82. {
  83. pMem[yy * 1000 + xx] = BGR(fire[i].xy[x1][y1]);
  84. }
  85. }
  86. }
  87. fire[i].draw = true;
  88. }
  89. }
  90. }
  91. void delay(int a)
  92. {
  93. while (a)
  94. {
  95. a--;
  96. }
  97. }

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

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

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

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

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

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

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

公众号:每日推荐系列,回复【烟花】即可免费获取完整源码

主要代码如下:

  1. struct JET //烟花弹
  2. {
  3. int x, y; //发射点坐标
  4. int hx, hy; //最高点坐标 爆炸坐标
  5. int height; //高度 最高点y 发射点y的差值
  6. bool isshoot; //是否发射状态
  7. DWORD t1, t2, dt; //保存时间 时间可以用来描述发射速度
  8. IMAGE img[2]; //保存烟花一明一暗的图片
  9. byte n : 1; //保存烟花弹的明暗状态 位段
  10. //字节为单位 int 4 char 1 n一个位 0-1
  11. }jet[NUM]; //结构体数组13 img这个数组
  12. struct FIRE
  13. {
  14. int r;
  15. int max_r;
  16. int x, y;
  17. int cen_x, cen_y;
  18. int width, height;
  19. int xy[240][240];
  20. bool show;
  21. bool draw;
  22. DWORD t1, t2, dt;
  23. }fire[NUM];
  24. void database1(int a);
  25. void database2(int a);
  26. void database3(int a);
  27. void database4(int a);
  28. void welcome1(int a);
  29. void welcome();
  30. void init(int i);
  31. void loadimages();
  32. void choice(DWORD& t1);
  33. void shoot();
  34. void Show(DWORD* pMem);
  35. void delay(int a);
  36. int main(int agrv, char* agrc[])
  37. {
  38. //res 1.wav
  39. PlaySound(L"sound.dll", NULL, SND_LOOP | SND_FILENAME | SND_ASYNC);
  40. //mp3播放
  41. //mciSendString(L"open 1.mp3 alias bkmusic", NULL, 0, NULL);
  42. //mciSendString(L"play bkmusic repeat", NULL, 0, NULL);
  43. welcome1(1);
  44. int i;
  45. int j;
  46. j = 0;
  47. for (i = 0; i < 36; i++)
  48. {
  49. database1(i);
  50. delay(10000);
  51. system("cls");
  52. }
  53. initgraph(WND_WIDTH, WND_HEIGHT); //init初始化 graph图形界面 窗口
  54. srand((unsigned int)time(NULL));
  55. DWORD t1 = timeGetTime();
  56. DWORD* pMem = GetImageBuffer();
  57. //第一个界面
  58. welcome();
  59. //初始化
  60. for (int i = 0; i < NUM; i++)
  61. {
  62. init(i);
  63. }
  64. loadimages();
  65. BeginBatchDraw();
  66. while (!_kbhit())
  67. {
  68. //Sleep(10);
  69. for (int i = 0; i < 1000; i++)
  70. {
  71. for (int j = 0; j < 3; j++)
  72. {
  73. int px1 = rand() % 1000;
  74. int py1 = rand() % 600;
  75. if (py1 < 599)
  76. {
  77. pMem[py1 * 1000 + px1] = pMem[py1 * 1000 + px1 + 1] = BLACK;
  78. }
  79. }
  80. }
  81. choice(t1);
  82. shoot();
  83. Show(pMem);
  84. EndBatchDraw();
  85. }
  86. return 0;
  87. }
  88. void database1(int a)
  89. {
  90. switch (a)
  91. {
  92. case 1:
  93. {
  94. printf("你");
  95. }
  96. break;
  97. case 2:
  98. {
  99. printf("好");
  100. }
  101. break;
  102. case 3:
  103. {
  104. printf("鸭");
  105. }
  106. break;
  107. case 4:
  108. {
  109. printf("!");
  110. }
  111. break;
  112. case 26:
  113. {
  114. printf("你好鸭1");
  115. }
  116. break;
  117. case 27:
  118. {
  119. printf("Happy");
  120. }
  121. break;
  122. case 28:
  123. {
  124. printf("Spring");
  125. }
  126. break;
  127. case 29:
  128. {
  129. printf("Festival");
  130. }
  131. break;
  132. case 30:
  133. {
  134. printf("你好鸭1\n");
  135. printf("Happy Spring Festival\n");
  136. }
  137. break;
  138. case 31:
  139. {
  140. database2(31);
  141. }
  142. break;
  143. case 32:
  144. {
  145. database2(32);
  146. }
  147. break;
  148. case 33:
  149. {
  150. database2(33);
  151. }
  152. break;
  153. case 34:
  154. {
  155. database2(34);
  156. }
  157. break;
  158. case 35:
  159. {
  160. database2(35);
  161. }
  162. break;
  163. }
  164. }
  165. void database2(int a)
  166. {
  167. switch (a)
  168. {
  169. case 31:
  170. {
  171. //printf("■■■■■■■■■■■■■■■■■■■■■■■■■■\n");
  172. printf(" ■■ \n");
  173. printf(" ■■ \n");
  174. printf(" ■■ \n");
  175. printf(" ■■■■■■■■■■■■■■■■■■■■■ \n");
  176. printf(" ■■■■■■■■■■■■■■■■■■■■■ \n");
  177. printf(" ■■ \n");
  178. printf(" ■■ \n");
  179. printf(" ■■■■■■■■■■■■■■■■■■■ \n");
  180. printf(" ■■■■■■■■■■■■■■■■■■■ \n");
  181. printf(" ■■ \n");
  182. printf(" ■■■ \n");
  183. printf(" ■■■■■■■■■■■■■■■■■■■■■■■ \n");
  184. printf(" ■■■■■■■■■■■■■■■■■■■■■■■ \n");
  185. printf(" ■■■ ■■■ \n");
  186. printf(" ■■■ ■■■ \n");
  187. printf(" ■■■■ ■■■■ \n");
  188. printf(" ■■■■■■■■■■■■■■■■■■■■ \n");
  189. printf("■■■■ ■■ ■■■■■■■ \n");
  190. printf("■■■ ■■ ■■ ■■■ \n");
  191. printf(" ■ ■■■■■■■■■■■■■■ \n");
  192. printf(" ■■■■■■■■■■■■■■ \n");
  193. printf(" ■■ ■■ \n");
  194. printf(" ■■ ■■ \n");
  195. printf(" ■■ ■■ \n");
  196. printf(" ■■■■■■■■■■■■■■ \n");
  197. printf(" ■■■■■■■■■■■■■■ \n");
  198. }
  199. break;
  200. case 32:
  201. {
  202. //printf("■■■■■■■■■■■■■■■■■■■■■■■■■\n");
  203. printf(" ■■ ■■ \n");
  204. printf(" ■■ ■■ \n");
  205. printf(" ■■ ■■ \n");
  206. printf("■■■■■■■■■■■■■■■■■■■■■■■■■\n");
  207. printf("■■■■■■■■■■■■■■■■■■■■■■■■■\n");
  208. printf(" ■■ ■■ \n");
  209. printf(" ■■ ■■ \n");
  210. printf(" ■■ ■■ \n");
  211. printf(" ■■ ■■ \n");
  212. printf(" \n");
  213. printf(" ■■■■■■■■■■■■■■■■■■■■■■ \n");
  214. printf(" ■■■■■■■■■■■■■■■■■■■■■■ \n");
  215. printf(" ■■ ■■ \n");
  216. printf(" ■■ ■■ \n");
  217. printf(" ■■ ■■ \n");
  218. printf(" ■■ ■■ \n");
  219. printf(" ■■ ■■ \n");
  220. printf(" ■■ ■■ \n");
  221. printf(" ■■ ■■ \n");
  222. printf(" ■■ ■■■■ \n");
  223. printf(" ■■ ■■■■ \n");
  224. printf(" ■■ ■■■ \n");
  225. printf(" ■■ \n");
  226. printf(" ■■ \n");
  227. printf(" ■■ \n");
  228. printf(" ■■ \n");
  229. }
  230. break;
  231. case 33:
  232. {
  233. //printf("■■■■■■■■■■■■■■■■■■■■■■■■■\n");
  234. printf(" ■■ ■■ \n");
  235. printf(" ■■ ■■ \n");
  236. printf(" ■■ ■■ \n");
  237. printf(" ■■ ■■ \n");
  238. printf(" ■■ ■■■■■■■■■■■ \n");
  239. printf(" ■■ ■■■■■■■■■■■■ \n");
  240. printf(" ■■ ■■ ■■ ■■ ■■ \n");
  241. printf(" ■■ ■■ ■■ ■■ ■■ \n");
  242. printf("■■ ■■ ■■ ■■ ■■ \n");
  243. printf("■■ ■■ ■■■ ■■ ■■ \n");
  244. printf("■■ ■■ ■■ ■■ \n");
  245. printf("■■ ■■ ■■ ■■ \n");
  246. printf("■■ ■■ ■■ ■■■ \n");
  247. printf(" ■■ ■■■■■■■■■■■■■■■■\n");
  248. printf(" ■■ ■■■■■■■■■ ■■■\n");
  249. printf(" ■■ ■■■ \n");
  250. printf(" ■■ ■■■■ \n");
  251. printf(" ■■ ■■ ■■ \n");
  252. printf(" ■■ ■■ ■■ \n");
  253. printf(" ■■ ■■ ■■ \n");
  254. printf(" ■■ ■■ ■■■ \n");
  255. printf(" ■■ ■■■ ■■■ \n");
  256. printf(" ■■ ■■■ ■■■■ \n");
  257. printf(" ■■ ■■■■ ■■■■\n");
  258. printf(" ■■ ■■■ ■■ \n");
  259. printf(" ■■ ■ \n");
  260. }
  261. break;
  262. case 34:
  263. {
  264. //不用 不用
  265. //printf("■■■■■■■■■■■■■■■■■■■■■■■■■\n");
  266. printf(" ■■ \n");
  267. printf(" ■■ ■■■■■■■■■■■■■■ \n");
  268. printf(" ■■■■■■■■■■■■■■■■■■■ \n");
  269. printf(" ■■■ \n");
  270. printf(" ■■ \n");
  271. printf(" ■■ ■■ \n");
  272. printf(" ■■ ■■ \n");
  273. printf(" ■■ ■■ \n");
  274. printf(" ■■ ■■ \n");
  275. printf(" ■■■ ■■ \n");
  276. printf(" ■■■ ■■ \n");
  277. printf(" ■■■■■■■■■■■■■■■■■■■■■ \n");
  278. printf(" ■■■■ ■■■ ■ \n");
  279. printf(" ■■ \n");
  280. printf(" ■■ \n");
  281. printf(" ■ ■■ \n");
  282. printf(" ■■■■ ■■ ■■■ \n");
  283. printf(" ■■■ ■■ ■■■■ \n");
  284. printf(" ■■■ ■■ ■■■■ \n");
  285. printf(" ■■■ ■■ ■■■■ \n");
  286. printf(" ■■■ ■■ ■■■■ \n");
  287. printf(" ■■■ ■■ \n");
  288. printf(" ■■■ ■■ \n");
  289. printf(" ■■■■■ \n");
  290. printf(" ■■■■ \n");
  291. printf(" ■■ \n");
  292. }
  293. break;
  294. case 35:
  295. {
  296. printf("happy spring festival!");
  297. }
  298. }
  299. }
  300. void welcome1(int a)
  301. {
  302. int i;
  303. int j;
  304. for (i = 0; i < 100; i++)
  305. {
  306. for (j = 0; j < 20; j++)
  307. {
  308. printf("\n");
  309. }
  310. printf(" this program is powered by lry\n");
  311. printf(" all rights reserved 2020~2021\n");
  312. printf(" begin to start this project\n");
  313. printf(" rate of progress:%d%c\n", i, '%');
  314. system("cls");
  315. }
  316. }
  317. void welcome()
  318. {
  319. settextcolor(YELLOW);
  320. for (int i = 0; i < 50; i++)
  321. {
  322. //圆心(500,300) 半径150 60个均匀点的x,y
  323. int x = 500 + int(150 * sin(PI * 2 * i / 60));
  324. int y = 300 + int(150 * cos(PI * 2 * i / 60));
  325. cleardevice();
  326. settextstyle(i, 0, L"微软雅黑");
  327. outtextxy(x - 100, y - 150, L"Eric,会点编程"); //在指定的位置去输出字符
  328. outtextxy(x, y - 100, L"Eric,会点编程");
  329. Sleep(25);
  330. }
  331. //_getch(); //接收字符 不回显 直接接收
  332. Sleep(2000);
  333. cleardevice();
  334. settextstyle(25, 0, L"宋体");
  335. outtextxy(400, 150, L"1,");
  336. outtextxy(400, 200, L"2");
  337. outtextxy(400, 250, L"3,");
  338. outtextxy(400, 300, L"4,");
  339. outtextxy(400, 350, L"5");
  340. outtextxy(560, 400, L"---6");
  341. Sleep(3000);
  342. //_getch();
  343. }
  344. void init(int i)
  345. {
  346. int r[14] = { 120,120,155,123,130,147,138,138,130,135,140,132,155,160 };
  347. int x[14] = { 120,120,110,117,110,93,102,102,110,105,100,108,110,132 };
  348. int y[14] = { 120,120,85,118,120,105,103,110,110,120,1201,04,85,145 };
  349. fire[i].x = 0;
  350. fire[i].y = 0;
  351. fire[i].width = 240;
  352. fire[i].height = 240;
  353. fire[i].max_r = r[i];
  354. fire[i].cen_x = x[i];
  355. fire[i].cen_y = y[i];
  356. fire[i].show = false;
  357. fire[i].dt = 5;
  358. fire[i].t1 = timeGetTime();
  359. fire[i].r = 0;
  360. //初始化 烟花弹
  361. jet[i].x = 0;
  362. jet[i].y = 0;
  363. jet[i].hx = 0;
  364. jet[i].hy = 0;
  365. jet[i].height = 0;
  366. jet[i].t1 = timeGetTime(); //获取系统时间
  367. jet[i].dt = rand() % 10; //0-9的随机时间
  368. jet[i].n = 0;
  369. jet[i].isshoot = false;
  370. }
  371. void loadimages()
  372. {
  373. IMAGE fm, gm;
  374. loadimage(&fm, L"flower.dll", 3120, 240);
  375. for (int i = 0; i < NUM; i++)
  376. {
  377. SetWorkingImage(&fm);
  378. getimage(&gm, i * 240, 0, 240, 240);
  379. SetWorkingImage(&gm);
  380. for (int a = 0; a < 240; a++)
  381. {
  382. for (int b = 0; b < 240; b++)
  383. {
  384. fire[i].xy[a][b] = getpixel(a, b);
  385. }
  386. }
  387. }
  388. IMAGE jetimg;
  389. loadimage(&jetimg, L"shoot.dll", 200, 50);
  390. //set设置 working正在工作的 image图片
  391. SetWorkingImage(&jetimg);
  392. for (int i = 0; i < NUM; i++)
  393. {
  394. int n = rand() % 5; //0-4的随机数
  395. getimage(&jet[i].img[0], n * 20, 0, 20, 50);
  396. getimage(&jet[i].img[1], (n + 5) * 20, 0, 20, 50);
  397. }
  398. SetWorkingImage(NULL);
  399. }
  400. void choice(DWORD& t1)
  401. {
  402. DWORD t2 = timeGetTime();
  403. if (t2 - t1 > 2) //2ms产生一个烟花弹
  404. {
  405. int n = rand() % 200; //0-199
  406. if (n < NUM && jet[n].isshoot == false && fire[n].show == false)
  407. {
  408. //重置烟花弹
  409. jet[n].x = rand() % (WND_WIDTH - 20);
  410. jet[n].y = rand() % 100 + 400; //450-549
  411. jet[n].hx = jet[n].x;
  412. jet[n].hy = rand() % 400; //0-399
  413. jet[n].height = jet[n].y - jet[n].hy;
  414. jet[n].isshoot = true;
  415. //n
  416. putimage(jet[n].x, jet[n].y, &jet[n].img[jet[n].n]);
  417. }
  418. t1 = t2;
  419. }
  420. }
  421. void shoot()
  422. {
  423. for (int i = 0; i < NUM; i++)
  424. {
  425. jet[i].t2 = timeGetTime();
  426. if (jet[i].t2 - jet[i].t1 > jet[i].dt && jet[i].isshoot == true)
  427. {
  428. putimage(jet[i].x, jet[i].y, &jet[i].img[jet[i].n]);
  429. if (jet[i].hy < jet[i].y)
  430. {
  431. jet[i].n++; //0-1 明暗交替
  432. jet[i].y -= 5;
  433. }
  434. putimage(jet[i].x, jet[i].y, &jet[i].img[jet[i].n]);
  435. if (jet[i].y <= jet[i].hy)
  436. {
  437. fire[i].y = jet[i].hy;
  438. fire[i].x = jet[i].hx;
  439. fire[i].show = true;
  440. jet[i].isshoot = false;
  441. }
  442. jet[i].t1 = jet[i].t2;
  443. }
  444. }
  445. }
  446. void Show(DWORD* pMem)
  447. {
  448. int drt[16] = { 5,5,5,5,5,6,25,25,25,25,25,55,55,55,55,55 }; //dt
  449. for (int i = 0; i < NUM; i++)
  450. {
  451. fire[i].t2 = timeGetTime();
  452. if (fire[i].t2 - fire[i].t1 > fire[i].dt && fire[i].show == true)
  453. {
  454. if (fire[i].r < fire[i].max_r)
  455. {
  456. fire[i].r++;
  457. fire[i].dt = drt[fire[i].r / 10];
  458. fire[i].draw = true;
  459. }
  460. if (fire[i].r >= fire[i].max_r - 1)
  461. {
  462. fire[i].draw = false;
  463. init(i);
  464. }
  465. fire[i].t1 = fire[i].t2;
  466. }
  467. if (fire[i].draw)
  468. {
  469. for (double a = 0; a <= 6.28; a += 0.01)
  470. {
  471. int x1 = (int)(fire[i].cen_x + fire[i].r * cos(a));
  472. int y1 = (int)(fire[i].cen_y + fire[i].r * sin(a));
  473. if (x1 > 0 && x1 < fire[i].width && y1>0 && y1 < fire[i].height)
  474. {
  475. int b = fire[i].xy[x1][y1] & 0xff;
  476. int g = (fire[i].xy[x1][y1] >> 8) & 0xff;
  477. int r = (fire[i].xy[x1][y1] >> 16);
  478. int xx = (int)(fire[i].x + fire[i].r * cos(a));
  479. int yy = (int)(fire[i].y + fire[i].r * sin(a));
  480. if (r > 0x20 && g > 0x20 && b > 0x20 && xx > 0 && xx < 1000 && yy < 600 && yy>0)
  481. {
  482. pMem[yy * 1000 + xx] = BGR(fire[i].xy[x1][y1]);
  483. }
  484. }
  485. }
  486. fire[i].draw = true;
  487. }
  488. }
  489. }
  490. void delay(int a)
  491. {
  492. while (a)
  493. {
  494. a--;
  495. }
  496. }

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

 烟火划过了夜空。

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

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

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

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

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

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

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

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

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

烟花绽放的那一刹那!

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

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

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

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

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop】
推荐阅读
相关标签
  

闽ICP备14008679号