JAVA编写一个多线程的小应用程序,模拟小球碰壁反弹
时间: 2023-08-02 11:30:31 浏览: 253
好的,以下是一个简单的Java多线程小应用程序,模拟小球碰壁反弹的效果:
```java
import java.awt.Color;
import java.awt.Graphics;
import java.util.Random;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class BallGame extends JPanel implements Runnable {
private static final long serialVersionUID = 1L;
private int x = 0; //小球的横坐标
private int y = 0; //小球的纵坐标
private int xSpeed = 5; //小球的横向速度
private int ySpeed = 5; //小球的纵向速度
private int ballSize = 50; //小球的大小
public static void main(String[] args) {
JFrame frame = new JFrame("Ball Game"); //创建窗口对象
frame.setSize(500, 500); //设置窗口大小
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //设置窗口关闭操作
BallGame ballGame = new BallGame(); //创建游戏面板对象
frame.add(ballGame); //将游戏面板添加到窗口中
frame.setVisible(true); //设置窗口可见
Thread thread = new Thread(ballGame); //创建线程对象
thread.start(); //启动线程
}
public void paint(Graphics g) {
super.paint(g); //调用父类的方法
g.setColor(Color.RED); //设置画笔颜色
g.fillOval(x, y, ballSize, ballSize); //画出小球
}
public void run() {
while (true) {
x += xSpeed; //更新小球的横坐标
y += ySpeed; //更新小球的纵坐标
if (x + ballSize >= getWidth() || x <= 0) { //判断小球是否碰到左右边界
xSpeed = -xSpeed; //小球反弹
}
if (y + ballSize >= getHeight() || y <= 0) { //判断小球是否碰到上下边界
ySpeed = -ySpeed; //小球反弹
}
repaint(); //重新绘制面板
try {
Thread.sleep(50); //线程休眠50毫秒
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
```
这个程序使用了Java的多线程技术,通过不断更新小球的坐标来模拟小球碰壁反弹的效果。运行程序后,会出现一个窗口,里面有一个红色的小球在不断移动。当小球碰到窗口的边界时,就会反弹。
阅读全文