自用dddd

import javax.imageio.ImageIO;
import javax.swing.*;
import java.awt.*;
import java.io.File;
import java.io.IOException;

public class TurtleRabbitRace1 {
    public static class TurtleRabbitRace extends JFrame {
        private JLabel turtleLabel, rabbitLabel, startLabel, finishLabel;
        private JButton startButton;
        private JPanel mainPanel;

        public TurtleRabbitRace() throws IOException {
            setTitle("Turtle vs Rabbit Race");
            setSize(600, 400);
            setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

            mainPanel = new JPanel();
            mainPanel.setLayout(null);

            File file = new File("D:\\JAVA\\project\\gtp2\\picture\\gui.png");
            turtleLabel = new JLabel(new ImageIcon(ImageIO.read(file)));
            turtleLabel.setBounds(10, 100, 60, 60);
            mainPanel.add(turtleLabel);

            File file1 = new File("D:\\JAVA\\project\\gtp2\\picture\\tu.png");
            rabbitLabel = new JLabel(new ImageIcon(ImageIO.read(file1)));
            rabbitLabel.setBounds(10, 200, 60, 60);
            mainPanel.add(rabbitLabel);

            startLabel = new JLabel("点击开始按钮开始比赛!");
            startLabel.setFont(new Font("Serif", Font.BOLD, 20));
            startLabel.setBounds(150, 50, 400, 30);
            mainPanel.add(startLabel);

            File file2 = new File("D:\\JAVA\\project\\gtp2\\picture\\fi.png");
            finishLabel = new JLabel(new ImageIcon(ImageIO.read(file2)));
            finishLabel.setBounds(520, 100, 60, 180);
            mainPanel.add(finishLabel);

            startButton = new JButton("开始");
            startButton.setBounds(250, 300, 100, 40);
            startButton.addActionListener(e -> {
                startRace();
            });
            mainPanel.add(startButton);

            add(mainPanel);
            setVisible(true);
        }

        private volatile boolean raceOver = false;

        private void startRace() {
            startButton.setEnabled(false);
            Thread turtleThread = new Thread(() -> {
                int distance = 10;
                while (turtleLabel.getX() + turtleLabel.getWidth() < finishLabel.getX()) {
                    try {
                        Thread.sleep(50);
                    } catch (InterruptedException e) {
                        return; // 如果线程被中断,则直接结束线程
                    }
                    turtleLabel.setLocation(turtleLabel.getX() + distance, turtleLabel.getY());
                }
            });

            Thread rabbitThread = new Thread(() -> {
                int distance = 10;
                while (rabbitLabel.getX() + rabbitLabel.getWidth() < finishLabel.getX()) {
                    try {
                        Thread.sleep(50);
                    } catch (InterruptedException e) {
                        return; // 如果线程被中断,则直接结束线程
                    }
                    rabbitLabel.setLocation(rabbitLabel.getX() + distance, rabbitLabel.getY());
                }
            });

            turtleThread.start();
            rabbitThread.start();

            new Thread(() -> {

                try {
                    rabbitThread.join();
                    turtleThread.interrupt(); // 中断乌龟线程
                    turtleThread.join();
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }

                if (turtleLabel.getX() + turtleLabel.getWidth() > rabbitLabel.getX() + rabbitLabel.getWidth()) {
                    JOptionPane.showMessageDialog(this, "乌龟赢了");
                } else if (turtleLabel.getX() + turtleLabel.getWidth() < rabbitLabel.getX() + rabbitLabel.getWidth()) {
                    JOptionPane.showMessageDialog(this, "兔子赢了");
                } else {
                    JOptionPane.showMessageDialog(this, "平局");
                }

                startButton.setEnabled(true);
            }).start();

            //妈的不知道你为什么会存在,但没你真不行
            new Thread(() -> {

                try {
                    turtleThread.join();
                    rabbitThread.interrupt(); // 中断兔子线程
                    rabbitThread.join();
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }

                if (turtleLabel.getX() + turtleLabel.getWidth() > rabbitLabel.getX() + rabbitLabel.getWidth()) {
                    JOptionPane.showMessageDialog(this, "乌龟赢了");
                } else if (turtleLabel.getX() + turtleLabel.getWidth() < rabbitLabel.getX() + rabbitLabel.getWidth()) {
                    JOptionPane.showMessageDialog(this, "兔子赢了");
                } else {
                    JOptionPane.showMessageDialog(this, "平局");
                }

                startButton.setEnabled(true);
            }).start();
        }

        public static void main(String[] args) throws IOException {
            new TurtleRabbitRace();
        }
    }
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值