使用eclipse实现小球自由弹动 分为四个状态使用switch语句和if语句
时间: 2023-07-18 15:05:48 浏览: 89
好的,下面是使用 Eclipse 实现小球自由弹动的代码:
```java
import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.Timer;
public class BallBouncing extends JPanel implements ActionListener {
private int x, y; // 小球的坐标
private int dx, dy; // 小球的速度
private int radius; // 小球的半径
private int width, height; // 窗口的宽度和高度
private final int DELAY = 10; // 定义定时器的延迟时间
private Timer timer; // 定时器对象
// 定义小球的四个状态
private final int STATE_UP = 0;
private final int STATE_DOWN = 1;
private final int STATE_LEFT = 2;
private final int STATE_RIGHT = 3;
private int state = STATE_DOWN; // 当前状态
public BallBouncing(int width, int height) {
this.width = width;
this.height = height;
// 初始化小球的位置和速度
x = width / 2;
y = height / 2;
dx = 2;
dy = 2;
radius = 20;
// 创建定时器对象
timer = new Timer(DELAY, this);
timer.start();
}
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
// 绘制小球
g.setColor(Color.RED);
g.fillOval(x - radius, y - radius, radius * 2, radius * 2);
}
@Override
public void actionPerformed(ActionEvent e) {
// 根据当前状态更新小球的位置和速度
switch (state) {
case STATE_UP:
y -= dy;
if (y - radius <= 0) {
state = STATE_DOWN;
}
break;
case STATE_DOWN:
y += dy;
if (y + radius >= height) {
state = STATE_UP;
}
break;
case STATE_LEFT:
x -= dx;
if (x - radius <= 0) {
state = STATE_RIGHT;
}
break;
case STATE_RIGHT:
x += dx;
if (x + radius >= width) {
state = STATE_LEFT;
}
break;
}
// 重绘小球
repaint();
}
public static void main(String[] args) {
JFrame frame = new JFrame("Ball Bouncing");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
BallBouncing ballBouncing = new BallBouncing(400, 400);
frame.add(ballBouncing);
frame.pack();
frame.setVisible(true);
}
}
```
这个程序使用了 `switch` 语句来根据当前状态更新小球的位置和速度。四个状态分别为:向上弹、向下弹、向左弹、向右弹。当小球碰到窗口边缘时,就会改变状态,从而改变运动方向。同时,定时器每隔一定时间就会触发 `actionPerformed` 方法,更新小球的位置并重绘小球。
阅读全文