java满天星星代码_满天星空的代码实现

#include

#include

#include

#include

using namespace std;

#define RGB_AMOUNT250 //颜色数量

#define SCREEN_WIDTH1000 //屏幕宽度

#define SCREEN_HEIGHT800//屏幕高度

#define STAR_AMOUNT400//星星的数量

/******************

****星星的状态*****

******************/

enum class STAR_STATUS{

STOP,

UP,

LEFT,

DOWN,

RIGHT,

ALL_STATUS

};

/******************

星星结构体的定义

******************/

class Star {

public:

Star(){}

public:

int x;

int y;

int radius;

int rgb;

STAR_STATUS status;

};

Star star[STAR_AMOUNT];

/******************

功能:初始化单个星星

输入参数:

x 星星的x坐标 y 星星的y坐标

rgb 星星的颜色参数 radius 星星的半径

status 星星的状态

函数返回值:无

******************/

void initStar(Star& star, int x, int y, int rgb, int radius, STAR_STATUS status) {

star.x = x;

star.y = y;

star.rgb = RGB(rgb,rgb,rgb);

star.radius = radius;

star.status = status;

}

/******************

功能:初始化

输入参数:

函数返回值:无

******************/

void init() {

initgraph(SCREEN_WIDTH, SCREEN_HEIGHT);

int x, y, radius, rgb;

STAR_STATUS status;

for (int i = 0;i < STAR_AMOUNT;i++){

x = rand() % SCREEN_WIDTH;

y = rand() % SCREEN_HEIGHT;

rgb = RGB_AMOUNT-50*(rand() % 3);

radius = rand() % 3;

status = STAR_STATUS::STOP;//所有星星默认静止,不闪烁

initStar(star[i],x,y,rgb,radius,status);

}

}

/******************

功能:将一颗星星放置在屏幕

输入参数:

star 一个 星型结构体的引用

函数返回值:无

******************/

void putStar(Star&star) {

setfillcolor(star.rgb);

solidcircle(star.x, star.y, star.radius);

}

/******************

功能:将所有星星放置在屏幕

输入参数:

函数返回值:无

******************/

void putAllStar() {

for (int i = 0;i < STAR_AMOUNT;i++) {

putStar(star[i]);

}

}

/******************

功能:将一颗星星向屏幕上方移动

如果移动到顶部,则到底部继续向上

输入参数:

star 一个 星型结构体的引用

函数返回值:无

******************/

void starMove(Star& star) {

setfillcolor(BLACK);

solidcircle(star.x, star.y, star.radius);

star.y -= 3;

if (star.y <= 0) {

star.y = SCREEN_HEIGHT;

}

setfillcolor(star.rgb);

solidcircle(star.x, star.y, star.radius);

}

/******************

功能:将所有星星向屏幕上方移动

如果移动到顶部,则到底部继续向上

输入参数:

函数返回值:无

******************/

void starAllMove() {

for (int i = 0;i < STAR_AMOUNT;i++) {

starMove(star[i]);

}

}

/******************

功能:将一颗星星按照星星的状态

进行闪烁

输入参数:

star 一个 星型结构体的引用

函数返回值:无

******************/

void starShining(Star& star) {

setfillcolor(BLACK);

solidcircle(star.x, star.y, star.radius);

switch (star.status) {

case STAR_STATUS::DOWN:

star.y += 2;

break;

case STAR_STATUS::UP:

star.y -= 2;

break;

case STAR_STATUS::LEFT:

star.x -= 2;

break;

case STAR_STATUS::RIGHT:

star.x += 2;

break;

default:

break;

}

setfillcolor(star.rgb);

solidcircle(star.x, star.y, star.radius);

star.status =(STAR_STATUS) (rand() % 5);

}

/******************

功能:将所有星星按各自照星星

的状态进行闪烁

输入参数:

star 一个 星型结构体的引用

函数返回值:无

******************/

void allStarShining() {

for (int i = 0;i < STAR_AMOUNT;i++) {

starShining(star[i]);

}

}

int main() {

init();

putAllStar();

while (1) {

starAllMove();

Sleep(100);

}

system("pause");

return 0;

}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值