Java 输出一颗可以跳动的爱心
时间: 2024-02-20 11:56:33 浏览: 74
可以通过使用Java Swing绘图工具和定时器来实现一颗跳动的爱心。以下是一个简单的代码示例:
```java
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class Heart extends JFrame implements ActionListener {
private static final long serialVersionUID = 1L;
private int x = 0;
private int y = 0;
private int dx = 5;
private int dy = 5;
public Heart() {
setSize(800, 600);
setLocationRelativeTo(null);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Timer timer = new Timer(50, this);
timer.start();
setVisible(true);
}
@Override
public void paint(Graphics g) {
Graphics2D g2d = (Graphics2D) g;
g2d.setColor(Color.RED);
g2d.setStroke(new BasicStroke(5.0f));
for (double t = 0.0; t <= Math.PI * 2; t += 0.01) {
double x = 16 * Math.pow(Math.sin(t), 3);
double y = 13 * Math.cos(t) - 5 * Math.cos(2 * t) - 2 * Math.cos(3 * t) - Math.cos(4 * t);
g2d.drawLine((int)(x * 20) + this.x, (int)(y * 20) + this.y, (int)(x * 20) + this.x, (int)(y * 20) + this.y);
}
}
@Override
public void actionPerformed(ActionEvent e) {
if (x < 0 || x > getWidth() - 320) {
dx = -dx;
}
if (y < 0 || y > getHeight() - 260) {
dy = -dy;
}
x += dx;
y += dy;
repaint();
}
public static void main(String[] args) {
new Heart();
}
}
```
在这个示例中,我们添加了一个定时器,每隔一定时间就会触发一次actionPerformed方法,在这个方法中更新爱心的位置,并重新绘制爱心。具体来说,我们使用x和y变量来表示爱心的位置,每次更新x和y的值,并根据它们的值来判断是否需要改变方向。最后,我们将x和y传递给绘图方法,将爱心绘制在屏幕上。这样就可以得到一颗可以跳动的爱心了。
阅读全文