C语言烟花代码—兔年顶呱呱

        废话不多说,直接上码

代码,歌曲,烟花图片都在压缩包里
链接: 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;
}

   运行效果如下:

5a662066fbf2479a8abf2adc16b4f20b.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/9731.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python跳跳兔小游戏源代码,兔年必玩小游戏,兔年大吉

Python跳跳兔小游戏源代码&#xff0c;兔年必玩小游戏&#xff0c;兔年大吉&#xff0c;小兔子跳跳&#xff0c;按空格键向上跳跃&#xff0c;按键盘方向键进行左右移动&#xff0c;以避开飞弹&#xff0c;以防被炸&#xff0c;还可以捡到火箭道具哦。 完整程序下载地址&#…

小程序源码:2022虎年新UI春节送祝福

这是一款网友用以前小编发过的一款端午送祝福改的一款小程序 里面的背景图包括祝福语都已经修改成与虎年相关的内容了 总体来说找的背景图还是可以的,不过有些地方和细节小编也给完善了一下 然后小编测试的时候发现还没有流量主,所以小编也给加了几个流量主进去 到时候大家直…

2023兔年头像框制作生成小程序源码+多模板/抓住红利

正文: 2023了&#xff0c;到了兔年那么也该换新的头像框拉&#xff0c;今天给大家带来兔年的头像框制作小程序&#xff0c;支持一键获取头像支持用户上传头像&#xff0c;丰富的模板&#xff0c;不只于兔年头像框还有其它的&#xff0c;早点给大家发出来也好让大家早点抓住这波…

头像生成器微信小程序代码

微信小程序需要wxml&#xff0c;wxss&#xff0c;js三种类型代码 1&#xff0c;wxml <view class"container"><view class"title">兔年头像生成器</view><view class"description">选择一张图片&#xff0c;生成你的兔…

Python生成兔年祝福词云图,快拿去发给小姐姐吧!祝大家兔年大吉,桃花运多多

今年是兔年&#xff0c;所以今年我们拜年主题就是以兔为主&#xff0c;为了能够在兔年拜年做好准备祝福语可是少不了&#xff0c;发太多的文字已经让人们感到厌烦&#xff0c;所以不如利用自己所学只是做一张兔年的词云图&#xff0c;来去给小姐姐们拜个年。 话不多说&#xff…

2023最新兔年新春好友送祝福小程序源码+文案很多

正文: 去年的时候也发过虎年的送祝福小程序&#xff0c;这不马上2023兔年了所以给大家发兔年的送祝福小程序&#xff0c;早点发也好让大家早点抓住新春的流量福利。 程序: wwxras.lanzoum.com/iPWHz0l7t5ra 图片:

【OpenVI】AIGC纪元,兔年AI绘画实践

团队模型、论文、博文、直播合集&#xff0c;点击此处浏览 一、背景 AIGC指的是AI Generated Content&#xff0c;即由AI创作的内容&#xff0c;是继UGC(User Generated Content用户创造内容&#xff0c;如抖音b站等平台)、PGC(Professional Generated Content专业生产内容&…

2023 兔年春节倒计时微信小程序源码

马上也到2023年兔年了 增加一下喜庆,其实这种小程序还是有流量的 每天看一看倒计时,数着过年 另外还有一个简单的绘画功能

2023兔年新春好友送祝福微信小程序源码

源码简介&#xff1a; 马上2023兔年了所以站长给大家发兔年的送祝福小程序 早点发也好让大家早点抓住新春的流量福利 好了不多说,感兴趣的抓紧下载吧! 原文链接&#xff1a;2023兔年新春好友送祝福微信小程序源码-主题模板站 源码截图&#xff1a;

2023兔年新年春节倒计时微信小程序源码

简介&#xff1a; 马上也到2023年兔年了 给大家分享一个春节倒计时的小程序 增加一下喜庆,其实这种小程序还是有流量的 每天看一看倒计时,数着过年 另外还有一个简单的绘画功能 下方是小编的测试演示图! https://www.skpan.cn/bBibst11KsJ 图片&#xff1a;

2023兔年春节倒计时小程序源码

源码简介&#xff1a; 马上到2023年兔年了 站长给大家分享一个春节倒计时的小程序 增加一下喜庆,其实这种小程序还是有流量的 每天看一看倒计时,数着过年 另外还有一个简单的绘画功能 源码截图&#xff1a;

这么好看的客服组件,还是觉得接入ChatGPT,把它放在博客中那就完美了

我们在使用ChatGPT时&#xff0c;它的返回方式是采用流式回复。感觉这个效果不错。之前做的全都是的等全部结果请求完成&#xff0c;再一次性返回给用户。今天就通过流式回复的效果重写之前的程序。 前端 前端采用一个网页版的客服组件&#xff0c;整体的效果如下&#xff1a;…

C#接入ChatGPT编程实际应用

一&#xff0c;介绍ChatGPT的API可以在前端&#xff0c;以及一些后端进行API的接入&#xff0c;本篇主要介绍基于ChatGPT的API的C#接入研究。 学习更多的科技知识可以来知新文学 最火的莫过于ChatGPT的相关讨论&#xff0c;这个提供了非常强大的AI处理&#xff0c;并且整个平…

Java快速接入Chatgpt简单案例

Chatgpt介绍 ChatGPT是一种由OpenAI训练的大型语言模型。它的原理是基于Transformer架构&#xff0c;通过预训练大量文本数据来学习如何生成人类可读的文本&#xff0c;然后通过接受输入并生成输出来实现对话。 ChatGPT的用途非常广泛&#xff0c;可以用于自然语言处理&#xf…

SpringBoot 接入chatGPT API

SpringBoot 接入chatGPT API 一、准备工作二、补全接口示例三、申请API-KEY**四、JavaScript调用API**五、SpringBoot整合ChatGPT六、使用curl模拟请求ChatGPT平台已经为技术提供了一个入口了,作为一个Java程序员,我们第一时间想到的就是快速开发一个应用,接入ChatGPT的接口…

ChatGPT 克隆方案,开源了!开箱即用

什么是 ChatGPT ChatGPT是一种基于人工智能技术的大型语言模型&#xff0c;它能够理解和处理人类自然语言&#xff0c;并且在回答问题、生成文本和模拟对话等方面表现出色。ChatGPT使用的是GPT-3.5架构&#xff0c;它在训练过程中接触了大量的语言数据&#xff0c;并利用这些数…

上海亚商投顾:沪指失守3300点 传媒、游戏板块逆市大涨

上海亚商投顾前言&#xff1a;无惧大盘涨跌&#xff0c;解密龙虎榜资金&#xff0c;跟踪一线游资和机构资金动向&#xff0c;识别短期热点和强势个股。 市场情绪 三大指数今日继续调整&#xff0c;沪指午后跌超1%&#xff0c;失守3300点整数关口&#xff0c;创业板指一度跌逾2%…

汇正财经骗局?大盘六连阳,周线完美收官

盘面回顾&#xff1a; 沪深两市成交额连续第四个交易日突破1万亿元&#xff0c;收盘沪指涨0.45%&#xff0c;深成指涨0.85%&#xff0c;创业板指涨0.84%。创新药、地产、光伏发电、游戏、数据确权等板块表现不错&#xff0c;ChatGPT概念股再度走强&#xff0c;游戏、影视等应用…

上海亚商投顾:沪指延续反弹涨0.67% AI概念股掀跌停潮

指数今日低开高走&#xff0c;沪指午后一度涨超1%&#xff0c;以保险为首的大金融板块拉升&#xff0c;中国平安在一季报驱动下&#xff0c;迎来久违涨停&#xff0c;成交超120亿元。医药股全天强势&#xff0c;何氏眼科、金石亚药、普蕊斯、天宇股份20CM涨停&#xff0c;第一医…