用C语言 动画地呈现满天星

动画地呈现满天星

题目详解:

绘制一个充满星星的夜空。星空绘制程序中,可使用结构体数组实现对星星数据的保存。星星可用画点函数画出来白色的点,并使用随机函数随机产生星星,对结构体中保存的星星进行移动。

#include <graphics.h>
#include <time.h>
#include <conio.h>
 
#define MAXSTAR 200    // 星星总数
 
struct STAR
{
    double x;
    int y;
    double step;
    int color;
};
 
STAR star[MAXSTAR];
 
// 初始化星星
void InitStar(int i)
{
    star[i].x = 0;
    star[i].y = rand() % 480;
    star[i].step = (rand() % 5000) / 1000.0 + 1;
    star[i].color = (int)(star[i].step * 255 / 6.0 + 0.5);    // 速度越快,颜色越亮
    star[i].color = RGB(star[i].color, star[i].color, star[i].color);
}
 
// 移动星星
void MoveStar(int i)
{
    // 擦掉原来的星星
    putpixel((int)star[i].x, star[i].y, 0);
 
    // 计算新位置
    star[i].x += star[i].step;
    if (star[i].x > 640)    InitStar(i);
 
    // 画新星星
    putpixel((int)star[i].x, star[i].y, star[i].color);
}
 
// 主函数
void main()
{
    srand((unsigned)time(NULL)); // 随机种子
    initgraph(640, 480);    // 打开图形窗口
 
    // 初始化所有星星
    for(int i=0; i<MAXSTAR; i++)
    {
        InitStar(i);
        star[i].x = rand() % 640;
    }
 
    // 绘制星空,按任意键退出
    while(!kbhit())
    {
        for(int i=0; i<MAXSTAR; i++)
            MoveStar(i);
        Sleep(20);
    }
 
    closegraph();    // 关闭图形窗口
}

用过了这个代码,但要求要带printf的,我实在是懵了,寻求大神帮助!!!