#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;

}

java满天星星代码_满天星空的代码实现相关推荐

  1. java生成iso9660工具_基于数据库的代码自动生成工具,生成JavaBean、生成数据库文档、生成前后端代码等(TableGo v7.0.0版)...

    TableGo_20210212 v7.0.0 正式版发布,此次版本更新如下: 1.新增对DB2数据库的支持 2.新增按字段生成文件,支持把字段.JSON.XML数据转换成任何代码 3.新增大量新的自 ...

  2. 什么样的代码是好代码_什么是好代码?

    什么样的代码是好代码 编码最佳实践 (Coding Best-Practices) In the following section, I will introduce the topic at ha ...

  3. python 代码_如何让Python代码加速运行?

    Python 是一种脚本语言,相比 C/C++ 这样的编译语言,在效率和性能方面存在一些不足.但是,有很多时候,Python 的效率并没有想象中的那么夸张.本文对一些 Python 代码加速运行的技巧 ...

  4. 图像分割技术语义分割代码_用5行代码对150类对象进行语义分割

    图像分割技术语义分割代码 It is now possible to perform segmentation on 150 classes of objects using ade20k model ...

  5. 安卓清理垃圾清理代码_用方面清理代码

    安卓清理垃圾清理代码 在我以前的文章中,我描述了字母转换,并且提到了我们使用AspectJ来解决该任务,但是我没有提及AspectJ的工作原理和一般性方面. 因此,在接下来的几行中,我将解释: 什么是 ...

  6. 污点修复代码_立即修复该代码!

    污点修复代码 您正在从事这个新项目,并且在某处看到一段不好的代码. 处理它的错误方法是"不,那是别人的代码,我对此没有做任何事情","我没有时间解决这个问题–我还有其他任 ...

  7. 如何在vscode运行php代码_如何提高 PHP 代码的质量?

    说实话,在代码质量方面,PHP 的压力非常大.通过阅读本系列文章,您将了解如何提高 PHP 代码的质量. 我们可以将此归咎于许多原因,但这肯定不仅仅是因为 PHP 生态系统缺乏适当的测试工具.在本文中 ...

  8. ms查约束具体代码_程序员写代码之前应该做的5件事,看完编程效率瞬间提升

    作者:borisyang,腾讯 WXG 应用开发工程师 作为程序员,刚刚开始学会写代码,常常是接过需求就开始撸代码.有时候发现,写完代码,需求变了.更多时候,觉得写业务代码枯燥无聊,没有技术含量.另外 ...

  9. 河南科技学院计算机专业代码,商丘工学院代码_商丘工学院专业代码_2021商丘工学院招生代码,报考代码...

    更新日期:2021-07-01 18:23 学校类型: 民办学校 教学领域: 电    话:0370-5072102 官网: www.sstvc.com 学校地址: 河南省商丘市长江东路221号 报考 ...

最新文章

  1. ili9341代码移植注意事项
  2. arma找不到合适的模型_TAP300R系列直角方肩立铣刀,您还在为找不到合适刀具发愁吗?...
  3. Java并行程序基础
  4. ios 自动内存管理 ARC
  5. 2020牛客暑期多校训练营(第四场)
  6. 【渝粤题库】陕西师范大学292301 国际金融学Ⅱ 作业(专升本)
  7. swift怎么调用Java,Swift完成UIAlertController的调用
  8. 【英语学习】【Level 07】U02 Live Work L1 Welcome to my home
  9. [Ext JS6]路由(Routing)及使用
  10. TreeMap1.8源码
  11. python 日历热力图_Python如何绘制日历图和热力图
  12. 数据仓库 迁移 大数据_从数据仓库迁移到大数据平台的最佳实践
  13. QT小项目练手——用QTimer做一个倒计时程序
  14. 计算机关机键桌面,电脑关机快捷键是什么?
  15. Kattis Doors
  16. Excel技能学习小结
  17. 【Nginx】记录 nginx 配置文件中 location下根据 ua (user-agent) 判断移动端和电脑端不同浏览器来源
  18. 混合模式程序集是针对“v1.1.4322”版的运行时生成的,在没有配置其他信息的情况下,无法在 4.0 运行时中加载该程序集。
  19. 关于文件命名和整理的小技巧
  20. 通过GRUB引导U盘为引导活动区,从硬盘安装win8 64bit

热门文章

  1. 打印Show Atend and Tell编码器的优化器
  2. 挂代理无法访问网页了怎么办_微信H5网页授权
  3. input输入框自动消除空格
  4. Spring 配置元数据
  5. CTF Geek Challenge——第十一届极客大挑战Re Write Up
  6. 北京信息科技大学第十一届程序设计竞赛
  7. Linux中close的用法,linux下 open() write() read() close函数
  8. ngrok编译和安装
  9. JSP、EL和JSTL-学习笔记01【JSP基础语法】
  10. Android MVP 设计模式