c++ 简单的动态银河星空绘制(类应用)
话不多说直接贴代码:
#include <graphics.h>
#include <time.h>
#include <conio.h> #define MAXSTAR 500 // 星星总数 class star
{
private:
int x;
int y;
int color;
double step;
public:
star();//默认构造函数初始化
void move(void);
};
star::star()
{
x = rand() % ;
y = rand() % ;//产生0-480的的坐标
step = (rand() % ) / 1000.0 + ;
color = (int)((step / ) * + 0.5);
color = RGB(color, color, color);
} void star::move()
{
putpixel(x, y, BLACK);
x = x + (int)step;
if (x > )
{
x = ;
y = rand() % ;//产生0-480的的坐标
step = (rand() % ) / 1000.0 + ;
color = (int)((step / ) * + 0.5);
color = RGB(color, color, color);
}
putpixel(x, y, color);
} // 主函数
void main()
{
srand((unsigned)time(NULL)); // 随机种子
initgraph(, ); // 创建绘图窗口 star sky[MAXSTAR]; while (!_kbhit())
{
for (int i = ; i < MAXSTAR; i++)
{
sky[i].move();
}
Sleep();
}
closegraph(); // 关闭绘图窗口
}
如上述代码所示,代码的基本思想创建一个类里面包含隐藏数据以及类方法作为公共接口,我们首先创建一个类定义的数组,数组的每一个成员代表着一颗星星,我们要想绘制一个动态的银河星空我们就要让星星从左至右依次循环,再一次循环中星星的颜色不变,位移不变只是x轴数据一直在随着step步进,然后擦掉之前自己坐标画出的点,当超过绘制范围时这点的处理很关键,此时要把x=0,而y,color,step这些都要重新进行随机化这样整体的星空效果才能出来,每个星星移位结束后进行延时进行下一轮循环。下面是一个静态的x效果图:

c++ 简单的动态银河星空绘制(类应用)的更多相关文章
- 【UML九种图系列】之如何利用三层来绘制类图、时序图?
UML并发视图:实体之间行为的交互,是动态.分为:时序图.协作图.状态图.活动图 一.时序图简述: 时序图(Sequence Diagram):描述对象之间的交互行为,按照时间顺序排列. 元素: 角色 ...
- 自己动手之使用反射和泛型,动态读取XML创建类实例并赋值
前言: 最近小匹夫参与的游戏项目到了需要读取数据的阶段了,那么觉得自己业余时间也该实践下数据相关的内容.那么从哪入手呢?因为用的是Unity3d的游戏引擎,思来想去就选择了C#读取XML文件这个小功能 ...
- C#动态创建和动态使用程序集、类、方法、字段等
C#动态创建和动态使用程序集.类.方法.字段等 分类:技术交流 (3204) (3) 首先需要知道动态创建这些类型是使用的一些什么技术呢?其实只要相关动态加载程序集呀,类呀,都是使用反射,那么动 ...
- 一个简单JDK动态代理的实例
动态代理的步骤: 创建一个实现了InvocationHandler接口的类,必须重写接口里的invoke()方法. 创建被代理的类和接口 通过Proxy的静态方法 newProxyInsatance( ...
- 一个简单 JDK 动态代理的实例
动态代理的步骤: 创建一个实现了 InvocationHandler 接口的类,必须重写接口里的 invoke()方法. 创建被代理的类和接口 通过 Proxy 的静态方法 newProxyInsat ...
- SpringBoot中使用Spring Data Jpa 实现简单的动态查询的两种方法
软件152 尹以操 首先谢谢大佬的简书文章:http://www.jianshu.com/p/45ad65690e33# 这篇文章中讲的是spring中使用spring data jpa,使用了xml ...
- c# 把一个匿名对象赋值给一个Object类型的变量后,怎么取这个变量? c# dynamic动态类型和匿名类 详解C# 匿名对象(匿名类型)、var、动态类型 dynamic 深入浅析C#中的var和dynamic
比如有一个匿名对象,var result =......Select( a=>new { id=a.id, name=a.name});然后Object obj = result ;我怎 ...
- 简单实用的PHP防注入类实例
这篇文章主要介绍了简单实用的PHP防注入类实例,以两个简单的防注入类为例介绍了PHP防注入的原理与技巧,对网站安全建设来说非常具有实用价值,需要的朋友可以参考下 本文实例讲述了简单实用的PHP防注 ...
- RDLC报表系列(一) 简单的动态数据绑定和配置
RDLC系列链接 RDLC报表系列(一) 简单的动态数据绑定和配置 RDLC报表系列(二) 行分组 RDLC报表系列(三) 总计和折叠 RDLC报表系列(四) 矩阵 RDLC报表系列(五) 简单的图 ...
随机推荐
- 利用Calendar类判断是平年还是闰年
package com.bgs.Math; import java.util.Calendar; import java.util.Scanner; /*###14.21_常见对象(如何获取任意年份是 ...
- RxJava2实战---第七章 合并操作符和连接操作符
RxJava2实战---第七章 合并操作符和连接操作符 RxJava的合并操作符: startWith():在数据序列的开头增加一项数据. merge:将多个Observable合并为一个. merg ...
- WebJars简介
https://www.cnblogs.com/liaojie970/p/7852576.html https://blog.csdn.net/eff666/article/details/70183 ...
- debian中安装pip
sudo apt upate sudo apt-get install python3-pip
- laravel多主多从配置示例
'mysql' => [ 'write' => [ [ 'host' => '192.168.1.180', 'username' => '', 'password' => ...
- 重学Python - Day 06 - python基础 -> linux命令行学习 -- 简单基础命令学习
学习资源 虚拟机工具:VMWare 12 linux :Ubuntu 14 或者CentOS 6 PS:ubuntu用远程连接工具的设置方法 step 1: 输入sudo apt-get instal ...
- P1097 【统计数字】
超可爱的题目链接 这题是真不难,就是刚开始被自己的智商坑了一次... 用数组的常规做法实在是有点不切实际..数据大了. 所以用数组读入,再用循坏处理. 附上代码: #include<set> ...
- OpenStack组件——cinder存储服务
1.cinder 介绍 1)理解 Block Storage 操作系统获得存储空间的方式一般有两种: (1)通过某种协议(SAS,SCSI,SAN,iSCSI 等)挂接裸硬盘,然后分区.格式化.创建文 ...
- VIM全总结
Vim是Linux自带的编辑器,是Vi的高级版,刚开始使用我是一脸懵逼的,跟普通的编辑器完全不同,基本全靠键盘,写完之后也不知道怎么保存,特地花了点时间了解了一下,还是挺简单的.其中,主要包含三种模式 ...
- CAD常用命令、快捷键和命令说明大全
CAD常用命令.快捷键和命令说明大全 一:常用功能键 F1: 获取帮助 F2: 实现作图窗和文本窗口的切换 F3: 控制是否实现对象自动捕捉 F4: 数字化仪控制 F5: 等轴测平面切换 F6: 控制 ...