[Java教程]【原创】java 流星划过天空

0 2015-10-29 10:00:06 1 import java.awt.Color; 2 import java.awt.Graphics; 3 import java.awt.image.BufferedImage; 4 5 import javax.swing.JFrame; 6 import javax.swing.JPanel; 7 8 public class MeteorFly extends JFrame { 9 10 final int MAX = 5; // (1~1000)流星的个数 11 final int SLEEP = 30; // 流星飞行的速度(数值越大,速度越慢) 12 final int COLORLV = 2; // (2~20)色阶(可改变光晕大小) 13 final String COLOR = null; // ("#000000"~"#ffffff")光晕颜色(如果不填或null,则为默认颜色) 14 final int SIZE = 3; // (2~50)流星大小 15 16 private MyPanel panel; 17 18 public MeteorFly() { 19 panel = new MyPanel(); 20 this.getContentPane().add(panel); 21 22 this.setSize(800, 400); // 创建窗体 23 this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 24 this.setVisible(true); 25 } 26 27 public static void main(String[] args) { 28 new MeteorFly(); 29 } 30 31 class MyPanel extends JPanel implements Runnable { 32 33 Meteor p[]; 34 35 int AppletWidth, AppletHeight; 36 37 BufferedImage OffScreen; 38 Graphics drawOffScreen; 39 Thread pThread; 40 41 public MyPanel() { 42 setBackground(Color.black); //窗体初始化 43 AppletWidth = 800; 44 AppletHeight = 400; 45 p = new Meteor[MAX]; 46 for (int i = 0; i < MAX; i++) 47 p[i] = new Meteor(); 48 OffScreen = new BufferedImage(AppletWidth, AppletHeight, 49 BufferedImage.TYPE_INT_BGR); 50 drawOffScreen = OffScreen.getGraphics(); 51 pThread = new Thread(this); 52 pThread.start(); 53 } 54 55 @Override 56 public void paintComponent(Graphics g) { 57 // TODO Auto-generated method stub 58 super.paintComponents(g); 59 g.drawImage(OffScreen, 0, 0, this); 60 } 61 62 @Override 63 final public void run() { 64 while (true) { 65 // drawOffScreen.clearRect(0, 0, AppletWidth, AppletHeight); // 66 // 清屏 67 68 for (int i = 0; i < MAX; i++) { 69 drawOffScreen.setColor(p[i].color); // RGB颜色 70 drawOffScreen.fillOval(p[i].x, p[i].y, SIZE, SIZE); 71 p[i].x += p[i].mx; 72 p[i].y += p[i].my; 73 // if (p[i].x > AppletWidth || p[i].y > AppletHeight) { 74 // p[i].reset(); 75 // } 76 77 int x = p[i].x; 78 int y = p[i].y; 79 int R = p[i].color.getRed(); // 提取颜色 80 int G = p[i].color.getGreen(); 81 int B = p[i].color.getBlue(); 82 while (true) { 83 if (R == 0 && G == 0 && B == 0) { 84 break; 85 } 86 R -= COLORLV; // 尾部颜色淡化 87 if (R < 0) { 88 R = 0; 89 } 90 G -= COLORLV; 91 if (G < 0) { 92 G = 0; 93 } 94 B -= COLORLV; 95 if (B < 0) { 96 B = 0; 97 } 98 Color color = new Color(R, G, B); 99 x -= p[i].mx; // 覆盖尾部100 y -= p[i].my;101 drawOffScreen.setColor(color);102 drawOffScreen.fillOval(x, y, SIZE, SIZE);103 }104 if (x > AppletWidth || y > AppletHeight) { // 流星飞出窗口,重置流星105 p[i].reset();106 }107 }108 repaint();109 110 try {111 Thread.sleep(SLEEP);112 } catch (InterruptedException e) {113 // TODO Auto-generated catch block114 e.printStackTrace();115 }116 }117 }118 119 }120 121 class Meteor { // 流星类122 int x, y; // 流星的位置123 int mx, my; // 下落速度124 Color color; // 流星颜色125 126 public Meteor() {127 reset();128 }129 130 public void reset() {131 int rand = (int) (Math.random() * 100); //随机生成流星出现位置132 if (rand > 35) {133 x = (int) (Math.random() * 600);134 y = 0;135 } else {136 y = (int) (Math.random() * 150);137 x = 0;138 }139 mx = (int) (Math.random() * 2 + 1); //随机生成下落速度和角度140 my = (int) (Math.random() * 2 + 1);141 if (COLOR == null || COLOR.length() == 0) {142 color = new Color(143 // 随机颜色144 (new Double(Math.random() * 128)).intValue() + 128,145 (new Double(Math.random() * 128)).intValue() + 128,146 (new Double(Math.random() * 128)).intValue() + 128);147 } else {148 color = Color.decode(COLOR);149 }150 }151 }152 153 }

本人原创未经允许请勿转载

本文网址:http://www.shaoqun.com/a/153127.html

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们:admin@shaoqun.com。

JAVA

0

java编写流星_[Java教程]【原创】java 流星划过天空相关推荐

  1. java编写代理服务器_如何编写Java代理

    java编写代理服务器 对于vmlens (轻量级Java竞争条件捕获器),我们使用Java代理来跟踪字段访问. 这是我们学习的实现此类代理的经验教训. 开始 使用"静态公共静态无效值pre ...

  2. java 编写代码_如果您在2015年编写过Java代码-这是您不容错过的趋势

    java 编写代码 去年我们有机会遇到的最有趣趋势的实用概述 在这篇文章中,我们回顾了构成我们2015年对话的5个主题和新发展.与其他许多年终总结保持较高水平的不同,我们将做一个更实际的操作不用流行语 ...

  3. java编写正则表达式_如何用Java编写最快的表达式评估器之一

    java编写正则表达式 当然,标题有点吸引人,但确实如此(您当然不相信自己没有伪造自己的基准,但这是另一回事了). 因此,上周我正在寻找一个小型且可用的库来评估数学表达式. 我几乎直接偶然发现了这个s ...

  4. java编写存钱_用Java编写一个简单的存款

    package desposit.money; public class DespositMoney { public static void main(String[] args) { Custom ...

  5. java 编写代码_如果您在2016年编写过Java代码-这是您不容错过的趋势

    java 编写代码 2016年最有趣的Java相关主题 关于代码,有很多热门话题,而要跟上所有事情,这是一项全职的工作. 如果您想知道如何从谷壳中分离出小麦,我们已经为您完成了工作. 在下面的文章中, ...

  6. java编写管理系统_用java编写学生信息管理系统

    <用java编写学生信息管理系统>由会员分享,可在线阅读,更多相关<用java编写学生信息管理系统(7页珍藏版)>请在人人文库网上搜索. 1.用java编写学生信息管理系统im ...

  7. java编写机器人_用JAVA编写自己的机器人一起“厮杀”

    什么是Robocode? 最近我在阅读一个关于极限编程(XP)的邮件列表,有人提议为对学习更多的XP方法学知识感兴趣的开发人员构建一个工作间.这位作者还建议,把一群人凑到一起,分成小组研究该方法学. ...

  8. java python算法_用Python,Java和C ++示例解释的排序算法

    java python算法 什么是排序算法? (What is a Sorting Algorithm?) Sorting algorithms are a set of instructions t ...

  9. java 判断类型_如何快速入门Java编程学习(干货)

    一.初识Java 1.生活中的程序: 从起床到教室上课的过程 穿衣打扮>起床>洗漱>出宿舍>>吃早餐>到教室 按照特定的顺序去完成某一件事的过程我们叫做生活中的程序 ...

  10. java future用法_纯干货:Java学习过程中的21个知识点和技术点

    我们在Java学习过程中要学会抓重点,善于总结,Java学习过程中常见的21个知识点和技术点你知道吗?下面和千锋广州小编一起来看看吧! 1. JVM相关 对于刚刚接触Java的人来说,JVM相关的知识 ...

最新文章

  1. win10清理_大家都说Win10系统不用装360,那么如何清理电脑软件垃圾呢?
  2. 第十六周项目3:max带来的冲突
  3. 各种说明方法的答题格式_【技巧】小学语文万能答题公式(六)阅读万能答题公式...
  4. [Java] Welcome to Artifactory 使用说明
  5. 登录文件传输服务器,生信小技巧之:在本地与服务器间快速传输文件,无密码登录远端服务器...
  6. Window VMWare中Centos虚拟机ifconfig命令不显示ens33
  7. JQuery入门 初级插件02
  8. C#数组Array的基础知识及二位数组和数组的数组的区别
  9. 15分钟快速了解如何在Kubernetes中配置健康检查
  10. 小米路由R1D固件升级后导致Misstar tools插件页面显示错误解决方法
  11. 无线路由器DNS服务器异常,fast无线路由器dns异常的解决方法
  12. C语言:约瑟夫环(简单版)
  13. 如何在FreePBX ISO 中文版本安装讯时网关,潮流16FXS 网关和潮流话机
  14. Windows 上6款卸载软件值得推荐
  15. abp viewmodel的写法
  16. 爬虫 | 王者荣耀高清壁纸-多线程
  17. 2018大数据培训学习路线图(详细完整版)
  18. 你必需知道的5个开源游戏引擎
  19. js判断是否是苹果浏览器
  20. web自动化_selenium IDE安装与运行总结

热门文章

  1. MBA-day5 逻辑学-假言推理考点
  2. 服务器增加串口,多串口服务器的工作方式及接线示意图
  3. 华为加码布局 VR/AR趁势启航
  4. 一场惊天跨国跨时区作弊案,除了需要爆表智商,还需要啥?
  5. 外星人电脑 在线安装_2019台北国际电脑展前瞻 智能PC、OLED笔记本和5G全都有
  6. android hal 层GPS 研究总结——关于GPS GGA/GSV/RMC 数据的解析
  7. 17.窗口里有一个标志,鼠标进入时显示欢迎光临
  8. 安装Paddle,PaddleX环境
  9. JAVA获取当前时间(yyyy-MM-dd HH:mm:ss)
  10. linux kernel bridge 数据包流向