java龟兔赛跑多线程图形界面程序
时间: 2023-07-09 07:53:23 浏览: 112
好的,下面是一个简单的Java龟兔赛跑多线程图形界面程序的示例:
```java
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class RacingGame extends JFrame implements ActionListener {
private JButton startBtn;
private JLabel turtleLabel, rabbitLabel;
private int turtleX = 0, rabbitX = 0;
public RacingGame() {
setTitle("Racing Game");
setSize(600, 400);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(new FlowLayout());
startBtn = new JButton("Start");
startBtn.addActionListener(this);
add(startBtn);
turtleLabel = new JLabel(new ImageIcon("turtle.png"));
add(turtleLabel);
rabbitLabel = new JLabel(new ImageIcon("rabbit.png"));
add(rabbitLabel);
setVisible(true);
}
public void actionPerformed(ActionEvent e) {
if (e.getSource() == startBtn) {
Thread turtleThread = new Thread(new TurtleRunnable());
Thread rabbitThread = new Thread(new RabbitRunnable());
turtleThread.start();
rabbitThread.start();
}
}
private class TurtleRunnable implements Runnable {
public void run() {
while (turtleX < 500 && rabbitX < 500) {
turtleX += (int) (Math.random() * 10);
turtleLabel.setLocation(turtleX, 100);
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
JOptionPane.showMessageDialog(null, "Turtle wins!");
}
}
private class RabbitRunnable implements Runnable {
public void run() {
while (turtleX < 500 && rabbitX < 500) {
rabbitX += (int) (Math.random() * 20);
rabbitLabel.setLocation(rabbitX, 200);
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
JOptionPane.showMessageDialog(null, "Rabbit wins!");
}
}
public static void main(String[] args) {
new RacingGame();
}
}
```
这个程序使用Swing库创建了一个简单的窗口,包括一个“Start”按钮、一个乌龟图像和一个兔子图像。当用户点击“Start”按钮时,程序会启动两个线程分别控制乌龟和兔子的移动。每个线程在循环中随机增加乌龟或兔子的位置,然后使用setLocation方法更新图像位置。当乌龟或兔子到达终点时,程序会使用JOptionPane库弹出一个提示框,告诉用户谁赢了比赛。
注意,这个程序只是一个简单的示例,实际上在编写真正的龟兔赛跑游戏时还需要处理更多的细节和异常情况。
阅读全文