//Star.h
#pragma once
#include <graphics.h>
#include <conio.h>
#include <ctime>
#define SCREEN_WIDTH 1920
#define SCREEN_HEIGHT 1080
#define MAXSTAR 1080
class Star
{
protected:
double m_x = 0;
int m_y;
double m_step;
int m_color;
void Draw();
void NewPos();
void Remove();
public:
Star(){}
~Star(){}
void Init();
void Move();
};
//Star.cpp
#include "Star.h"
void Star::Init()
{
if (m_x == 0)
{
m_x = rand() % SCREEN_WIDTH;
}
else
{
m_x = 0;
}
m_y = rand() % SCREEN_HEIGHT;
m_step = (rand() % 5000) / 1000.0 + 1;
m_color = (int)(m_step * 255 / 6.0 + 0.5);
//m_color = RGB(m_color*255, 255, m_color * 255);//绿色
//m_color = RGB(254, m_color * 255, m_color * 255);橘红
m_color = RGB(m_color * 255, m_color * 255, 255);//蓝色
}
void Star::Move()
{
Remove();
NewPos();
Draw();
}
void Star::Draw()
{
putpixel((int)m_x, m_y, m_color);
}
void Star::NewPos()
{
m_x += m_step;
if (m_x > SCREEN_WIDTH)
{
this->Init();
}
}
void Star::Remove()
{
putpixel((int)m_x, m_y, 0);
}
//presentation.cpp
#include "Star.h"
int main()
{
srand((unsigned)time(NULL));
initgraph(SCREEN_WIDTH, SCREEN_HEIGHT);
Star star[MAXSTAR];
for (int i = 0; i < MAXSTAR; i++)
{
star[i].Init();
}
while (!_kbhit())
{
for (int i = 0; i < MAXSTAR; i++)
{
star[i].Move();
}
Sleep(30);
}
closegraph();
return 0;
}