import java.awt.Color;

import java.awt.Graphics;

import java.awt.image.BufferedImage;

import javax.swing.JFrame;

import javax.swing.JPanel;

public class MeteorFly extends JFrame {

final int MAX = ; // (~)流星的个数

final int SLEEP = ; // 流星飞行的速度(数值越大,速度越慢)

final int COLORLV = ; // (~)色阶(可改变光晕大小)

final String COLOR = null; // ("#"~"#ffffff")光晕颜色(如果不填或null,则为默认颜色)

final int SIZE = ; // (~)流星大小

private MyPanel panel;

public MeteorFly() {

panel = new MyPanel();

this.getContentPane().add(panel);

this.setSize(, ); // 创建窗体

this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

this.setVisible(true);

}

public static void main(String[] args) {

new MeteorFly();

}

class MyPanel extends JPanel implements Runnable {

Meteor p[];

int AppletWidth, AppletHeight;

BufferedImage OffScreen;

Graphics drawOffScreen;

Thread pThread;

public MyPanel() {

setBackground(Color.black); //窗体初始化

AppletWidth = ;

AppletHeight = ;

p = new Meteor[MAX];

for (int i = ; i < MAX; i++)

p[i] = new Meteor();

OffScreen = new BufferedImage(AppletWidth, AppletHeight,

BufferedImage.TYPE_INT_BGR);

drawOffScreen = OffScreen.getGraphics();

pThread = new Thread(this);

pThread.start();

}

@Override

public void paintComponent(Graphics g) {

// TODO Auto-generated method stub

super.paintComponents(g);

g.drawImage(OffScreen, , , this);

}

@Override

final public void run() {

while (true) {

// drawOffScreen.clearRect(, , AppletWidth, AppletHeight); //

// 清屏

for (int i = ; i < MAX; i++) {

drawOffScreen.setColor(p[i].color); // RGB颜色

drawOffScreen.fillOval(p[i].x, p[i].y, SIZE, SIZE);

p[i].x += p[i].mx;

p[i].y += p[i].my;

// if (p[i].x > AppletWidth || p[i].y > AppletHeight) {

// p[i].reset();

// }

int x = p[i].x;

int y = p[i].y;

int R = p[i].color.getRed(); // 提取颜色

int G = p[i].color.getGreen();

int B = p[i].color.getBlue();

while (true) {

if (R == && G == && B == ) {

break;

}

R -= COLORLV; // 尾部颜色淡化

if (R < ) {

R = ;

}

G -= COLORLV;

if (G < ) {

G = ;

}

B -= COLORLV;

if (B < ) {

B = ;

}

Color color = new Color(R, G, B);

x -= p[i].mx; // 覆盖尾部

y -= p[i].my;

drawOffScreen.setColor(color);

drawOffScreen.fillOval(x, y, SIZE, SIZE);

}

if (x > AppletWidth || y > AppletHeight) { // 流星飞出窗口,重置流星

p[i].reset();

}

}

repaint();

try {

Thread.sleep(SLEEP);

} catch (InterruptedException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

}

class Meteor { // 流星类

int x, y; // 流星的位置

int mx, my; // 下落速度

Color color; // 流星颜色

public Meteor() {

reset();

}

public void reset() {

int rand = (int) (Math.random() * ); //随机生成流星出现位置

if (rand > ) {

x = (int) (Math.random() * );

y = ;

} else {

y = (int) (Math.random() * );

x = ;

}

mx = (int) (Math.random() * + ); //随机生成下落速度和角度

my = (int) (Math.random() * + );

if (COLOR == null || COLOR.length() == ) {

color = new Color(

// 随机颜色

(new Double(Math.random() * )).intValue() + ,

(new Double(Math.random() * )).intValue() + ,

(new Double(Math.random() * )).intValue() + );

} else {

color = Color.decode(COLOR);

}

}

}

}

java满天星星代码_纯Java代码实现流星划过天空相关推荐

  1. java 获取apk版本号_纯JAVA环境获取APK信息:包名,版本,版本号,大小,权限...

    [实例简介] 纯JAVA环境获取APK信息:包名,版本,版本号,大小,权限... 代码讲解地址:http://blog.csdn.net/chillax_li/article/details/4185 ...

  2. java 错误登陆次数_纯java代码实现登陆次数验证,登陆错误5次之后锁定30分钟

    本方法因为是根据思路纯手写,代码可以再简化,功能尝试没问题,最主要就是在登陆验证中的逻辑,checkLogin()方法是登录前的验证,而真正的登陆方式采用的是Shiro,若不是采用Shiro登陆,将该 ...

  3. java数据库访问方式_纯java方式连接数据库简单操作

    package com.beiwo; import java.sql.Connection; import java.sql.DriverManager; import java.sql.Result ...

  4. java获取机器序列号_纯java获取CPU序列号,生成机器码

    用于生成机器码 感觉用mac不靠谱,因为mac能改, (除CPU序列号外,还可以获得主板序列号.) public static void main(String[] args) { // TODO A ...

  5. java画星星菱形_使用java,画出任意大小的菱形

    标签: 1 public classrhombic {2 3 public static voidmain(String[] args){4 5 /** 6 * scriber()画菱形的方法,参数 ...

  6. java编写流星_纯Java代码实现流星划过天空

    废话不多说了,直接给大家贴java代码了. import java.awt.Color; import java.awt.Graphics; import java.awt.image.Buffere ...

  7. java项目----教务管理系统_基于Java的教务管理系统

    java项目----教务管理系统_基于Java的教务管理系统 2022-04-22 18:18·java基础 最近为客户开发了一套学校用教务管理系统,主要实现学生.课程.老师.选课等相关的信息化管理功 ...

  8. java编写流星_[Java教程]【原创】java 流星划过天空

    [Java教程][原创]java 流星划过天空 0 2015-10-29 10:00:06 1 import java.awt.Color; 2 import java.awt.Graphics; 3 ...

  9. c java 开发android_java代码与纯C代码混编完成android应用的开发

    在我们这个java与C语言的调用中,分为两个部分, 第一部分是java语言调用C语言的C库,也就是java调C; 第二部分是C语言调用java语言. 这里我主要讲解一下第一种java语言调用C库 这里 ...

  10. java愤怒的小鸟代码_用java实现小游戏“愤怒的小鸟”附源码和效果演示

    推荐下我自己的群:6915 72518,不管你是小白还是大牛,小编我都挺欢迎,不定期分享干货,包括我自己整理的一份最新资料和零基础入门教程!,欢迎初学和进阶中的小伙伴 今天跟大家分享一个用纯Java代 ...

最新文章

  1. 当卷烟厂也那么卷后……
  2. WPF中路由事件的传播
  3. php对象方法调用静态方法,php面向对象之静态方法使用
  4. 【iOS】Scale Fill、Aspect Fit 和 Aspect Fill 的区别(Content Mode)
  5. srs2.0安装问题
  6. 配置TOMCAT和IIS协同工作
  7. Slick.AI | 人工智能在智慧环保应用案例
  8. python数字时钟
  9. js怎么实现那种整体页面变灰色
  10. TestCenter测试管理工具功能详解(E)
  11. 操作系统与网络协议晦涩难懂,华为18级工程师神级文档助你过关
  12. 2022年全国最新消防设施操作员(初级消防设施操作员)题库及答案
  13. 跨平台手动迁移虚拟机
  14. CISCO DHCP配置全程详解
  15. 我与MVVM的恩怨情仇
  16. 计算机网络之面试常考--整理来自牛客网
  17. AARRR框架度量指标介绍,让你的初创公司变得像一艘海盗船
  18. 物理借助传感器用计算机测速度,高中物理实验一览表.doc
  19. MD5、SHA1、CRC32值是干什么的?
  20. 关于LRZ的备战计划-百题斩

热门文章

  1. 中年危机也许只是个幻觉
  2. 【DBSDFZOJ 4370】小宁的机器人(模拟)
  3. Unity 分辨率框Config Dialog Banner尺寸要求
  4. stm32---ADXL345
  5. ThinkPad笔记本如何重装系统
  6. github WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!
  7. word教程之word2007和2010版本查找和替换快捷键介绍
  8. 曼哈顿算法公式_最小曼哈顿距离算法
  9. 世界上都有哪些常用的聊天软件?
  10. 好用的json在线工具