利用C语言编写放烟花的程序(春节专用)

#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 5:{printf("H");}break;case 6:{printf("a");}break;case 7:{printf("p");}break;case 8:{printf("p");}break;case 9:{printf("y");}break;case 10:{printf(" ");}break;case 11:{printf("S");}break;case 12:{printf("p");}break;case 13:{printf("r");}break;case 14:{printf("i");}break;case 15:{printf("n");}break;case 16:{printf("g");}break;case 17:{printf(" ");}break;case 18:{printf("F");}break;case 19:{printf("e");}break;case 20:{printf("s");}break;case 21:{printf("t");}break;case 22:{printf("i");}break;case 23:{printf("v");}break;case 24:{printf("a");}break;case 25:{printf("l");}break;case 26:{printf("春节快乐");}break;case 27:{printf("Happy");}break;case 28:{printf("Spring");}break;case 29:{printf("Festival");}break;case 30:{printf("春节快乐\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"测试使用1234567890");     //在指定的位置去输出字符outtextxy(x, y - 100, L"测试1234567890");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--;}
}

还有没有更简单的方法?

利用C语言编写放烟花的程序(春节专用)相关推荐

  1. 利用C语言编写放烟花的程序(同时也可以播放音乐)

    这是一个利用C语言编写放烟花的程序(同时也可以播放音乐) 代码如下 #pragma once #include<stdio.h> #include<graphics.h> // ...

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

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

  3. c语言烟花百度云,C语言实现放烟花的程序

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

  4. 用c语言编程最简单的烟花代码,C语言实现放烟花的程序

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

  5. 可以放烟花的c语言程序,C语言实现放烟花的程序

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

  6. c语言动态烟花小程序代码,如何用c语言编写动态烟花

    用c语言编写动态烟花的方法:首先绘制菜单界面显示文字:然后设置烟花有上升阶段和爆炸阶段,定义烟花和烟花弹结构体:最后初始化数据,加载资源贴图,随机发射数目随机. 用c语言编写动态烟花的方法: 效果展示 ...

  7. c语言烟花程序视频,如何用c语言编写动态烟花

    用c语言编写动态烟花的方法:首先绘制菜单界面显示文字:然后设置烟花有上升阶段和爆炸阶段,定义烟花和烟花弹结构体:最后初始化数据,加载资源贴图,随机发射数目随机. 用c语言编写动态烟花的方法: 效果展示 ...

  8. java语言编写计算器_第二次作业利用java语言编写计算器进行四则运算

    随着第一次作业的完成,助教 牛老师又布置了第二次作业:用java语言编写一个程序然后进行四则运算用户用键盘输入一个字符来结束程序显示统计结果.一开始看到这个题目我也着实吓了一跳 因为不知道如何下手而且 ...

  9. c语言编写51单片机中断程序,执行过程是怎样的?

    Q:c语言编写51单片机中断程序,执行过程是怎样的? 例如程序: #include<reg52.h>   void main(void)   {    EA=1;      //开放总中断 ...

最新文章

  1. python调用 matlab库_python调用matlab的搜索结果-阿里云开发者社区
  2. 过去式加ed的发音_小学英语动词过去式归类总结
  3. 如何用组策略来找到丢失的文件
  4. 训练大型神经网络方法总结
  5. Android实现分享代码,Android 分享功能的实现代码
  6. 腾讯Q2财报看点:游戏营收同比止跌 B端业务成第二大营收来源
  7. 【Flink】Flink 周期性 watermark 的 传播 AssignerWithPeriodicWatermarks
  8. 【Zepto笔记】Zepto.js
  9. 正点原子STM32F4探索者开发板HAL库TFT LCD屏幕例程移植到STM32CubeMX+CLion
  10. 高薪设计师必修课 AE移动UI动效设计从入门到实战
  11. Redis:列表LPUSH、LPUSHX、RPUSH、RPUSHX、LPOP、RPOP命令介绍
  12. Cisco 3850 Mgmt VRF Configuration
  13. 树莓派蓝牙ble gattlib c语言,树莓派构建智能家居控制系统 篇三:花花草草智能监测仪接入树莓派Domoticz...
  14. 嵌入式图形解决方案升级!RT-Thread Smart成功支持ARM Mali GPU
  15. js 获取当前年月日
  16. AFNetworking缓存
  17. java实现踢下线用户_浅谈踢人下线的设计思路!(附代码实现方案)
  18. 力扣算法学习(十二)
  19. ssmtp使用阿里企业邮箱发送邮件
  20. java基础第二十五天 数据库

热门文章

  1. Silverlight MMORPG网页游戏开发课程[一期] 序言
  2. 小程序清空textarea_回收站清空了怎么恢复?
  3. freeze用法初探
  4. Jetson TX1 设置SSD硬盘启动,SWAP(20221115亲测)
  5. modbus总线协议(三)modbus tcp
  6. 一些比较有用的小工具网站和资源网站
  7. ElasticSearch 基于 Term 的查询
  8. vf计算机二级培训,计算机二级VF考试培训班PPT第4章.pptx
  9. C# 中MethodInvoker委托的使用
  10. 计算机网络的课程ppt,ppt课件-计算机网络课程.ppt