Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/400.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在java赛车程序中确定胜利者_Java - Fatal编程技术网

在java赛车程序中确定胜利者

在java赛车程序中确定胜利者,java,Java,我正试图找到一种方法来决定一个胜利者,但我运气不太好。该项目假定跑三圈,哪辆车先跑完所有圈是赢家。我可以跑3圈,但这不是一个很好的方法。我希望有人能告诉我一个更好的方法,也希望我能“数”出具体获胜赛车的圈数。汽车的数量在2-4辆之间是随机的,“速度”也是随机的。谁能帮帮我吗。一些代码会很好 import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.util.Random; public class

我正试图找到一种方法来决定一个胜利者,但我运气不太好。该项目假定跑三圈,哪辆车先跑完所有圈是赢家。我可以跑3圈,但这不是一个很好的方法。我希望有人能告诉我一个更好的方法,也希望我能“数”出具体获胜赛车的圈数。汽车的数量在2-4辆之间是随机的,“速度”也是随机的。谁能帮帮我吗。一些代码会很好

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.Random;

public class RacingCar extends JFrame {

public RacingCar() {
    int x = (int)(Math.random() * 3) + 2;
    setLayout(new GridLayout(x, 1, 5,5));
    for (int i = 0; i < x; i++){
            add(new CarImage());
    }
}

public static void main(String[] args) {
    JFrame frame = new RacingCar();
    frame.setTitle("Racing Car");
    frame.setSize(1200, 350);
    frame.setLocationRelativeTo(null);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setVisible(true);
}

class CarImage extends JPanel {
    protected int x = 0;
    protected int y = 350;
    protected int z = 1200;
    protected int c = 0;

    public CarImage() {
        int j = (int)(Math.random() * 500) + 2;
            Timer timer1 = new Timer(j, new ActionListener(){
            public void actionPerformed(ActionEvent e) {
                x += 10;
                c ++;
                repaint();
            }
        });

        timer1.start();

    }

    @Override
    public void paintComponent(Graphics g) {
        super.paintComponent(g);
            //x = 0;
            y = getHeight();
            z = getWidth();
            g.setColor(Color.WHITE);
            g.fillRect(0, 0, z, y);
            Polygon polygon = new Polygon();
            polygon.addPoint(x + 10, y - 21);
            polygon.addPoint(x + 20, y - 31);
            polygon.addPoint(x + 30, y - 31);
            polygon.addPoint(x + 40, y - 21);

            if (x < z - 50) {
                g.setColor(Color.BLACK);
                g.fillOval(x + 10, y - 11, 10, 10);
                g.fillOval(x + 30, y - 11, 10, 10);
                g.setColor(Color.BLUE);
                g.fillRect(x, y - 21, 50, 10);
                g.setColor(Color.GRAY);
                g.fillPolygon(polygon);
                g.setColor(Color.RED);
            }
            else {
                x = 0;
                /*if (c < z - 86) {
                    g.drawString("Clint's Car", c, y - 51);
                }
                else {
                    c = 0;
                }*/
            }
    }

}
}
我真的被困在这里了。谢谢您的帮助。

试试这段代码

新的


顺便说一句,我让你的计时器更快了,这样你就不会在非常慢的比赛中等3圈了P

多么有趣的项目啊!我喜欢..请问在哪里计算圈数?它似乎不会停在三圈处。paintComponent()中的else语句如果你的x值超过你的宽度,那么它将计为一圈(代码的第106行)
 if (k < 341){
     repaint();
     k++;
 {
public void paintComponent(Graphics g) {