【c++】新年烟花完整代码

这篇具有很好参考价值的文章主要介绍了【c++】新年烟花完整代码。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

分享一下我的烟花代码,图片可以去百度自己搜索,如想要可以私信找我取

#include <iostream>
#include <graphics.h>      
#include <easyx.h>
#include "math.h"
#include "time.h"



//烟花弹
struct Jet {
    int x = 0, y = 0;
    int hx = 0, hy = 0;
    unsigned long t1 = 0, t2 = 0, dt = 0;
    IMAGE img;
    bool isshoot = 1;
}jet;
Jet jet1, jet2, jet3;
//烟花
struct Fire {
    int r = 0;            //当前半径
    int maxr = 0;          //最大半径
    int x = 0, y = 0;     //中心点坐标(窗口)
    int cx = 0, cy = 0;    //中心点坐标(图画)
    int xy[240][240];     //保存像素点
    bool isboom = 0;       //是否爆炸
    bool isdraw = 0;      //是否显示
    unsigned long t1 = 0, t2 = 0, dt = 0;   //爆炸速度
}fire;
Fire fire1, fire2, fire3;

void jet_init(Jet* jetn)     //烟花弹的初始化
{
    jetn->x = rand() % 1100 - 20;
    jetn->y = rand() % 50 + 700;
    jetn->hx = jetn->x;
    jetn->hy = rand() % 450;
    jetn->t1 = GetTickCount();  //获取系统时间
    jetn->isshoot = true;
    jetn->dt = rand() % 10 + 1;
}


void fire_init(Fire* firen)
{
    firen->r = 0;
    firen->maxr = 120;
    firen->cx = 120; firen->cy = 120;     //中心点的坐标(图片)
    firen->isboom = true; firen->isdraw = false;
    firen->t1 = GetTickCount();
    firen->dt = 5;             //烟花爆炸速度
    IMAGE fimg;
    
    loadimage(&fimg, L"烟花4.jpg", 240, 240);
    SetWorkingImage(&fimg);
    for (int a = 0; a < 240; a++)
    {
        for (int b = 0; b < 240; b++)
        {
            firen->xy[a][b] = getpixel(a, b);   //传入像素点
        }
    }
    SetWorkingImage();
}

//函数测试
void fire_text(Jet* jetn, Fire* firen)
{
    DWORD* pmem = GetImageBuffer();
    jetn->t2 = GetTickCount();
    if (jetn->t2 - jetn->t1 > jetn->dt && jetn->isshoot == true)
    {
        putimage(jetn->x, jetn->y, &jetn->img, SRCINVERT);
        if (jetn->y > jetn->hy)
        {
            jetn->y -= 5;
            putimage(jetn->x, jetn->y, &jetn->img, SRCINVERT);
        }
        if (jetn->y <= jetn->hy)     //烟花弹移动出界
        {
            jetn->isshoot = false;
            putimage(jetn->x, jetn->y, &jetn->img, SRCINVERT);
            fire_init(firen);    //烟花的初始化
            firen->x = jetn->hx + 10;
            firen->y = jetn->hy - 20;

        }
        if (jetn->isshoot == false && firen->isboom == true && firen->isdraw == 0)
        {
            jet_init(jetn);
            putimage(jetn->x, jetn->y, &jetn->img, SRCINVERT);
        }
        jetn->t1 = jetn->t2;
        //烟花
        int drt[13] = { 5,5,5,10,10,15,15,25,35,40,40,55,55 }; //不一样的速度
        firen->t2 = GetTickCount();
        if (firen->t2 - firen->t1 > firen->dt && firen->isboom == true)
        {
            if (firen->r < firen->maxr)
            {
                firen->r++;
                firen->dt = drt[firen->r / 10];
                firen->isdraw = true;
            }
            if (firen->r > firen->maxr - 1)
            {
                firen->isdraw = false;
                firen->isboom = false;
                //初始化烟花
                firen->r = 0;
                firen->maxr = 120;

            }
            firen->t1 = firen->t2;
            if (firen->isdraw = true)
            {
                for (double a = 0; a < 6.28; a += 0.01)
                {
                    for (int m = 0; m <= firen->r; m++)
                        //x1 y1 来自像素点的628个像素坐标
                    {
                        int x2 = firen->cx + m * cos(a);
                        int y2 = firen->cy - m * sin(a);
                        //如果数据正常,获取像素点的三原色系
                        if (x2 > 0 && x2 < 240 && y2 > 0 && y2 < 240)
                        {
                            int b = firen->xy[x2][y2] & 0xff;
                            int g = (firen->xy[x2][y2] >> 8) & 0xff;
                            int r = firen->xy[x2][y2] >> 16;
                            //求圈上的点在窗体上的坐标
                            int xx2 = firen->x + m * cos(a);
                            int yy2 = firen->y - m * sin(a);
                            if (/*b > 0x20 && g > 0x20 && r > 0x20 &&*/ xx2 < 1200 && xx2 > 0 && yy2 > 0 && yy2 <= 600)
                            {
                                pmem[yy2 * 1100 + xx2] = BGR(firen->xy[x2][y2]);
                            }
                        }
                    }
                }
                firen->isdraw == false;
            }
        }
    }
}


int ss = 0;
int Fire_Finally()       //烟花主函数
{
    initgraph(1100, 800);
    srand(time(0));
/*-----------------------------------------图片------------------------------------*/
    jet_init(&jet);
    loadimage(&jet.img, L"烟花弹2.jpg", 20, 50);
    putimage(jet.x, jet.y, &jet.img, SRCINVERT);

    DWORD* pmem = GetImageBuffer();
    BeginBatchDraw();

    while (1)
    {
        for (int clr = 0; clr < 1000; clr++)
        {
            for (int j = 0; j < 2; j++)
            {
                int px1 = rand() % 1200;
                int py1 = rand() % 650;
                if (py1 < 790)
                {
                    pmem[py1 * 1200 + px1] = pmem[py1 * 1200 + px1 + 1] = BLACK;
                }
            }
        }
        fire_text(&jet, &fire);
        FlushBatchDraw();
    }
    EndBatchDraw();

    closegraph();

    return 0;
}

int main()
{
    Fire_Finally();
    system("pause");
    return 0;
}
烟花程序代码,速学知识,visual studio,c++,前端,Powered by 金山文档

这是一个烟花连续放的程序,如果要更多的烟花道理相同,如果不想自己写可以私信我哦。文章来源地址https://www.toymoban.com/news/detail-717527.html

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

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

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

相关文章

  • C语言系列之炫酷新年烟花秀(带新年祝福)

    新年即将到来,由于全国各地的政策不一样,也许有的地方会禁止燃放烟花,那么就来一款别开生面的电子烟花,让大家感受一下过年的氛围吧。 代码呈上: 小伙伴们快去试试吧!!

    2024年02月03日
    浏览(41)
  • 【2022最新Python跨年烟花代码,可自选背景音乐,快收藏起来吧 附完整源码】

    大家好,我是钱der,英文名chandler。 还有两天就到元旦了!!!很多小伙伴已经和朋友约好一起跨年了 但是现在很多地方都禁止烟花燃放,跨年没有烟花总感觉缺少一点味道~为了实现在家和朋友看烟花的愿望~这篇文章给大家带来2022跨年烟花代码,让大家都能在家和朋友一起

    2024年02月11日
    浏览(42)
  • C++ 烟花代码

    编译后的程序要创建fire文件夹且与程序在同一个目录 file文件夹的内容及样例 : https://wwac.lanzouf.com/i3fdS0r1hy1g 无提取码

    2024年01月17日
    浏览(39)
  • 2023 新的一年:C++烟花代码

    写在前面 代码思路 开始编写 1 烟花结构体  2 初始化烟花 3 烟花上升 4 烟花爆炸 5 绘制烟花 上升 爆炸 效果展示 完整代码 首先,祝大家 新年快乐 ! 即将迎来新的一年——癸卯兔年,祝大家成绩、事业 “兔”飞猛进 ,必定 红红火火 ! 在这篇文章中,将用    烟   花  

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

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

    2024年02月05日
    浏览(44)
  • Python-动态烟花【附完整源码】

    运行效果:Python动态烟花代码

    2024年01月17日
    浏览(38)
  • visual studio 2017 运行的程序关闭后不能再运行?(visual studio建立项目之后退出,如何再次完整打开项目?)

    在你储存项目的文件夹里面应该是这样的 里面.vcxproj后缀名的就是原来创建的项目,直接打开这个头文件源文件就会一起出来了! 真的管用,亲测有效。

    2024年02月13日
    浏览(68)
  • 【C++】Visual Studio调试C++代码的13个技巧

      目录 前言 正文 一、打断点 二、逐语句执行和跳出执行 三、逐过程执行 三、运行到光标处 四、多次执行代码 五、快速监视 六、监视窗口 八、内存查看 九、局部变量 十、调用堆栈 十一、assert的使用 十二、条件断点 十三、函数断点 本文使用的是Visual Studio 2022社区版,但

    2023年04月24日
    浏览(67)
  • 汇编语言程序设计——基础知识(完整)

    CPU是计算机的核心部件,一个基础的CPU由运算器、控制器、寄存器等器件相连,这些器件靠内部总线相连, CPU通过内部总线与内部各个器件进行联系,例如读取内存中的程序;CPU通过外部总线实现与主板上的其他器件的联系,例如我们使用的蓝桥杯单片机开发板上就存在着矩

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

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

    2024年02月20日
    浏览(52)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包