Java-520用IDEA实现动态爱心效果

爱心 2024-05-10 10-23-20

实现的主要效果如上面视频,只需IDEA用Java语言即可实现,下面是全部代码:

import javax.swing.*;
import java.awt.*;

class MyFrame extends JFrame {
    private static final int WIDTH = 1200;
    private static final int HEIGHT = 800;
    private static final int WINDOW_WIDTH = Toolkit.getDefaultToolkit().getScreenSize().width;
    private static final int WINDOW_HEIGHT = Toolkit.getDefaultToolkit().getScreenSize().height;

    public void launchFrame() {
        this.setTitle("爱心");
        this.setBackground(Color.BLACK);
        this.setLocation((WINDOW_WIDTH - WIDTH) / 2, (WINDOW_HEIGHT - HEIGHT) / 2);
//设置窗口大小
        this.setSize(WIDTH, HEIGHT);
//设置窗口可见
        this.setVisible(true);
//窗口关闭
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }

    @Override
    public void paint(Graphics g) {
//横纵坐标及半径
        double x, y;
//绘制图形
        double z = 0.0;
        double size;
        int jj = 0;
        while (true) {
            Image image = this.createImage(WIDTH, HEIGHT);
            Graphics pic = image.getGraphics();
            if (jj % 2 == 0) {
                size = 14.5;
            } else {
                size = 15;
            }
                for (int ii = 30; ii > 0; ii--) {
                    for (int i = 1; i < 1000; i++) {
                        int px = (int) (Math.random() * 10);
                        int py = (int) (Math.random() * 10);
                        x = 16 * (Math.sin(z) * Math.sin(z) * Math.sin(z)) * (size) +
                                Math.pow((-1), px) * Math.random() * ii * Math.sqrt(ii) + WIDTH / 2;
                        y = -(13 * Math.cos(z) - 5 * Math.cos(2 * z) - 2 * Math.cos(3 * z) - Math.cos(4 * z)) * (size) - Math.pow((-1), py) * Math.random() * ii * Math.sqrt(ii) + HEIGHT / 3;
                        z += (Math.PI / 2.0) / 80;
                        pic.fillOval((int) x, (int) y + 50, 2, 2);
                        pic.setColor(new Color(255, 0, 102, 244));
                    }
                    if (ii < 3) {
                        g.drawImage(image, 0, 0, this);
                    }
                }
                jj++;
                try {
                    Thread.sleep(250);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        }
}
public class LoveHeart {
    public static void main(String[] args) {
        MyFrame myFrame = new MyFrame();
        myFrame.launchFrame();
    }
}

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
好的,您需要使用Java Swing来实现动态爱心代码。以下是参考代码: ``` java import java.awt.Color; import java.awt.Graphics; import java.awt.Point; import java.util.ArrayList; import java.util.List; import javax.swing.JFrame; import javax.swing.JPanel; public class DynamicHeartDemo extends JPanel { private static final long serialVersionUID = 1L; private int refresh = 20; private int size = 10; private List<Point> points = new ArrayList<Point>(); public DynamicHeartDemo() { setBackground(Color.white); } @Override public void paint(Graphics g) { super.paint(g); for (Point p : points) { int x = p.x; int y = p.y; g.fillOval(x, y, size, size); } } private void drawHeart() { for (double t = 0; t <= Math.PI; t += 0.01) { int x = (int) (16 * Math.pow(Math.sin(t), 3)); int y = (int) (13 * Math.cos(t) - 5 * Math.cos(2 * t) - 2 * Math.cos(3 * t) - Math.cos(4 * t)); x = x * size + getWidth() / 2; y = -y * size + getHeight() / 2; points.add(new Point(x, y)); } } public void start() { drawHeart(); while (true) { try { Thread.sleep(refresh); } catch (InterruptedException e) { e.printStackTrace(); } List<Point> removePoints = new ArrayList<Point>(); for (Point p : points) { if (p.y <= 0) { removePoints.add(p); continue; } p.x -= 1; p.y -= 1; } points.removeAll(removePoints); repaint(); } } public static void main(String[] args) { JFrame frame = new JFrame(); frame.setSize(800, 600); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); DynamicHeartDemo panel = new DynamicHeartDemo(); frame.add(panel); frame.setVisible(true); panel.start(); } } ``` 这段代码可以在Java开发工具IDEA中使用。您只需要将以上代码复制到您的IDEA项目中,然后运行即可。希望能够帮到您!

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值