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

这篇具有很好参考价值的文章主要介绍了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);
			else
				if(a==2)
					SetWorkingImage(&img2);
				else
					SetWorkingImage(&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;   //blue
				int g = (show[i].pixel[x1][y1] >> 8) & 0xff;   //green
				int 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..1199
			int py1 = rand() % 600;  // 0.799
			pMem[py1 * 1000 + px1] = BLACK;
			pMem[py1 * 1000 + px1 + 1] = BLACK;	// 对显存赋值擦出像素点		
		}
		fire_up();//发射烟花弹
		fire_boom(pMem);//烟花绽放
		Sleep(50);
	}
	return 0;
}

   运行效果如下:

c语言烟花燃放代码,烟花代码,c语言文章来源地址https://www.toymoban.com/news/detail-721921.html

到了这里,关于C语言烟花代码—兔年顶呱呱的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • python烟花代码简单可复制,python烟花代码怎么运行

    大家好,小编来为大家解答以下问题,Python烟花代码总体功能介绍,python烟花代码简单可复制,今天让我们一起来看看吧! 天是2023 的第9天,到了这个时间点,部分小伙伴已经开始复盘这一年的得与失。比如今年增加了多少技能点,看了多少本书,写了多少篇文章或者年前

    2024年01月22日
    浏览(53)
  • python烟花代码简单可复制,python烟花代码加名字

    本篇文章给大家谈谈Python烟花代码总体功能介绍,以及python烟花代码简单可复制,希望对各位有所帮助,不要忘了收藏本站喔。 还有两天就到元旦了!!!很多小伙伴已经和朋友约好一起跨年了 但是现在很多地方都禁止烟花燃放,跨年没有烟花总感觉缺少一点味道~为了实现

    2024年03月15日
    浏览(45)
  • python烟花代码简单可复制,python烟花代码怎么写

    大家好,本文将围绕Python烟花代码总体功能介绍展开说明,python烟花代码简单可复制是一个很多人都想弄明白的事情,想搞清楚python烟花代码怎么写需要先了解以下几个事情。 Source code download: 本文相关源码 疫情太严重了,有很多小伙伴都不能出门玩耍了。给大家看一个特别

    2024年02月20日
    浏览(50)
  • Python烟花代码,用Python制作一个烟花特效

    Python实现浪漫的烟花特效 现在很多地方都不能放烟花了,既然看不到, 那作为程序猿的我们还不能自己用代码做一个吗? 今天就带大家用代码做一个烟花特效吧。 pygame介绍 关于Pygame的基本信息,pygame是什么,谁会被Pygame吸引,并且在哪里找到它。 Pygame是被设计用来写游戏

    2024年02月08日
    浏览(45)
  • python烟花代码通过编写程序来模拟烟花的绽放过程

    下面是一个简单的 Python 烟花代码,可以通过编写程序来模拟烟花的绽放过程: 该代码使用 turtle 库来绘制烟花的效果。首先,设置窗口大小和标题,定义烟花的颜色和数量。然后,定义烟花的形状,采用 turtle.Shape 的方式来定义,包括圆形和尾迹。接着,注册烟花的形状,采

    2024年02月05日
    浏览(42)
  • python绘制烟花特定爆炸效果,用python画烟花的代码

    大家好,给大家分享一下python绘制烟花特定爆炸效果,很多人还不知道这一点。下面详细解释一下。现在让我们来看看! 已经2023年了 ,到了这个时间点,部分小伙伴已经开始复盘这一年的得与失。比如今年增加了多少技能点,看了多少本书,写了多少篇文章或者年前的小目

    2024年04月10日
    浏览(61)
  • 新年烟花代码-html版

    2024年02月02日
    浏览(44)
  • python烟花代码

    下面是一个用Python编写的简单烟花特效代码,使用了Pygame库来实现图形显示。请确保你已经安装了Pygame库,如果没有安装,可以使用 pip install pygame 来安装。 这个代码创建了一个窗口,当你点击鼠标时,会在鼠标位置生成烟花粒子效果。这只是一个简单的示例,你可以根据需

    2024年02月06日
    浏览(40)
  • Python新年烟花代码

    Pygame 绘制烟花的基本原理 1,发射阶段:在这一阶段烟花的形状是线性向上,通过设定一组大小不同、颜色不同的点来模拟“向上发射” 的运动运动,运动过程中 5个点被赋予不同大小的加速度,随着时间推移,后面的点会赶上前面的点,最终所有点会汇聚在一起,处于 绽放

    2024年02月03日
    浏览(50)
  • 烟花代码(本人亲测,有效)

    代码如下:

    2024年02月12日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包