原创 无言 2020-12-31

祝愿大家,在新的一年里面也要更加好哦!

以下就是我们的新年烟花程序源码了!大家一起来学习吧~

源码分享:

#include

#include

#include

#include

#include//自己安装了才有

#include

#pragma comment(lib,"winmm.lib")//多媒体设备接口库文件

#define PI 3.1415

#define NUM 13//烟花弹数量

#define WIDTH 960

#define HEIGHT 640

/*

开发环境:vs2019+easyx

*/

struct Fire

{

int x, y;

int cen_x, cen_y;//中心点坐标

int r;//当前绽放半径

int max_r;//最大绽放半径

int width, height;

DWORD pixel[240][240];//图片像素数组

bool isShow;//烟花是否准备好了

bool isDraw;//是否绘制烟花

}fire[NUM];

struct Jet  //烟花弹

{

int x, y;//坐标

int hx, hy;//最高点的坐标

bool isLaunch;//烟花弹是否在发射中

IMAGE img[2];

byte n : 1;//位段  0 1 0 1 0 1 0 1 0 1

}jet[NUM];

void welcome()

{

mciSendString(L"open ./res/小幸运.mp3", 0, 0, 0);

mciSendString(L"play ./res/小幸运.mp3", 0, 0, 0);

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

{

//清除屏幕

cleardevice();

int x = 500 + 180 * sin(2 * PI / 60 * i);

int y = 200 + 180 * cos(2 * PI / 60 * i);

//设置字体样式

settextstyle(i, 0, L"楷体");

settextcolor(RGB(0, 202, 0));

setbkmode(TRANSPARENT);

outtextxy(x, y, L"浪漫表白程序");

Sleep(20);

}

_getch();//按任意键继续

cleardevice();

settextstyle(25, 0, L"楷体");

outtextxy(350, 100, L"亲爱的XXX");

outtextxy(350, 150, L"自从第一天看见你");

outtextxy(350, 200, L"我的心就不能自已");

outtextxy(350, 250, L"不管天上地下都想看见你");

outtextxy(350, 300, L"...");

outtextxy(350, 350, L"...");

outtextxy(450, 400, L"--最喜欢你的我");

}

void InitData(int i);

void loadImg()

{

//初始化绽放效果

IMAGE bloomImg,tImg;

loadimage(&bloomImg, L"./res/flower.jpg", 3120, 240);

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

{

InitData(i);

SetWorkingImage(&bloomImg);

getimage(&tImg, i * 240, 0, 240, 240);

SetWorkingImage(&tImg);

for (int a = 0; a < 240; a++)

{

for (int  b = 0; b < 240; b++)

{

fire[i].pixel[a][b] = getpixel(a, b);

}

}

}

//初始化烟花弹

IMAGE jetImg;

loadimage(&jetImg, L"./res/launch.jpg", 200, 50);

SetWorkingImage(&jetImg);

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

{

int n = rand() % 5;

getimage(&jet[i].img[0], n*20, 0, 20, 50);

getimage(&jet[i].img[1], n*20 + 100, 0, 20, 50);

jet[i].isLaunch = false;

}

SetWorkingImage();

}

void InitData(int i)

{

fire[i].cen_x = 120;

fire[i].cen_y = 120;

fire[i].max_r = 120;

fire[i].r = 0;

fire[i].width = 240;

fire[i].height = 240;

fire[i].isDraw = false;

fire[i].isShow = false;

}

//产生烟花弹

void createJet()

{

int i = rand() % NUM;//[0~13)

if (jet[i].isLaunch == false)

{

jet[i].x = rand() % (WIDTH-20);

jet[i].y = rand() % 100 + HEIGHT;

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

jet[i].hy = rand() % (HEIGHT / 3 * 2);

jet[i].isLaunch = true;

}

}

//发射烟花弹

void launch()

{

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

{

if (jet[i].isLaunch)

{

putimage(jet[i].x, jet[i].y, &jet[i].img[jet[i].n],SRCINVERT);

//判断是否达到最高点了

if (jet[i].y > jet[i].hy)

{

jet[i].y -= 5;

jet[i].n++;

}

putimage(jet[i].x, jet[i].y, &jet[i].img[jet[i].n], SRCINVERT);

if (jet[i].y <= jet[i].hy)

{

jet[i].isLaunch = false;

//可以开始放烟花了

fire[i].x = jet[i].x;

fire[i].y = jet[i].y;

fire[i].isShow = true;

}

}

}

}

void bloom(DWORD *pMem)

{

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

{

if (fire[i].isShow)

{

if (fire[i].r < fire[i].max_r)

{

fire[i].r++;

fire[i].isDraw = true;//可以开始绘制烟花了

}

if (fire[i].r >= fire[i].max_r)

{

InitData(i);

}

}

if (fire[i].isDraw)

{

//求当前半径下,圆上的每个点对于的弧度

for (double a = 0; a <= 2 * PI; a += 0.01)

{

int img_x = fire[i].cen_x + fire[i].r * cos(a);//求出圆上的每个点的坐标

int img_y = fire[i].cen_y + fire[i].r * sin(a);

if (img_x > 0 && img_x < fire[i].width && img_y>0 && img_y < fire[i].height)

{

//针对现在的绽放点,对应的屏幕坐标

int win_x=  fire[i].x + fire[i].r * cos(a);

int win_y = fire[i].y + fire[i].r * sin(a);

if (win_x > 0 && win_x < WIDTH && win_y>0 && win_y < WIDTH)

{

pMem[win_y * WIDTH + win_x] = BGR(fire[i].pixel[img_x][img_y]);

}

}

}

}

}

}

int main()

{

//创建窗口

initgraph(960, 640);

//设置随机数种子

srand((unsigned)time(NULL)+clock());

welcome();

loadImg();

DWORD* pMem = GetImageBuffer();//获取窗口的内存指针

while (1)

{

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

{

for (int k = 0; k < 4; k++)

{

int x = rand() % WIDTH;

int y = rand() % HEIGHT;

if (y < HEIGHT)

{

pMem[y * WIDTH + x] = BLACK;

}

}

}

createJet();

launch();

bloom(pMem);

Sleep(10);

}

closegraph();

return 0;

}

以上就是今日的全部分享,happy new year!

浪漫的c语言程序6,【2021跨年】最浪漫的烟花程序,送给新的一年的自己!(源码)...相关推荐

  1. 免费开源的高精度OCR文本提取,支持 100 多种语言、自动文本定位和脚本检测,几行代码即可实现离线使用(附源码)

    免费开源的高精度OCR文本提取,支持 100 多种语言.自动文本定位和脚本检测,几行代码即可实现离线使用(附源码). 要从图像.照片中提取文本吗?是否刚刚拍了讲义的照片并想将其转换为文本?那么您将需要 ...

  2. WoShop跨境电商国际支付Paypal支付商城全开源无加密商城源码

    WoShop跨境电商国际支付Paypal支付商城全开源无加密商城源码 现在的企业都喜欢直接用源码进行开发,特别是在跨境电商版块这一行,很多企业都是直接购买跨境电商系统源码再进行一个二次开发,从而给自己 ...

  3. 微信小程序实战 《跨时空》旅行日记小程序

    题外话 我喜欢旅行,在正文开始前,先向有共同兴趣的朋友推荐一个自己每次出行前必装的 APP -- 面包旅行.我主要用它来写旅行日志,每天行程结束,我都会将当天拍的照片上传并做简单的文字记录,记录是回顾 ...

  4. C语言初学者复刻经典扫雷小游戏(图形界面,非黑白窗口)(含源码)

    注:除计时器和剩余雷数显示外,其他功能完美还原. 目录 一.程序演示 二.程序信息 1.基础信息 2.前言 3.所需文件 三.代码解析 1.头文件 2.变量声明 3.随机生成雷 4.生成雷位置矩阵 5 ...

  5. 安信可分享 | 分享一个基于airkiss协议的配网小程序,实现小程序一键配网安信可ESP32C3\ESP8266\ESP32\ESP32S2系列的模组。(附带源码)

    文章目录 一.关于 WeChatAirkiss 1.1 应用场景 二.airkiss 简介 三.开始使用 四.API说明 五.FAQ 六.开源微信物联网控制一览表 联系我们 一.关于 WeChatAi ...

  6. C语言使用1到9求出所有k个数字的所有组合的算法(附完整源码)

    C语言使用1到9求出所有k个数字的所有组合的算法 C语言使用1到9求出所有k个数字的所有组合的算法完整源码(定义,实现,main函数测试) C语言使用1到9求出所有k个数字的所有组合的算法完整源码(定 ...

  7. 2021年前端小白进阶大神必看编程资源免费分享(视频+源码+笔记)

    关注了我的同学都知道,我给大家分享资源,一般最先开始给大家的是 小白成长的学习线路图,先缕清思路,我们再开始学习 首先我们先看下前端应该从哪里开始学起,这是我在黑马程序员的论坛上找的一张学习线路图,可 ...

  8. 情人节程序员用HTML网页表白【浪漫的烟花3D相册】 HTML5七夕情人节表白网页源码 HTML+CSS+JavaScript

    这是程序员表白系列中的100款网站表白之一,旨在让任何人都能使用并创建自己的表白网站给心爱的人看. 此波共有100个表白网站,可以任意修改和使用,很多人会希望向心爱的男孩女孩告白,生性腼腆的人即使那个 ...

  9. 情人节程序员用HTML网页表白【全屏3D相册】 HTML5七夕情人节表白网页源码 HTML+CSS+JavaScript

    这是程序员表白系列中的100款网站表白之一,旨在让任何人都能使用并创建自己的表白网站给心爱的人看. 此波共有100个表白网站,可以任意修改和使用,很多人会希望向心爱的男孩女孩告白,生性腼腆的人即使那个 ...

  10. 情人节程序员用HTML网页表白【七夕告白(520气球)】 HTML5七夕情人节表白网页源码 HTML+CSS+JavaScript

    这是程序员表白系列中的100款网站表白之一,旨在让任何人都能使用并创建自己的表白网站给心爱的人看. 此波共有100个表白网站,可以任意修改和使用,很多人会希望向心爱的男孩女孩告白,生性腼腆的人即使那个 ...

最新文章

  1. 高并发高流量网络架构
  2. java代码是怎么运行的_Java代码是如何运行起来的?
  3. C#并发编程之异步编程(一)
  4. 背景图片固定(背景图片附着)(HTML、CSS)
  5. 配置 iSQL*Plus
  6. GitHub 热榜:文字识别神器,超轻量级中文 OCR!一个超级厉害的开源库
  7. GEE学习笔记3-导出table数据
  8. IPTV Checker(直播源自动检测工具)
  9. ChIP-Atlas:基于公共chip_seq数据进行分析挖掘
  10. windows系统常见端口和木马默认使用端口
  11. SSM + Ajax
  12. python字符串输入并倒叙_基于python3实现倒叙字符串
  13. python中shelf对象_11.4. shelve — Python 对象持久化 — Python 2.7.18 文档
  14. 树莓派配置环境细节(JDK+pycharm+miniconda+pyqt5+opencv-python)
  15. 后台管理系统Login 页面(部分)
  16. 【IOS】IOS工程自动打包并发布脚本实现
  17. 衡量两个概率分布之间的差异性的指标
  18. 【腾讯课堂】产品分析报告
  19. 工欲善其事,必先利其器——Python及其IDE安装
  20. 白炽灯和led哪个护眼?分享真正适合孩子的护眼台灯

热门文章

  1. 企业微信API群机器人配置
  2. Taro小程序生成二维码保存本地
  3. 荣耀盒子显示服务器繁忙错误码7,【沙发管家】华为荣耀盒子的三种解决方式...
  4. arduino 下载 https://downloads.arduino.cc/packages/package_index.json error 出错的解决方法
  5. android状态栏华为,状态栏设置华为版
  6. (8)seetaface6 JNI之人脸相似度1:1(包含戴口罩人脸相似度)计算
  7. CANTest及CANPro软件滤波设置说明
  8. jxbrowser 6.18 以及 6.16 破解 整合
  9. linux localhost发邮件失败,测试邮件系统:telnet localhost 25时的问题~
  10. 华为 eNSP模拟器安装教程