编写Java程序一个龟兔赛跑的多线程程序,单击按键以后龟兔开始赛跑
时间: 2023-07-16 07:14:56 浏览: 96
下面是一个简单的龟兔赛跑多线程程序的示例,通过单击按钮来触发比赛开始:
```java
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Race extends JFrame implements ActionListener {
private JButton startButton;
private JLabel rabbitLabel, turtleLabel;
private Thread rabbitThread, turtleThread;
public Race() {
setTitle("龟兔赛跑");
setLayout(new FlowLayout());
rabbitLabel = new JLabel(new ImageIcon("rabbit.png"));
turtleLabel = new JLabel(new ImageIcon("turtle.png"));
startButton = new JButton("开始比赛");
startButton.addActionListener(this);
add(rabbitLabel);
add(turtleLabel);
add(startButton);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(400, 300);
setVisible(true);
}
public void actionPerformed(ActionEvent evt) {
if (evt.getSource() == startButton) {
rabbitThread = new Thread(new Rabbit());
turtleThread = new Thread(new Turtle());
rabbitThread.start();
turtleThread.start();
}
}
class Rabbit implements Runnable {
public void run() {
// 兔子的速度
int speed = 10;
// 兔子的起始位置
int position = 0;
while (position < 300) {
// 移动兔子
position += speed;
rabbitLabel.setLocation(position, rabbitLabel.getY());
// 休眠一段时间
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
JOptionPane.showMessageDialog(null, "兔子赢了!");
}
}
class Turtle implements Runnable {
public void run() {
// 乌龟的速度
int speed = 5;
// 乌龟的起始位置
int position = 0;
while (position < 300) {
// 移动乌龟
position += speed;
turtleLabel.setLocation(position, turtleLabel.getY());
// 休眠一段时间
try {
Thread.sleep(200);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
JOptionPane.showMessageDialog(null, "乌龟赢了!");
}
}
public static void main(String[] args) {
new Race();
}
}
```
该程序使用了 `JFrame` 和 `JButton` 来创建一个简单的界面,当用户单击“开始比赛”按钮时,程序会创建两个线程来模拟兔子和乌龟的比赛。每个线程都实现了 `Runnable` 接口并重写了 `run()` 方法,该方法包含了模拟比赛的代码。在比赛过程中,每个线程会使用 `Thread.sleep()` 方法来暂停一段时间,以模拟比赛中的等待时间。
注意:在实际的应用程序中,应该使用更复杂的算法来模拟比赛过程,以确保程序的真实性和可靠性。
阅读全文