当前位置 博文首页 > dcw142857的博客:C/C++实现你的浪漫表白:浪漫流星雨表白程序,

    dcw142857的博客:C/C++实现你的浪漫表白:浪漫流星雨表白程序,

    作者:[db:作者] 时间:2021-08-14 12:03

    想要讨女朋友欢心也巩固自己所学的知识,各位小伙伴有自己的想法了吗?准备好想要怎样实施了吗?有什么美好的计划了吗?如果没有的话那么别慌,我知道,在座的各位肯定都是有自己的心仪的姑娘,那么今天就教大家一招,做一个表白程序去进行表白,别等了,赶紧打开你的IED,跟着代码敲起来,不然的话,喜欢的人都跟别人跑了!

    直接源码分享:

    #include<stdio.h>
    #include<graphics.h>    //图形库:easyX201905
    #include<conio.h>
    #include<time.h>
    
    #define MAXSTAR 1314
    #define MAXMETEOR 520
    
    //结构体
    //几个星星:1000
    struct Star
    {
        int x, y;
        int color;
        int step;
    }star[MAXSTAR];
    //流星结构
    struct Meteor
    {
        int x, y;
        int style;
        int step;
    }meteor[MAXMETEOR];
    
    IMAGE img1, img2;//1.定义图片变量
    
    void printText()
    {
        //设置文字颜色
        settextcolor(RGB(255, 0, 255));//三原色:红,绿,蓝
        //调整字体大小
        settextstyle(50, 0, "华文行楷");
        //你的文采:发到公屏上
        /*
            海底月是天上月,眼前人是心上人
            春分十里,我喜欢你
            终是庄周圆了梦
            这是我的手背,这是我的脚背,你是我的宝贝。
            一粥一饭/不及你/颦颦一笑
            问君能有几多愁?家人未入眼帘人消瘦
            我喜欢你,像风走了八万里,不问归期
            白酒清欢无别事,我在等风也在等你
            就承认一笑倾城一见自难忘
            问君能有几多愁?佳人未入眼帘人消瘦
            ABCDEFGHIJKLMNOPQRSTVWXYZ
        */
    
        //在指定位置输出字符串
        outtextxy(450, 20, "七夕到了,炮姐我喜欢你");
    
        //设置文字颜色
        settextcolor(RGB(0, 255, 255));//三原色:红,绿,蓝
        //调整字体大小
        settextstyle(40, 0, "华文行楷");
    
        outtextxy(200, 100, "终是庄周圆了梦");
        outtextxy(200, 150, "春分十里,我喜欢你");
        outtextxy(200, 200, "一粥一饭不及你颦颦一笑");
        outtextxy(200, 250, "就承认一笑倾城一见自难忘");
        outtextxy(200, 300, "海底月是天上月,眼前人是心上人");
        outtextxy(200, 350, "白酒清欢无别事,我在等风也在等你");
        outtextxy(200, 400, "ABCDEFGHIJKLMNOPQRSTVWXYZ");
        outtextxy(200, 450, "    我喜欢你,像风走了八万里,不问归期");
        outtextxy(200, 500, "问君能有几多愁?佳人未入眼帘人消瘦");
        outtextxy(200, 550, "这是我的手背,这是我的脚背,你是我的宝贝。");
        outtextxy(300, 600, "----------------------------------爱你的艺辰");
    
        _getch();//按键
    }
    
    //放大招:流星雨
    //初始化星星
    void initStar(int i)
    {
        //随机产生坐标,颜色,速度
        star[i].x = rand() % 1200;
        star[i].y = rand() % 800;
        star[i].color = RGB(rand() % 256, rand() % 256, rand() % 256);
        star[i].step = rand() % 10;
    }
    //画星星
    void drawStar(int i)
    {
        //画像素点:在初始化星星的坐标
        putpixel(star[i].x, star[i].y, star[i].color);
        //移动星星:给它速度
        star[i].x += star[i].step;
        //跑到窗口外面的星星:初始化
        if (star[i].x >= 1200)
        {
            putpixel(star[i].x, star[i].y, star[i].color);
            initStar(i);
        }
    }
    
    //流星
    //初始化流星
    void initMeteor(int i)
    {
        meteor[i].x = rand()%2200-1000;//[-1200,1199]
        meteor[i].y = rand()%20-200;
        meteor[i].style = rand() % 2;    //0,1
        meteor[i].step = rand() % 30 + 1;//+3 :流星的速度不为0
    }
    //画流星:贴图技术
    void drawMeteor(int i)
    {
        //3.贴图:显示图片
        for (i = 0; i < MAXMETEOR; i++)
        {
            switch (meteor[i].style)
            {
            case 0:
                putimage(meteor[i].x, meteor[i].y, &img1,SRCPAINT);
                break;
            case 1:
                putimage(meteor[i].x, meteor[i].y, &img2, SRCPAINT);
                break;
            }
        }
    }
    //移动流星
    void moveMeteor(int i)
    {
        for (i = 0; i < MAXMETEOR; i++)
        {
            meteor[i].x += meteor[i].step;
            meteor[i].y += meteor[i].step;
            if (meteor[i].x >= 1200 || meteor[i].y >= 800)
            {
                initMeteor(i);
            }
        }
    }
    int main()
    {
        //2.加载图片
        loadimage(&img1, "1.jpg", 50, 50);
        loadimage(&img2, "2.jpg", 50, 50);
        //界面:初始化图形环境宽度,高度
        initgraph(1200, 800);
        //随机函数种子:如果不播种:随机出来的是伪随机
        srand((unsigned int)time(NULL));
        printText();
    
        int i = 0;
        for ( i = 0; i < MAXSTAR; i++)
        {
            initStar(i);
        }
        for (i = 0; i < MAXMETEOR; i++)
        {
            initMeteor(i);
        }
        drawMeteor(i);
    
        while (1)
        {
            BeginBatchDraw();
            cleardevice();
            for (i = 0; i < MAXSTAR; i++)
            {
                drawStar(i);
            }
            drawMeteor(i);
            moveMeteor(i);
            Sleep(100);
            EndBatchDraw();
        }
        
    
        while (1);    //卡屏 _getch()函数
        closegraph();//关闭图形环境
        return 0;