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报表系列(五) 简单的图 ...
随机推荐
- frei0r-1.7.0 20191207-0d4b342 DLLs
https://files.cnblogs.com/files/nlsoft/frei0r-20191207-0d4b342-bin.7z
- iOS限制输入解决方法
关于iOS 键盘输入限制(只能输入字母,数字,禁止输入特殊符号): 方法一: 直接限制输入 - (void)viewDidLoad { [super viewDidLoad]; textField = ...
- 2019 1月 第三次java基础有感
毕业半年了,一直在游戏公司做游戏服务器开发,java语言. 工作中,写着写着代码,接触java多了,有时候就会发现自己的java基础会不够用.以前实习的时候也体会到一次,然后过了一遍基础.现在正式工作 ...
- 前端vscode常用插件
Auto Rename Tag 这是一个html标签的插件,可以让你修改一边标签,另外一边自动改变. Beautify 格式化代码插件 Braket Pair Colorizer 给js文件中的每一个 ...
- maridb 主从复制
maridb(>10.0)主从复制 1.环境说明 测试环境 系统版本:Ubuntu 16.04.5 LTS内核版本:4.4.0-141-generic x86_64MariaDB版本:mysql ...
- 实验----Java的二维数组的应用及杨辉三角的编写
(1) 编写一个程序,生成一个10*10的二维随机整数数组,并将该数组的每行最大值保存于一个一维数组中,将每列平均值保存于另外一个一维数组中并分别输出. (2) 编程输出杨辉三角的前10行. 找出一个 ...
- Msf小结
Msfvenom是有效负载生成和编码的组合. 生成攻击载荷 Linux下反弹Meterpreter shell 1 msfvenom -p linux/x86/meterpreter/reverse_ ...
- Linux Shell输出颜色字符学习笔记(附Python脚本实现自动化定制生成)
齿轮发出咔嚓一声,向前进了一格.而一旦向前迈进,齿轮就不能倒退了.这就是世界的规则. 0x01背景 造了个轮子:御剑师傅的ipintervalmerge的Python版本.觉得打印的提示信息如果是普通 ...
- python 爬虫小案例
爬取百度贴吧帖子信息 #!/usr/bin/env python # -*- coding: utf-8 -*- # author: imcati import requests,re,time cl ...
- 小记---------spring框架之IOC理解
Spring是一个开源框架,是一个轻量级的Java开发框架. Spring的核心是控制发转(IOC)和面向切面(AOP) 控制发转(IOC):指的是 对象的创建权反转(交给)给 Spring. 作 ...