出售本站【域名】【外链】

织梦CMS - 轻松建站从此开始!

智能永康-教育培训

当前位置: 智能永康-教育培训 > 高考绽放 > 文章页

用C语言做一个烟花代码

时间:2024-09-07 23:20来源: 作者:admin 点击: 35 次
文章浏览阅读4.2k次,点赞11次,收藏22次。本文介绍了两种C语言版本的烟花代码,基础版使用`printf`绘制,进阶版采用`Particle`结构体和ANSI转义序列在终端模拟烟花效果。代码在Linux环境下可直接运行,Windows环境下可能需调整部分终端控制。

ZZZs2017环境下乐成编译,ZZZc6.0编译不通过 #include "stdafV.h" #include #include #include #include // 运用该计时器必须包孕的文件 #pragma comment ( lib, "Winmm.lib" ) using namespace std; #define LONG 800 // 窗口长 #define WIDE 500 // 窗口宽 #define NUM 13 // 烟花品种数质宏界说 ZZZoid Init_Fire(); // 初始化烟花 ZZZoid Load_Image(); // 加载烟花图片 ZZZoid Shoot(); // 发射烟花 ZZZoid Chose(DWORD& t1); // 挑选烟花 ZZZoid Show(DWORD* pMem); // 绽开烟花 ZZZoid Erase(DWORD* pMem); // 随机擦除像素点 // 烟花构造 struct FIRE { int r; // 当前爆炸半径 int maV_r; // 爆炸核心距离边缘最大半径 int V, y; // 爆炸核心正在窗口的坐标 int cen_V, cen_y; // 爆炸核心相对图片右上角的坐标 int width, height; // 图片的宽高 int Vy[240][240]; // 储存图片像素点 bool show; // 能否绽开 bool draw; // 初步输出像素点 DWORD t1, t2, dt; // 绽开速度 }Fire[NUM]; // 烟花弹构造 struct JET { int V, y; // 放射点坐标 int hV, hy; // 最高点坐标------将赋值给 FIRE 里面的 V, y int height; // 烟花高度 bool shoot; // 能否可以发射 DWORD t1, t2, dt; // 发射速度 IMAGE img[2]; // 储存花弹一亮一暗图片 byte n : 1; // 图片下标 }Jet[NUM]; // 初始化烟花参数 ZZZoid Init_Fire() { // 划分为:烟花核心到图片边缘的最远距离、烟花核心到图片右上角的距离 (V、y) 两个重质 int r[13] = { 120, 120, 155, 123, 130, 147, 138, 138, 130, 135, 140, 132, 155 }; int V[13] = { 120, 120, 110, 117, 110, 93, 102, 102, 110, 105, 100, 108, 110 }; int y[13] = { 120, 120, 85, 118, 120, 103, 105, 110, 110, 120, 120, 104, 85 }; for (int i = 0; i < NUM; i++) // 初始化烟花 { Fire[i].V = 0; // 烟花核心坐标 Fire[i].y = 0; Fire[i].width = 240; // 图片宽 Fire[i].height = 240; // 图片高 Fire[i].maV_r = r[i]; // 最大半径 Fire[i].cen_V = V[i]; // 核心距右上角距离 Fire[i].cen_y = y[i]; Fire[i].show = false; // 能否绽开 Fire[i].dt = 5; // 绽开光阴间隔 Fire[i].t1 = timeGetTime(); Fire[i].r = 0; // 从 0 初步绽开 Jet[i].V = -240; // 烟花弹右上角坐标 Jet[i].y = -240; Jet[i].hV = -240; // 烟花弹发射最高点坐标 Jet[i].hy = -240; Jet[i].height = 0; // 发射高度 Jet[i].t1 = timeGetTime(); Jet[i].dt = rand() % 10; // 发射速度光阴间隔 Jet[i].n = 0; // 烟花弹闪烁图片下标 Jet[i].shoot = false; // 能否发射 } } // 加载图片 ZZZoid Load_Image() { IMAGE fm, gm; loadimage(&fm, _T("fire/flower.jpg"), 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].Vy[a][b] = getpiVel(a, b); } IMAGE sm; loadimage(&sm, _T("fire/shoot.jpg"), 200, 50); for (int i = 0; i 100) { int n = rand() % 20; if (n < 13 && Jet[n].shoot == false && Fire[n].show == false) { Jet[n].V = rand() % LONG; Jet[n].y = rand() % 100 + LONG / 2; Jet[n].hV = Jet[n].V; Jet[n].hy = rand() % LONG / 3; Jet[n].height = Jet[n].y - Jet[n].hy; Jet[n].shoot = true; putimage(Jet[n].V, Jet[n].y, &Jet[n].img[Jet[n].n], SRCINxERT); } t1 = t2; } } // 扫描烟花弹并发射 ZZZoid Shoot() { for (int i = 0; i Jet[i].dt&& Jet[i].shoot == true) { putimage(Jet[i].V, Jet[i].y, &Jet[i].img[Jet[i].n], SRCINxERT); // 烟花弹的回升 if (Jet[i].y > Jet[i].hy) { Jet[i].n++; Jet[i].y -= 5; } putimage(Jet[i].V, Jet[i].y, &Jet[i].img[Jet[i].n], SRCINxERT); if ((Jet[i].y - Jet[i].hy) * 4 < Jet[i].height) // 回升到高度的 3 / 4,减速 Jet[i].dt = rand() % 4 + 10; if (Jet[i].y <= Jet[i].hy) // 回升到最大高度 { putimage(Jet[i].V, Jet[i].y, &Jet[i].img[Jet[i].n], SRCINxERT); // 擦掉烟花弹 Fire[i].V = Jet[i].hV + 10; // 正在烟花弹中间爆炸 Fire[i].y = Jet[i].hy; // 正在最高点绽开 Fire[i].show = true; // 初步绽开 Jet[i].shoot = false; // 进止发射 } Jet[i].t1 = Jet[i].t2; } } } // 绽开烟花 ZZZoid Show(DWORD* pMem) { // 烟花个阶段绽开光阴间隔,制做变速绽开成效 int drt[16] = { 5, 5, 5, 5, 5, 6, 25, 25, 25, 25, 55, 55, 55, 55, 55 }; for (int i = 0; i Fire[i].dt&& Fire[i].show == true) { if (Fire[i].r = Fire[i].maV_r - 1) { Fire[i].draw = false; Init_Fire(); } Fire[i].t1 = Fire[i].t2; } // 假如该号炮花可爆炸,依据当前爆炸半径画烟花,颜涩值濒临黑涩的不输出。 if (Fire[i].draw) { for (double a = 0; a <= 6.28; a += 0.01) { int V1 = (int)(Fire[i].cen_V + Fire[i].r * cos(a)); // 相应付图片右上角的坐标 int y1 = (int)(Fire[i].cen_y -

(责任编辑:)

------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:
发布者资料
查看详细资料 发送留言 加为好友 用户等级: 注册时间:2025-02-07 23:02 最后登录:2025-02-07 23:02
栏目列表
推荐内容
  • 关于高考的优秀演讲稿

    关于高考的优秀演讲稿(精选24篇) 同学们,从今天开始,高考冲刺的战役正式打响。高考,是人生征途中最激动人心的驿站之一,它对翻开我们生命中崭新的一页有着不可估量...

  • 美丽的风景作文(精选70篇)

    在日常生活或是工作学习中,大家都尝试过写作文吧,借助作文人们可以反映客观事物、表达思想感情、传递知识信息。如何写一篇有思想、有文采的作文呢?下面是小编收集整理的...

  • 高考语文满分作文范例及解析

    浏览下面的资料,依据要求做文。   下面是华为创始人任正非承受采访的片断。   主持人:您拥护正在补短板的历程中,自发的知识产权的翻新。 ...

  • 我看高考800字作文(2017全国2)

    《等待春天的日子》是2017年全国2卷我看高考800字作文,聚焦在“我的高考”上,把自己的“高考”比作“春天”,那么高一是“萌芽”,高二是“生长”,高三是“绽放...

  • 2025年高考作文素材积累:我的阿勒泰.docx

    2025年高考作文素材积累:我的阿勒泰.docx,不落窠臼的返乡故事,治愈心灵的文化密码 2024年5月7日起,由马伊琍、周依然、于适主演的《我的阿勒泰》在央视...

  • 快看!2024高考7篇满分作文!绝对惊艳,赶快收藏!

    快看!2024高考7篇满分作文!绝对惊艳,赶快收藏!,高考,屈原,朱自清...

  • 美就在身边中考满分作文精选5篇

    美就在身边中考满分作文精选5篇 世上有千万种美,样样精彩,样样惹人注目。下面是小编整理的美就在身边满分作文,欢迎大家阅读!【作文题目】22.请从以下两题中任选一...

  • 2024年满分高考优秀作文(精选45篇)

    对我国绝大多数考生来说,高考是真正意义上的“一考定终身”但是,考生面临的竞争也非常激烈,因此高考时的每一分都至关重要,有时候多考一分,便能超过千人,未来的路或许...

  • 乘风破浪,让青春无悔绽放!

    龙虎首页...

  • 高考满分作文:父爱(精选55篇)

    在平平淡淡的日常中,大家都不可避免地要接触到作文吧,借助作文人们可以实现文化交流的目的。你知道作文怎样才能写的好吗?以下是小编帮大家整理的高考满分作文:父爱,仅...