| 
 | 
 
 
发表于 2021-7-15 21:16:37
From FishC Mobile
|
显示全部楼层
|阅读模式
 
 
 
 
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册  
 
x
 
#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;   
   
}   |   
 
 
 
 |