废话不多说,直接上码

代码,歌曲,烟花图片都在压缩包里
链接: https://pan.baidu.com/s/1_459s0fFCAX1DcQa_BnHMQ?pwd=qw12 
提取码: qw12

要看效果的也可以看我抖音:

1210246294

#include<stdio.h>
#include<easyx.h>
#include<time.h>
#include<stdlib.h>
#include <Windows.h>
#include<math.h>
#include <conio.h>
#pragma comment(lib,"winmm.lib")
#include<mmsystem.h>
IMAGE img;
IMAGE img1;
IMAGE img2;
IMAGE img3;
#define num 10
#define PI 3.14
struct Fire  //创建烟花弹结构体类型
{int x, y;//初始坐标int max_x, max_y;//烟花最大高度IMAGE Img[2];//保存图片bool boom;//是否要爆开
};
struct Fire fire[num];struct Show
{int x, y;//绽放的位置int cx, cy;//烟花中心点坐标int r;//当前的半径int max_r;//最大半径int pixel[200][200];//图片像素数组bool isshow;   // 是否绽放bool isdraw;     // 开始输出像素点DWORD t1, t2, dt;int width, height;
};
struct Show show[num];void initshow(int i)//初始化烟花
{show[i].cx = 100;show[i].cy = 100;show[i].r = 0;show[i].max_r = 100;show[i].width = 200;show[i].height = 200;show[i].isshow = false;show[i].dt = 5;show[i].t1 = timeGetTime();//时间获取速度
}void initfire(int i)//初始化烟花弹
{fire[i].x = rand() % 700 + 100;//烟花弹坐标初始化x=100-800;y=100-400;fire[i].y = 600;fire[i].max_x = fire[i].x;fire[i].max_y = rand() % 300 + 100;fire[i].boom = false;loadimage(&fire[i].Img[0], "烟花弹.png", 20, 60);
}void load()//加载烟花图片
{for (int k = 0; k < num; k++){   int a = rand() % 3 + 1;loadimage(&img1, "烟花1.png", 200, 200);//三种不同的烟花loadimage(&img2, "烟花2.png", 200, 200);loadimage(&img3, "烟花3.png", 200, 200);if(a==1)SetWorkingImage(&img1);elseif(a==2)SetWorkingImage(&img2);elseSetWorkingImage(&img3);for (int i = 0; i < 200; i++){for (int j = 0; j < 200; j++){show[k].pixel[i][j] = getpixel(i, j);//把图片像素点放到数组中}}}SetWorkingImage(NULL);
}void Draw(int i, DWORD* pMem)//绘制一圈像素点
{if (show[i].isdraw){for (double a = 0; a <= 2*PI; a += 0.01)   //一圈628个像素点{//(x1,y1)是相对于烟花小图片的 像素 坐标点int x1 = (int)(show[i].cx + show[i].r * cos(a));int y1 = (int)(show[i].cy + show[i].r * sin(a));if (x1 > 0 && x1 < show[i].width && y1>0 && y1 < show[i].height){int b = show[i].pixel[x1][y1] & 0xff;   //blueint g = (show[i].pixel[x1][y1] >> 8) & 0xff;   //greenint r = show[i].pixel[x1][y1] >> 16;   //red//(xx,yy)是相对于窗口的 像素 坐标点int xx = (int)(show[i].x + show[i].r * cos(a));int yy = (int)(show[i].y + show[i].r * sin(a));if (r > 0x20 && g > 0x20 && b > 0x20 && xx < 1000 && xx>0 && yy > 0 && yy < 600){//把(x1,y1)坐标上的像素点 赋值 给(xx,yy)坐标点pMem[yy * 1000 + xx] = BGR(show[i].pixel[x1][y1]);}}}show[i].isdraw = false;}
}void fire_boom(DWORD* pMem)//烟花绽放
{int  drt[16] = { 5, 5, 5, 5, 15, 15, 25, 25, 35, 35, 55, 55, 65, 65, 75, 75 };for (int i = 0; i < num; i++){show[i].t2 = timeGetTime();if (show[i].t2 - show[i].t1 > show[i].dt && show[i].isshow == true){if (show[i].r < show[i].max_r){show[i].r++;show[i].dt = drt[show[i].r / 10];  //每十个烟花像素点改变一下烟花绽放的速度show[i].isdraw = true;}if (show[i].r >= show[i].max_r - 1){show[i].isdraw = false;initshow(i);initfire(i);}//更新时间show[i].t1 = show[i].t2;//可以绽放的状态Draw(i,pMem);}}
}void fire_up()//烟花弹上升
{for (int i = 0; i < num; i++){putimage(fire[i].x, fire[i].y, &fire[i].Img[0], SRCINVERT);//消除残影if (fire[i].y > fire[i].max_y){fire[i].y -= 10;//向上移动}else {  //已到达最高点,准备绽放show[i].x = fire[i].x+10;show[i].y = fire[i].y;fire[i].boom = true;show[i].isshow = true;}putimage(fire[i].x, fire[i].y, &fire[i].Img[0], SRCINVERT);}
}void word()//文字提醒-“请按任意键...”
{settextcolor(RED);settextstyle(25, 0, "宋体");outtextxy(400, 550, "请");Sleep(500);outtextxy(425, 550, "按");Sleep(500);outtextxy(450, 550, "任");Sleep(500);outtextxy(475, 550, "意");Sleep(500);outtextxy(500, 550, "键");Sleep(500);outtextxy(525, 550, ".");Sleep(500);outtextxy(550, 550, ".");Sleep(500);outtextxy(575, 550, ".");
}int main()
{int i = 0;srand((unsigned int)time(NULL));initgraph(1000, 600);//初始化图形界面loadimage(&img, "2023.png", 1000, 600);putimage(0,0,&img,SRCINVERT);//背景图mciSendString("open 打上花火.mp3",0,0,0);//播放—“打上花火”mciSendString("play 打上花火.mp3", 0, 0, 0);Sleep(1000);word();//文字提醒-“请按任意键...”_getch();//输入任意键继续DWORD* pMem = GetImageBuffer();for (int i = 0; i < num; i++)//初始化烟花弹和烟花{initfire(i);initshow(i);}load();//加载烟花图片while (1){for (int i = 0; i < 3000; i++){int px1 = rand() % 1000; // 0..1199int py1 = rand() % 600;  // 0.799pMem[py1 * 1000 + px1] = BLACK;pMem[py1 * 1000 + px1 + 1] = BLACK;  // 对显存赋值擦出像素点       }fire_up();//发射烟花弹fire_boom(pMem);//烟花绽放Sleep(50);}return 0;
}

   运行效果如下:

C语言烟花代码—兔年顶呱呱相关推荐

  1. 抖音爆火李峋同款爱心代码,简单附带教程,还有烟花代码,手残党也能学会!!

    最近看到抖音爆火的一些HTML代码,有人找"极客G"更新,今天用了几个小时给大家整理出来了下面几个代码,最简单的就是第一个爱心代码,第二个烟花代码可自定义文本,具体看下面. 代码是 ...

  2. 烟花代码(包教包会)

    新的一年就要来了,想放放烟花?但专家说放烟花会污染环境,这不,网上有安全无污染的烟花,这是用C写的代码烟花,有声音有配乐,还很好看 想要代码的去百度网盘自取 链接:https://pan.baidu. ...

  3. 2023年新年烟花代码(背景音乐完整版)

    文章目录 前言 烟花效果展示 使用教程 查看源码 HTML代码 CSS代码 JavaScript 新年祝福 前言 大家过年好!新春佳节,在这个充满喜悦的日子里,愿新年的钟声带给你一份希望和期待,我相信 ...

  4. R语言统计代码运行耗时实战:计算代码运行时间、使用proc.time函数计算代码运行时间

    R语言统计代码运行耗时实战:计算代码运行时间.使用proc.time函数计算代码运行时间 目录

  5. c语言分手代码大全,C语言代码大全

    从今天开始,我将C语言的代码实例从发表在博客上.供技术交流.比较基础,遵循循序渐进的原则,由简单到复杂,为以后的程序员生涯打好基础. 1.编写一个C程序输出以下信息. **************** ...

  6. aes算法的C语言实现代码,AES加密算法c语言实现代码

    AES加密算法c语言实现代码 #include "stdio.h" #include "memory.h" #include "time.h" ...

  7. WPF第一章(XAML前台标记语言(Chapter02代码讲解))

    XAML前台标记语言(Chapter2代码讲解)     很不好意思,工作有点忙,博客停了两天.相对于一门语言的学习,理论知识和实践必不可少,大多数时间我们要用,对于代码也是,一边不行可以看两遍,实在 ...

  8. C语言初学者代码中的常见错误与瑕疵(9)

    题目 字母的个数 现在给你一个由小写字母组成字符串,要你找出字符串中出现次数最多的字母,如果出现次数最多字母有多个那么输出最小的那个. 输入:第一行输入一个正整数T(0<T<25) 随后T ...

  9. 嵌入式编程C语言提高代码效率的14种方法

    嵌入式编程C语言提高代码效率的14种方法 1.在可能的情况下使用typedef替代define.当然有时候你无法避免define,但是typedef更好. typedef int* INT_PTR; ...

最新文章

  1. 独家 | Python时间序列分析:一项基于案例的全面指南
  2. python好找工作吗2017-2017,再来聊一聊Python,未来发展怎样?
  3. Java编程入门100例之二十二(字符串查找)
  4. XmlPullParserException
  5. Vue自定义属性的设置及获取
  6. 基于python的毕业论文-基于python的飞机大战小游戏毕业论文设计和代码
  7. 立体剪纸风新春农历春节PSD分层海报素材
  8. 恋爱必经阶段,过不来就分了
  9. windownavigatorscreenlocation
  10. ZeroClipboard—ZeroClipboard的使用
  11. 终于找到可转载的摄影基础知识贴了
  12. java target文件夹_Maven不会创建“/ target / m2e-wtp / web-resources”文件夹
  13. 10月11日科技联播:美股暴跌引全球股市崩盘;腾讯跌出全球市值前十
  14. Json及Jsoncpp开源库的应用
  15. 2022年Work-Life Balance能实现吗?
  16. 57.音乐播放器的进度条
  17. 独家!天才少年 Vitalik:“中国开发者应多关注以太坊!”
  18. appium 等待的3中方式:强制等待、隐式等待、显示等待
  19. z分数(z-score)——之前世今生
  20. JAVA实现简易的图书管理系统(含过程)

热门文章

  1. 逻辑(html)_文件下载(a标签的download属性)
  2. 禾赛美股IPO:市值26亿美元 是18个月以来中概股赴美最大IPO
  3. v-model和input结合使用
  4. java上传问题,求各位高手帮帮忙,看看是什么问题,急!急!急!
  5. [从头学数学] 第167节 集合与函数概念
  6. Tensorflow模型库下载
  7. uwsgi部署django
  8. 实战解决使用ghost安装系统出现的各种问题
  9. 轻松帮你清理重复文件的工具:Cisdem Duplicate Finder mac版
  10. gvim(win7版)和vundle,配置各种插件