大年初一java烟花表演。

来源:互联网 发布:y式沟通网络 编辑:程序博客网 时间:2024/04/27 16:45

祝大家新年心情愉快

看完春晚加班加点搞定的,

 

import java.awt.*;import java.awt.event.*;import java.util.*;import javax.swing.*;public class Hufan extends JFrame {HuPanel hp;public static void main(String[] args) {new Hufan();}public Hufan() {hp=new HuPanel();this.addMouseListener(hp);this.add(hp);new Thread(hp).start();this.setTitle("烟花");this.setLocation(100, 0);this.setSize(1000,700);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);this.setVisible(true);}}class HuPanel extends JPanel implements MouseListener,Runnable{Bullet bullet;Vector<Bullet> bullets;static Vector<Piece> pieces;int times=1;public HuPanel() {bullets=new Vector<Bullet>();pieces=new Vector<Piece>();}public void paint(Graphics g) {super.paint(g);times++;g.setColor(Color.black);g.fillRect(0, 0, 2000, 1000);g.setColor(Color.lightGray);for(int i=0;i<this.bullets.size();i++){Bullet b=this.bullets.get(i);if(b.isLive){b.move();g.fillOval(b.x,b.oldY, 15, 15);}}for(int i=0;i<this.pieces.size();i++){Piece b=this.pieces.get(i);if(b.isLive){if(b.color==0){g.setColor(Color.red);}else if(b.color==1){g.setColor(Color.blue);}else if(b.color==2){g.setColor(Color.cyan);}else if(b.color==3){g.setColor(Color.green);}else{g.setColor(Color.gray);}if(times%3==0){b.move();}g.fillOval((int)b.x, (int)b.y, (int)b.w, (int)b.h);}}}public void mousePressed(MouseEvent e) {bullet=new Bullet(e.getX(),e.getY());this.bullets.add(bullet);}public void mouseClicked(MouseEvent e) {}public void mouseReleased(MouseEvent e) {}public void mouseEntered(MouseEvent e) {}public void mouseExited(MouseEvent e) {}@Overridepublic void run() {while(true){this.repaint();try {Thread.sleep(20);} catch (Exception e) {e.printStackTrace();}}}}class Piece{double x,y;double w=15;double h=15;double velocityX, velocityY;boolean isLive=true;int color=0;int times=1;public Piece(double x,double y,double velocity,double angle,int color) {this.x=x;this.y=y;this.color=color;velocityX = velocity * Math.cos(angle);velocityY = velocity * Math.sin(angle);}public void move(){velocityX *= 0.75;velocityY += 1.0;velocityY *= 0.75;y += velocityY;x += velocityX;times++;if(times%7==0){this.w-=2;this.h-=2;if(this.w<=4){HuPanel.pieces.remove(this);}}}}class Bullet{int x;int y;int oldY=700;boolean isLive=true;Piece piece;Random r=new Random(System.currentTimeMillis());public Bullet(int x, int y) {this.x = x;this.y = y;}public void move(){oldY-=8;if(oldY<=y){this.isLive=false;int color=r.nextInt(4);for(int i=0;i<200;i++){double angleXy = r.nextDouble() * 2 * Math.PI;double angleZ  = r.nextDouble() * 2 * Math.PI;double velocity = 72 * Math.cos(angleZ);piece=new Piece(x,oldY,velocity, angleXy,color);HuPanel.pieces.add(piece);}}}}


 

0 0