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;
}
java满天星星代码_满天星空的代码实现相关推荐
- java生成iso9660工具_基于数据库的代码自动生成工具,生成JavaBean、生成数据库文档、生成前后端代码等(TableGo v7.0.0版)...
TableGo_20210212 v7.0.0 正式版发布,此次版本更新如下: 1.新增对DB2数据库的支持 2.新增按字段生成文件,支持把字段.JSON.XML数据转换成任何代码 3.新增大量新的自 ...
- 什么样的代码是好代码_什么是好代码?
什么样的代码是好代码 编码最佳实践 (Coding Best-Practices) In the following section, I will introduce the topic at ha ...
- python 代码_如何让Python代码加速运行?
Python 是一种脚本语言,相比 C/C++ 这样的编译语言,在效率和性能方面存在一些不足.但是,有很多时候,Python 的效率并没有想象中的那么夸张.本文对一些 Python 代码加速运行的技巧 ...
- 图像分割技术语义分割代码_用5行代码对150类对象进行语义分割
图像分割技术语义分割代码 It is now possible to perform segmentation on 150 classes of objects using ade20k model ...
- 安卓清理垃圾清理代码_用方面清理代码
安卓清理垃圾清理代码 在我以前的文章中,我描述了字母转换,并且提到了我们使用AspectJ来解决该任务,但是我没有提及AspectJ的工作原理和一般性方面. 因此,在接下来的几行中,我将解释: 什么是 ...
- 污点修复代码_立即修复该代码!
污点修复代码 您正在从事这个新项目,并且在某处看到一段不好的代码. 处理它的错误方法是"不,那是别人的代码,我对此没有做任何事情","我没有时间解决这个问题–我还有其他任 ...
- 如何在vscode运行php代码_如何提高 PHP 代码的质量?
说实话,在代码质量方面,PHP 的压力非常大.通过阅读本系列文章,您将了解如何提高 PHP 代码的质量. 我们可以将此归咎于许多原因,但这肯定不仅仅是因为 PHP 生态系统缺乏适当的测试工具.在本文中 ...
- ms查约束具体代码_程序员写代码之前应该做的5件事,看完编程效率瞬间提升
作者:borisyang,腾讯 WXG 应用开发工程师 作为程序员,刚刚开始学会写代码,常常是接过需求就开始撸代码.有时候发现,写完代码,需求变了.更多时候,觉得写业务代码枯燥无聊,没有技术含量.另外 ...
- 河南科技学院计算机专业代码,商丘工学院代码_商丘工学院专业代码_2021商丘工学院招生代码,报考代码...
更新日期:2021-07-01 18:23 学校类型: 民办学校 教学领域: 电 话:0370-5072102 官网: www.sstvc.com 学校地址: 河南省商丘市长江东路221号 报考 ...
最新文章
- ili9341代码移植注意事项
- arma找不到合适的模型_TAP300R系列直角方肩立铣刀,您还在为找不到合适刀具发愁吗?...
- Java并行程序基础
- ios 自动内存管理 ARC
- 2020牛客暑期多校训练营(第四场)
- 【渝粤题库】陕西师范大学292301 国际金融学Ⅱ 作业(专升本)
- swift怎么调用Java,Swift完成UIAlertController的调用
- 【英语学习】【Level 07】U02 Live Work L1 Welcome to my home
- [Ext JS6]路由(Routing)及使用
- TreeMap1.8源码
- python 日历热力图_Python如何绘制日历图和热力图
- 数据仓库 迁移 大数据_从数据仓库迁移到大数据平台的最佳实践
- QT小项目练手——用QTimer做一个倒计时程序
- 计算机关机键桌面,电脑关机快捷键是什么?
- Kattis Doors
- Excel技能学习小结
- 【Nginx】记录 nginx 配置文件中 location下根据 ua (user-agent) 判断移动端和电脑端不同浏览器来源
- 混合模式程序集是针对“v1.1.4322”版的运行时生成的,在没有配置其他信息的情况下,无法在 4.0 运行时中加载该程序集。
- 关于文件命名和整理的小技巧
- 通过GRUB引导U盘为引导活动区,从硬盘安装win8 64bit