用Java码出的动态烟花特效

/*
 * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
 * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
 */


package folder;

编程语言:java

编译工具:Apahe NetBeans

实验时用的系统:windows10 


import java.awt.*;
import java.awt.event.*;

import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

/**
 *
 * @author 14678
 */
public class flower extends Frame{
//背景
     int b1x[]={0,500,500,0};
     int b1y[]={0,0,500,500};
     Thread thread ;
    int count=8;//烟花个数 8
    flower() {
      
    setLayout(new FlowLayout());
        setTitle("烟花特效");
        setSize(500, 500);
     setVisible(true);
    
    }
    public void paint(Graphics g) {
        g.setColor(Color.BLACK);                   // 描画颜色
          g.fillPolygon(b1x, b1y, 4);              // 描画
         
         while(true){
           g.setColor(Color.BLACK);                   // 描画颜色
          g.fillPolygon(b1x, b1y, 4);              // 描画
          int flowerx=(int) (Math.random() * 500);//烟花x坐标
          int flowery=100+(int) (Math.random() * 300); //烟花最终y坐标
          int movey=500;//烟花弹移动变量
          while(movey>=flowery)//当
          { g.setColor(Color.BLACK);                   // 描画颜色
          g.fillPolygon(b1x, b1y, 4);              // 描画
          g.setColor(Color.WHITE);                   // 烟花弹颜色白色
          g.fillOval(flowerx,movey,1200/flowery ,1200/flowery);//烟花弹大小
            try { 
                         Thread.sleep(10);//延时
                       
                    } catch (InterruptedException e) {  
                        e.printStackTrace();  
                    } 
         //用黑色抹去烟花弹踪迹
          g.setColor(Color.BLACK);                   // 画画颜色
          g.fillOval(flowerx,movey+1200/flowery,1200/flowery ,1200/flowery);
          
          movey-=1200/flowery;//向上移动幅度
          }
          g.setColor(Color.WHITE);                   // 烟花弹颜色白色
          g.fillOval(flowerx,flowery,1600/flowery,1600/flowery);//烟花弹大小
           try { 
                         Thread.sleep(30);//延时
                       
                    } catch (InterruptedException e) {  
                        e.printStackTrace();  
                    }  
          //抹去烟花弹
             g.setColor(Color.BLACK);                   // 描画颜色
          g.fillPolygon(b1x, b1y, 4);              // 描画
         //烟花炸出以烟花弹终点坐标为圆心的40个小烟花
         for(int i=0;i<10;i++){//
          
           int r=3+(int) (Math.random() * 400/flowery);//花骨朵半径
               
          //右下象限
           Color c1 = new Color((int) (Math.random() * 255),(int) (Math.random() * 255),(int) (Math.random() * 255));//花骨朵颜色 
          g.setColor(c1); 
          g.fillOval(flowerx+(int) (Math.random() * r*50),flowery+(int) (Math.random() * r*50),r , r);
            
           //左上象限
         Color c2 = new Color((int) (Math.random() * 255),(int) (Math.random() * 255),(int) (Math.random() * 255));//花骨朵颜色 
          g.setColor(c2);
          g.fillOval(flowerx-(int) (Math.random() * r*50),flowery-(int) (Math.random() * r*50),r , r);
           //左下象限
            Color c3 = new Color((int) (Math.random() * 255),(int) (Math.random() * 255),(int) (Math.random() * 255));//花骨朵颜色 
          g.setColor(c3);
          g.fillOval(flowerx-(int) (Math.random() * r*50),flowery+(int) (Math.random() * r*50),r , r);
           //右上象限
            Color c4 = new Color((int) (Math.random() * 255),(int) (Math.random()  * 255),(int) (Math.random() * 255));//花骨朵颜色 
          g.setColor(c4);
          g.fillOval(flowerx+(int) (Math.random()  * r*50),flowery-(int) (Math.random()  * r*50),r , r);
           }
         try { 
                         Thread.sleep(100);//延时
                       
                    } catch (InterruptedException e) {  
                        e.printStackTrace();  
                    }  
         
         count--;//烟花减1
         if(count<=0)break;//放完退出循环
         }
          System.exit(0); //退出窗体
    }


   
    
    class WinAdapter extends WindowAdapter {
    public void windowClosing(WindowEvent we) {
        System.exit(0);
    }
    }

 public static void main(String[] args)  {
    flower f = new flower();        
        }
}
 

  • 3
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
以下是一个使用Java编写的烟花特效动态网页代码示例: ```java import javax.swing.*; import java.awt.*; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.util.ArrayList; import java.util.List; public class FireworksWebPage extends JFrame { private List<Firework> fireworks; public FireworksWebPage() { setTitle("烟花特效"); setSize(800, 600); setLocationRelativeTo(null); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); fireworks = new ArrayList<>(); FireworksPanel panel = new FireworksPanel(); panel.addMouseListener(new MouseAdapter() { @Override public void mouseClicked(MouseEvent e) { fireworks.add(new Firework(e.getX(), e.getY())); } }); add(panel); setVisible(true); animate(); } private void animate() { while (true) { for (Firework firework : fireworks) { firework.update(); } repaint(); try { Thread.sleep(10); } catch (InterruptedException e) { e.printStackTrace(); } } } private class FireworksPanel extends JPanel { @Override protected void paintComponent(Graphics g) { super.paintComponent(g); for (Firework firework : fireworks) { firework.draw(g); } } } private class Firework { private int x; private int y; private int size; private Color color; private int speed; public Firework(int x, int y) { this.x = x; this.y = y; this.size = 5; this.color = new Color((int) (Math.random() * 256), (int) (Math.random() * 256), (int) (Math.random() * 256)); this.speed = (int) (Math.random() * 5) + 1; } public void update() { y -= speed; size += 1; if (size >= 50) { fireworks.remove(this); } } public void draw(Graphics g) { g.setColor(color); g.fillOval(x - size / 2, y - size / 2, size, size); } } public static void main(String[] args) { SwingUtilities.invokeLater(FireworksWebPage::new); } } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

栋梁程序开发工作室

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值