这是一个利用C语言编写放烟花的程序(同时也可以播放音乐),供大家参考,具体内容如下

代码如下

#pragma once

#include

#include //图形界面库头文件

#include //计算圆形的轨迹坐标

#include

#include

#include

#include

#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 welcome();

void init(int i);

void loadimages();

void choice(DWORD& t1);

void shoot();

void Show(DWORD* pMem);

void clss(int a);

void delay(int a);

void detabase(int a);

int main()

{

//res 1.wav

PlaySound(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);

int a;

for (a = 0; a < 5; a++)

{

detabase(a);

delay(100000);

clss(1);

}

delay(500000);

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 welcome()

{

settextcolor(YELLOW);

for (int i = 0; i < 50; i++)

{

//圆心(500,300) 半径150 60个均匀点的x,y

int 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-199

if (n < NUM && jet[n].isshoot == false && fire[n].show == false)

{

//重置烟花弹

jet[n].x = rand() % (WND_WIDTH - 20);

jet[n].y = rand() % 100 + 400; //450-549

jet[n].hx = jet[n].x;

jet[n].hy = rand() % 400; //0-399

jet[n].height = jet[n].y - jet[n].hy;

jet[n].isshoot = true;

//n

putimage(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 }; //dt

for (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 clss(int a)

{

system("cls");

}

void delay(int a)

{

while (a)

{

a--;

}

}

void detabase(int a)

{

switch (a)

{

case 1:

{

//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 2:

{

//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 3:

{

//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 4:

{

//不用 不用

//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 5:

{

printf("happy spring festival!");

}

break;

}

}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持得牛网。

可以放烟花的c语言程序,C语言实现放烟花的程序相关推荐

  1. C语言/C++基础之跨年烟花程序代码(附源码)

    C语言/C++基础之跨年烟花程序代码 程序之美 前言 主体 运行效果 代码实例 结束语 程序之美 前言 元旦将至,新年将至.转眼间2022年即将过去,崭新的一年正向我们缓缓走来.风花雪夜新年临近:入冬 ...

  2. c++语言表白超炫图形_C++编写的表白小程序(图片围成爱心+烟花+音乐)-附源代码...

    一.效果 视频效果: C++编写的表白小程序(图片围成爱心+烟花+音乐)-附源码 二.项目完整源代码: 链接:https://pan.baidu.com/s/1zea3Wji1VN4FIrqXoa4L ...

  3. c是过程化语言吗数据库,关于SQL错误的是()A、所有数据库的公共语言B、非过程化的C、统一的语言D、所有用SQL缩写的程序都...

    关于SQL错误的是()A.所有数据库的公共语言B.非过程化的C.统一的语言D.所有用SQL缩写的程序都 更多相关问题 [多选] 在彩色电视机遥控系统中,属于模拟量控制的有()等几种. [多选] 在色度 ...

  4. JavaScript脚本语言介绍并实现第一个Hello World程序

    1.JavaScript是Web页面中的一种脚本编程语言,也是一种通用的.跨平台的.基于对象和事件驱动并具有安全性的脚本语言,具有与Java类似的语法.它不需要进行编译,而是直接嵌入在HTML页面 ...

  5. 红外线遥控c语言程序,红外线遥控解码接收程序-c语言讲解学习.pdf

    红外线遥控解码接收程序 -C 语言 .txt 铁饭碗的真实含义不是在一个地方吃一辈子饭, 而是一 辈子到哪儿都有饭吃.就算是一坨屎,也有遇见屎壳郎的那天.所以你大可不必为今天的自 己有太多担忧.红外线 ...

  6. C语言编程>第二十周 ② 下列给定程序中,函数fun的功能是:求出数组中最大数和次最大数,并把最大数和b[0]中的数对调、次最大数和b[1]中的数对调。

    例题:下列给定程序中,函数fun的功能是:求出数组中最大数和次最大数,并把最大数和b[0]中的数对调.次最大数和b[1]中的数对调. 注意:不要改动main函数,不能增行或删行,也不能更改程序的结构. ...

  7. 青花瓷音乐的单片机c语言程序,c语言曲谱_单片机c语言音乐简谱代码

    51单片机曲谱编写音乐程序,我看不懂曲谱,谁能教下我! //<世上只有妈妈好>51单片机C语言程序和音乐采灯程序 //此程序在硬件上调试通过 //本程序的单片机晶振采用11.0592MHZ ...

  8. 单片机C语言数据存储原理,学习单片机C语言,必知的数据存储与程序编写知识!...

    一.五大内存分区 内存分成5个区,它们分别是堆.栈.自由存储区.全局/静态存储区和常量存储区. 1.栈区(stack):FIFO就是那些由编译器在需要的时候分配,在不需要的时候自动清除的变量的存储区. ...

  9. C语言编程>第十八周 ⑧ 给定程序中,函数fun的功能是:将形参指针所指结构体数组中的三个元素按num成员进行升序排列。

    例题:给定程序中,函数fun的功能是:将形参指针所指结构体数组中的三个元素按num成员进行升序排列. 注意:请勿改动主函数main与其他函数中的任何内容,仅在横线上填写所需的若干表达式或语句. 代码如 ...

  10. 简单谱子C语言程序,c语言曲谱_单片机c语言音乐简谱代码

    51单片机曲谱编写音乐程序,我看不懂曲谱,谁能教下我! //<世上只有妈妈好>51单片机C语言程序和音乐采灯程序 //此程序在硬件上调试通过 //本程序的单片机晶振采用11.0592MHZ ...

最新文章

  1. docker一步安装mysql,docker的魅力就在于此
  2. yii2服务器无法加载文件,yii2查看服务器500错误的方法
  3. 【整理】SYSCOMMAND的wParam值的宏定义
  4. webuploader 跨域
  5. python 加锁_Python 共享变量加锁、释放详解
  6. Spring MVC之基于java config无xml配置的web应用构建
  7. 字节跳动面试真题:java高级编程考试题及答案
  8. Ubuntu 修复windows启动项
  9. (三)Web框架-龙卷风Tornado之快速上手
  10. 代码:小波包分解与重构、小波包能量特征提取
  11. 消灭Bug,开发者不可不知的几款Bug探索测试神器。
  12. Win10商店打开无法加载页面,代码0x80131500,解决办法
  13. php 发 语音验证码,分享一下子语音验证码的php开发流程
  14. 物联网云平台将成为产业生态的核心
  15. 计算机顶会论文多少钱,计算机视觉顶会文章的解读汇总(CVPR/ECCV/ICCV/NIPS)
  16. 3种思路,打造用户画像的标签体系
  17. 微信PHP开发《音乐播放器》
  18. 微信群拉人很累?学会这 6 种自动化方案后,轻松乐无忧!
  19. Linux操作系统下查询NVMe盘符、Slot ID和Bus ID的对应关系
  20. 《格局逆袭》读书笔记

热门文章

  1. CString::ReverseFind()和CString::Find()区别
  2. 网站前置审批是什么样的?网站备案需要前置审批有哪些?
  3. 【2018亚太数据中心峰会】胡海波:海外云服务和数据中心在国内的机遇和挑战...
  4. 六小时也de不出的bug系列
  5. java 接收前台富文本_java 解析富文本处理 img 标签
  6. java汽车票_基于jsp的网上汽车票订票-JavaEE实现网上汽车票订票 - java项目源码
  7. matlab中str_,str编程中是啥意思 str在程序中什么意思
  8. 云服务器评测--BAT(阿里云、腾讯云、百度云)云服务器哪家强?
  9. oracle数据库中nvarchar,Oracle数据库中的varchar,varchar2,nvarchar,nvarchar2区别及用
  10. 《惢客创业日记》2020.09.13(周日)重新把健康捡起来