Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/323.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
是否有一种方法(不知何故)在JavaSwing中实现两个计时器,其中每个计时器用于同时运行的每个移动对象?_Java_Timer - Fatal编程技术网

是否有一种方法(不知何故)在JavaSwing中实现两个计时器,其中每个计时器用于同时运行的每个移动对象?

是否有一种方法(不知何故)在JavaSwing中实现两个计时器,其中每个计时器用于同时运行的每个移动对象?,java,timer,Java,Timer,我现在是第二学期的一名学生,刚刚学习Java。我被指派使用JavaGUI创建一个模拟。我做了一个地震事件的模拟,一开始,一个面板显示了一个或两个受害者在地图上做他们自己的事情。我成功地模拟了一个人从一个节点移动到另一个节点,并在地图上随机进行活动。但是,我想在模拟中添加另一个人,使其在单个面板中移动两个人 我还对他们去的特定地点的某些活动实施了延迟。例如,person1到河边钓鱼,并开始延迟5000毫秒。与此同时,person2在地图上自由移动。问题是,当延迟对在河中捕鱼的人1执行时,延迟也会影

我现在是第二学期的一名学生,刚刚学习Java。我被指派使用JavaGUI创建一个模拟。我做了一个地震事件的模拟,一开始,一个面板显示了一个或两个受害者在地图上做他们自己的事情。我成功地模拟了一个人从一个节点移动到另一个节点,并在地图上随机进行活动。但是,我想在模拟中添加另一个人,使其在单个面板中移动两个人

我还对他们去的特定地点的某些活动实施了延迟。例如,person1到河边钓鱼,并开始延迟5000毫秒。与此同时,person2在地图上自由移动。问题是,当延迟对在河中捕鱼的人1执行时,延迟也会影响到在其他地方移动的人2。我试着在互联网上搜索,寻找解决方案和替代方案,但到目前为止,没有一个适合我

有没有人有办法让我为每个移动的人单独应用一个计时器

下面是我的模拟代码片段,它控制actionPerformed方法中的移动对象:

-------------------------------------------------第一人-----------------------------------------------

        if(currNode.getPlace() == "place") {
        if(xV1<currNode.getCoorX() && yV1==currNode.getCoorY()) {
            System.out.print("Value of X is "+xV1);
            System.out.println(" Value of Y is "+yV1);
            xV1 += xVelocity;
            repaint();
            timer.setDelay(20);
            timer.start();
            if(xV1==currNode.getCoorX()){
                System.out.print("Value of X in place is "+xV1);
                System.out.println(" Value of Y in place is "+yV1);
                // Print the activity of the victim or rescuer here unto the JScrollPane
                System.out.println(currNode.getActivity());
                timer.setDelay(gen.nextInt(2000)+3000);
                timer.start();
                neighborNode = myNodes.get(index).getNeighbor();
                currNode.setCoorX(neighborNode[0].getCoorX());
                currNode.setCoorY(neighborNode[0].getCoorY());
                currNode.setPlace(neighborNode[0].getPlace());
                currNode.setActivity(neighborNode[0].getActivity());
                index = myNodes.indexOf(neighborNode[0]);
            }
        }else if(yV1<currNode.getCoorY() && xV1==currNode.getCoorX()) {
            System.out.print("Value of X is "+xV1);
            System.out.println(" Value of Y is "+yV1);
            yV1 += yVelocity;
            repaint();
            timer.setDelay(25);
            timer.start();
            if(yV1==currNode.getCoorY()){
                System.out.print("Value of X in place is "+xV1);
                System.out.println(" Value of Y in place is "+yV1);
                // Print the activity of the victim or rescuer here unto the JScrollPane
                System.out.println(currNode.getActivity());
                timer.setDelay(gen.nextInt(2000)+3000);
                timer.start();
                neighborNode = myNodes.get(index).getNeighbor();
                currNode.setCoorX(neighborNode[0].getCoorX());
                currNode.setCoorY(neighborNode[0].getCoorY());
                currNode.setPlace(neighborNode[0].getPlace());
                currNode.setActivity(neighborNode[0].getActivity());
                index = myNodes.indexOf(neighborNode[0]);
            }
        }else if(xV1>currNode.getCoorX() && yV1==currNode.getCoorY()) {
            System.out.print("Value of X is "+xV1);
            System.out.println(" Value of Y is "+yV1);
            xV1 -= xVelocity;
            repaint();
            timer.setDelay(25);
            timer.start();
            if(xV1==currNode.getCoorX()){
                System.out.print("Value of X in place is "+xV1);
                System.out.println(" Value of Y in place is "+yV1);
                // Print the activity of the victim or rescuer here unto the JScrollPane
                System.out.println(currNode.getActivity());
                timer.setDelay(gen.nextInt(2000)+3000);
                timer.start();
                neighborNode = myNodes.get(index).getNeighbor();
                currNode.setCoorX(neighborNode[0].getCoorX());
                currNode.setCoorY(neighborNode[0].getCoorY());
                currNode.setPlace(neighborNode[0].getPlace());
                currNode.setActivity(neighborNode[0].getActivity());
                index = myNodes.indexOf(neighborNode[0]);
            }
        }else if(yV1>currNode.getCoorY() && xV1==currNode.getCoorX()) {
            System.out.print("Value of X is "+xV1);
            System.out.println(" Value of Y is "+yV1);
            yV1 -= yVelocity;
            repaint();
            timer.setDelay(25);
            timer.start();
            if(yV1==currNode.getCoorY()){
                System.out.print("Value of X in place is "+xV1);
                System.out.println(" Value of Y in place is "+yV1);
                // Print the activity of the victim or rescuer here unto the JScrollPane
                System.out.println(currNode.getActivity());
                timer.setDelay(gen.nextInt(2000)+3000);
                timer.start();
                neighborNode = myNodes.get(index).getNeighbor();
                currNode.setCoorX(neighborNode[0].getCoorX());
                currNode.setCoorY(neighborNode[0].getCoorY());
                currNode.setPlace(neighborNode[0].getPlace());
                currNode.setActivity(neighborNode[0].getActivity());
                index = myNodes.indexOf(neighborNode[0]);
            }
        }
    }

    if(currNode.getPlace() == "road") {

        if(xV1<currNode.getCoorX() && yV1==currNode.getCoorY()) {
            timer.setDelay(10);
            timer.start();
            xV1 += xVelocity;
            repaint();
            if(xV1==currNode.getCoorX()){
                System.out.println("Value of X victim is "+xV1);
                System.out.println("Value of Y victim is "+yV1);
                nextDir = gen.nextInt(myNodes.get(index).getNeighbor().length);
                neighborNode = myNodes.get(index).getNeighbor();
                index = myNodes.indexOf(neighborNode[nextDir]);
                currNode.setCoorX(myNodes.get(index).getCoorX());
                currNode.setCoorY(myNodes.get(index).getCoorY());
                currNode.setPlace(myNodes.get(index).getPlace());
                currNode.setActivity(myNodes.get(index).getActivity());
                System.out.print("X value: "+myNodes.get(index).getCoorX());
                System.out.println(" Y value: "+myNodes.get(index).getCoorY());
            }
        }else if(yV1<currNode.getCoorY() && xV1==currNode.getCoorX()) {
            timer.setDelay(10);
            timer.start();
            yV1 += yVelocity;
            repaint();
            if(yV1==currNode.getCoorY()){
                System.out.println("Value of X victim is "+xV1);
                System.out.println("Value of Y victim is "+yV1);
                nextDir = gen.nextInt(myNodes.get(index).getNeighbor().length);
                neighborNode = myNodes.get(index).getNeighbor();
                index = myNodes.indexOf(neighborNode[nextDir]);
                currNode.setCoorX(myNodes.get(index).getCoorX());
                currNode.setCoorY(myNodes.get(index).getCoorY());
                currNode.setPlace(myNodes.get(index).getPlace());
                currNode.setActivity(myNodes.get(index).getActivity());
                System.out.print("X value: "+myNodes.get(index).getCoorX());
                System.out.println(" Y value: "+myNodes.get(index).getCoorY());
            }
        }else if(xV1>currNode.getCoorX() && yV1==currNode.getCoorY()) {
            timer.setDelay(10);
            timer.start();
            xV1 -= xVelocity;
            repaint();
            if(xV1==currNode.getCoorX()){
                System.out.println("Value of X victim is "+xV1);
                System.out.println("Value of Y victim is "+yV1);
                nextDir = gen.nextInt(myNodes.get(index).getNeighbor().length);
                neighborNode = myNodes.get(index).getNeighbor();
                index = myNodes.indexOf(neighborNode[nextDir]);
                currNode.setCoorX(myNodes.get(index).getCoorX());
                currNode.setCoorY(myNodes.get(index).getCoorY());
                currNode.setPlace(myNodes.get(index).getPlace());
                currNode.setActivity(myNodes.get(index).getActivity());
                System.out.print("X value: "+myNodes.get(index).getCoorX());
                System.out.println(" Y value: "+myNodes.get(index).getCoorY());
            }
        }else if(yV1>currNode.getCoorY() && xV1==currNode.getCoorX()) {
            timer.setDelay(10);
            timer.start();
            yV1 -= yVelocity;
            repaint();
            if(yV1==currNode.getCoorY()){
                System.out.print("Value of X victim is "+xV1);
                System.out.println("Value of Y victim is "+yV1);
                nextDir = gen.nextInt(myNodes.get(index).getNeighbor().length);
                neighborNode = myNodes.get(index).getNeighbor();
                index = myNodes.indexOf(neighborNode[nextDir]);
                currNode.setCoorX(myNodes.get(index).getCoorX());
                currNode.setCoorY(myNodes.get(index).getCoorY());
                currNode.setPlace(myNodes.get(index).getPlace());
                currNode.setActivity(myNodes.get(index).getActivity());
                System.out.print("X value: "+myNodes.get(index).getCoorX());
                System.out.println(" Y value: "+myNodes.get(index).getCoorY());
            }
        }
    }
    if(currNode.getPlace() == "place") {
        if(xV2<currNode.getCoorX() && yV2==currNode.getCoorY()) {
            timerV2.setDelay(25);
            timerV2.start();
            xV2 += xVelocity;
            repaint();
            if(xV2==currNode.getCoorX()){
                // Print the activity of the victim or rescuer here unto the JScrollPane
                System.out.println(currNode.getActivity());
                timer.setDelay(gen.nextInt(2000)+3000);
                timerV2.start();
                neighborNode = myNodes.get(index2).getNeighbor();
                currNode.setCoorX(neighborNode[0].getCoorX());
                currNode.setCoorY(neighborNode[0].getCoorY());
                currNode.setPlace(neighborNode[0].getPlace());
                currNode.setActivity(neighborNode[0].getActivity());
                index2 = myNodes.indexOf(neighborNode[0]);
            }
        }else if(yV2<currNode.getCoorY() && xV2==currNode.getCoorX()) {
            timerV2.setDelay(25);
            timerV2.start();
            yV2 += yVelocity;
            repaint();
            if(yV2==currNode.getCoorY()){
                // Print the activity of the victim or rescuer here unto the JScrollPane
                System.out.println(currNode.getActivity());
                timer.setDelay(gen.nextInt(2000)+3000);
                timerV2.start();
                neighborNode = myNodes.get(index2).getNeighbor();
                currNode.setCoorX(neighborNode[0].getCoorX());
                currNode.setCoorY(neighborNode[0].getCoorY());
                currNode.setPlace(neighborNode[0].getPlace());
                currNode.setActivity(neighborNode[0].getActivity());
                index2 = myNodes.indexOf(neighborNode[0]);
            }
        }else if(xV2>currNode.getCoorX() && yV2==currNode.getCoorY()) {
            timerV2.setDelay(25);
            timerV2.start();
            xV2 -= xVelocity;
            repaint();
            if(xV2==currNode.getCoorX()){
                // Print the activity of the victim or rescuer here unto the JScrollPane
                System.out.println(currNode.getActivity());
                timer.setDelay(gen.nextInt(2000)+3000);
                timerV2.start();
                neighborNode = myNodes.get(index2).getNeighbor();
                currNode.setCoorX(neighborNode[0].getCoorX());
                currNode.setCoorY(neighborNode[0].getCoorY());
                currNode.setPlace(neighborNode[0].getPlace());
                currNode.setActivity(neighborNode[0].getActivity());
                index2 = myNodes.indexOf(neighborNode[0]);
            }
        }else if(yV2>currNode.getCoorY() && xV2==currNode.getCoorX()) {
            timerV2.setDelay(25);
            timerV2.start();
            yV2 -= yVelocity;
            repaint();
            if(yV2==currNode.getCoorY()){
                // Print the activity of the victim or rescuer here unto the JScrollPane
                System.out.println(currNode.getActivity());
                timer.setDelay(gen.nextInt(2000)+3000);
                timerV2.start();
                neighborNode = myNodes.get(index2).getNeighbor();
                currNode.setCoorX(neighborNode[0].getCoorX());
                currNode.setCoorY(neighborNode[0].getCoorY());
                currNode.setPlace(neighborNode[0].getPlace());
                currNode.setActivity(neighborNode[0].getActivity());
                index2 = myNodes.indexOf(neighborNode[0]);
            }
        }
    }

    if(currNode.getPlace() == "road") {

        if(xV2<currNode.getCoorX() && yV2==currNode.getCoorY()) {
            timerV2.setDelay(10);
            timerV2.start();
            xV2 += xVelocity;
            repaint();
            if(xV2==currNode.getCoorX()){
                nextDir2 = gen.nextInt(myNodes.get(index2).getNeighbor().length);
                neighborNode = myNodes.get(index2).getNeighbor();
                index2 = myNodes.indexOf(neighborNode[nextDir2]);
                currNode.setCoorX(myNodes.get(index2).getCoorX());
                currNode.setCoorY(myNodes.get(index2).getCoorY());
                currNode.setPlace(myNodes.get(index2).getPlace());
                currNode.setActivity(myNodes.get(index2).getActivity());
            }
        }else if(yV2<currNode.getCoorY() && xV2==currNode.getCoorX()) {
            timerV2.setDelay(10);
            timerV2.start();
            yV2 += yVelocity;
            repaint();
            if(yV2==currNode.getCoorY()){
                nextDir2 = gen.nextInt(myNodes.get(index2).getNeighbor().length);
                neighborNode = myNodes.get(index).getNeighbor();
                index2 = myNodes.indexOf(neighborNode[nextDir2]);
                currNode.setCoorX(myNodes.get(index2).getCoorX());
                currNode.setCoorY(myNodes.get(index2).getCoorY());
                currNode.setPlace(myNodes.get(index2).getPlace());
                currNode.setActivity(myNodes.get(index2).getActivity());
                System.out.print("X value: "+myNodes.get(index2).getCoorX());
                System.out.println(" Y value: "+myNodes.get(index2).getCoorY());
            }
        }else if(xV2>currNode.getCoorX() && yV2==currNode.getCoorY()) {
            timerV2.setDelay(10);
            timerV2.start();
            xV2 -= xVelocity;
            repaint();
            if(xV2==currNode.getCoorX()){
                nextDir2 = gen.nextInt(myNodes.get(index2).getNeighbor().length);
                neighborNode = myNodes.get(index2).getNeighbor();
                index2 = myNodes.indexOf(neighborNode[nextDir]);
                currNode.setCoorX(myNodes.get(index2).getCoorX());
                currNode.setCoorY(myNodes.get(index2).getCoorY());
                currNode.setPlace(myNodes.get(index2).getPlace());
                currNode.setActivity(myNodes.get(index2).getActivity());
            }
        }else if(yV2>currNode.getCoorY() && xV2==currNode.getCoorX()) {
            timerV2.setDelay(10);
            timerV2.start();
            yV2 -= yVelocity;
            repaint();
            if(yV2==currNode.getCoorY()){
                nextDir2 = gen.nextInt(myNodes.get(index2).getNeighbor().length);
                neighborNode = myNodes.get(index2).getNeighbor();
                index2 = myNodes.indexOf(neighborNode[nextDir2]);
                currNode.setCoorX(myNodes.get(index2).getCoorX());
                currNode.setCoorY(myNodes.get(index2).getCoorY());
                currNode.setPlace(myNodes.get(index2).getPlace());
                currNode.setActivity(myNodes.get(index2).getActivity());
            }
        }
    }
if(currNode.getPlace()=“place”){
if(xV1currNode.getCoorY()&&xV1==currNode.getCoorX()){
系统输出打印(“X值为”+xV1);
System.out.println(“Y的值为”+yV1);
yV1-=yVelocity;
重新油漆();
定时器设置延迟(25);
timer.start();
if(yV1==currNode.getCoorY()){
系统输出打印(“X到位值为”+xV1);
System.out.println(“Y到位值为“+yV1”);
//将受害者或救援人员的活动打印到JScrollPane
System.out.println(currNode.getActivity());
定时器设置延迟(gen.nextInt(2000)+3000);
timer.start();
neighborNode=myNodes.get(index.getNeighbor();
currNode.setCoorX(nextorNode[0].getCoorX());
currNode.setCoorY(nextorNode[0].getCoorY());
currNode.setPlace(neighborNode[0].getPlace());
currNode.setActivity(邻居节点[0].getActivity());
index=myNodes.indexOf(nextornode[0]);
}
}
}
if(currNode.getPlace()=“道路”){
if(xV1currNode.getCoorY()&&xV1==currNode.getCoorX()){
定时器设置延迟(10);
timer.start();
yV1-=yVelocity;
重新油漆();
if(yV1==currNode.getCoorY()){
系统输出打印(“X受害者的值为”+xV1);
System.out.println(“Y受害者的值为”+yV1);
nextDir=gen.nextInt(myNodes.get(index.getNeighbor().length);
neighborNode=myNodes.get(index.getNeighbor();
index=myNodes.indexOf(nextrnode[nextDir]);
currNode.setCoorX(myNodes.get(index.getCoorX());
currNode.setCoorY(myNodes.get(index.getCoorY());
currNode.setPlace(myNodes.get(index.getPlace());
currNode.setActivity(myNodes.get(index.getActivity());
System.out.print(“X值:+myNodes.get(index.getCoorX());
System.out.println(“Y值:+myNodes.get(index.getCoorY());
}
}
}
-------------------------------------------------第二人-----------------------------------------------

        if(currNode.getPlace() == "place") {
        if(xV1<currNode.getCoorX() && yV1==currNode.getCoorY()) {
            System.out.print("Value of X is "+xV1);
            System.out.println(" Value of Y is "+yV1);
            xV1 += xVelocity;
            repaint();
            timer.setDelay(20);
            timer.start();
            if(xV1==currNode.getCoorX()){
                System.out.print("Value of X in place is "+xV1);
                System.out.println(" Value of Y in place is "+yV1);
                // Print the activity of the victim or rescuer here unto the JScrollPane
                System.out.println(currNode.getActivity());
                timer.setDelay(gen.nextInt(2000)+3000);
                timer.start();
                neighborNode = myNodes.get(index).getNeighbor();
                currNode.setCoorX(neighborNode[0].getCoorX());
                currNode.setCoorY(neighborNode[0].getCoorY());
                currNode.setPlace(neighborNode[0].getPlace());
                currNode.setActivity(neighborNode[0].getActivity());
                index = myNodes.indexOf(neighborNode[0]);
            }
        }else if(yV1<currNode.getCoorY() && xV1==currNode.getCoorX()) {
            System.out.print("Value of X is "+xV1);
            System.out.println(" Value of Y is "+yV1);
            yV1 += yVelocity;
            repaint();
            timer.setDelay(25);
            timer.start();
            if(yV1==currNode.getCoorY()){
                System.out.print("Value of X in place is "+xV1);
                System.out.println(" Value of Y in place is "+yV1);
                // Print the activity of the victim or rescuer here unto the JScrollPane
                System.out.println(currNode.getActivity());
                timer.setDelay(gen.nextInt(2000)+3000);
                timer.start();
                neighborNode = myNodes.get(index).getNeighbor();
                currNode.setCoorX(neighborNode[0].getCoorX());
                currNode.setCoorY(neighborNode[0].getCoorY());
                currNode.setPlace(neighborNode[0].getPlace());
                currNode.setActivity(neighborNode[0].getActivity());
                index = myNodes.indexOf(neighborNode[0]);
            }
        }else if(xV1>currNode.getCoorX() && yV1==currNode.getCoorY()) {
            System.out.print("Value of X is "+xV1);
            System.out.println(" Value of Y is "+yV1);
            xV1 -= xVelocity;
            repaint();
            timer.setDelay(25);
            timer.start();
            if(xV1==currNode.getCoorX()){
                System.out.print("Value of X in place is "+xV1);
                System.out.println(" Value of Y in place is "+yV1);
                // Print the activity of the victim or rescuer here unto the JScrollPane
                System.out.println(currNode.getActivity());
                timer.setDelay(gen.nextInt(2000)+3000);
                timer.start();
                neighborNode = myNodes.get(index).getNeighbor();
                currNode.setCoorX(neighborNode[0].getCoorX());
                currNode.setCoorY(neighborNode[0].getCoorY());
                currNode.setPlace(neighborNode[0].getPlace());
                currNode.setActivity(neighborNode[0].getActivity());
                index = myNodes.indexOf(neighborNode[0]);
            }
        }else if(yV1>currNode.getCoorY() && xV1==currNode.getCoorX()) {
            System.out.print("Value of X is "+xV1);
            System.out.println(" Value of Y is "+yV1);
            yV1 -= yVelocity;
            repaint();
            timer.setDelay(25);
            timer.start();
            if(yV1==currNode.getCoorY()){
                System.out.print("Value of X in place is "+xV1);
                System.out.println(" Value of Y in place is "+yV1);
                // Print the activity of the victim or rescuer here unto the JScrollPane
                System.out.println(currNode.getActivity());
                timer.setDelay(gen.nextInt(2000)+3000);
                timer.start();
                neighborNode = myNodes.get(index).getNeighbor();
                currNode.setCoorX(neighborNode[0].getCoorX());
                currNode.setCoorY(neighborNode[0].getCoorY());
                currNode.setPlace(neighborNode[0].getPlace());
                currNode.setActivity(neighborNode[0].getActivity());
                index = myNodes.indexOf(neighborNode[0]);
            }
        }
    }

    if(currNode.getPlace() == "road") {

        if(xV1<currNode.getCoorX() && yV1==currNode.getCoorY()) {
            timer.setDelay(10);
            timer.start();
            xV1 += xVelocity;
            repaint();
            if(xV1==currNode.getCoorX()){
                System.out.println("Value of X victim is "+xV1);
                System.out.println("Value of Y victim is "+yV1);
                nextDir = gen.nextInt(myNodes.get(index).getNeighbor().length);
                neighborNode = myNodes.get(index).getNeighbor();
                index = myNodes.indexOf(neighborNode[nextDir]);
                currNode.setCoorX(myNodes.get(index).getCoorX());
                currNode.setCoorY(myNodes.get(index).getCoorY());
                currNode.setPlace(myNodes.get(index).getPlace());
                currNode.setActivity(myNodes.get(index).getActivity());
                System.out.print("X value: "+myNodes.get(index).getCoorX());
                System.out.println(" Y value: "+myNodes.get(index).getCoorY());
            }
        }else if(yV1<currNode.getCoorY() && xV1==currNode.getCoorX()) {
            timer.setDelay(10);
            timer.start();
            yV1 += yVelocity;
            repaint();
            if(yV1==currNode.getCoorY()){
                System.out.println("Value of X victim is "+xV1);
                System.out.println("Value of Y victim is "+yV1);
                nextDir = gen.nextInt(myNodes.get(index).getNeighbor().length);
                neighborNode = myNodes.get(index).getNeighbor();
                index = myNodes.indexOf(neighborNode[nextDir]);
                currNode.setCoorX(myNodes.get(index).getCoorX());
                currNode.setCoorY(myNodes.get(index).getCoorY());
                currNode.setPlace(myNodes.get(index).getPlace());
                currNode.setActivity(myNodes.get(index).getActivity());
                System.out.print("X value: "+myNodes.get(index).getCoorX());
                System.out.println(" Y value: "+myNodes.get(index).getCoorY());
            }
        }else if(xV1>currNode.getCoorX() && yV1==currNode.getCoorY()) {
            timer.setDelay(10);
            timer.start();
            xV1 -= xVelocity;
            repaint();
            if(xV1==currNode.getCoorX()){
                System.out.println("Value of X victim is "+xV1);
                System.out.println("Value of Y victim is "+yV1);
                nextDir = gen.nextInt(myNodes.get(index).getNeighbor().length);
                neighborNode = myNodes.get(index).getNeighbor();
                index = myNodes.indexOf(neighborNode[nextDir]);
                currNode.setCoorX(myNodes.get(index).getCoorX());
                currNode.setCoorY(myNodes.get(index).getCoorY());
                currNode.setPlace(myNodes.get(index).getPlace());
                currNode.setActivity(myNodes.get(index).getActivity());
                System.out.print("X value: "+myNodes.get(index).getCoorX());
                System.out.println(" Y value: "+myNodes.get(index).getCoorY());
            }
        }else if(yV1>currNode.getCoorY() && xV1==currNode.getCoorX()) {
            timer.setDelay(10);
            timer.start();
            yV1 -= yVelocity;
            repaint();
            if(yV1==currNode.getCoorY()){
                System.out.print("Value of X victim is "+xV1);
                System.out.println("Value of Y victim is "+yV1);
                nextDir = gen.nextInt(myNodes.get(index).getNeighbor().length);
                neighborNode = myNodes.get(index).getNeighbor();
                index = myNodes.indexOf(neighborNode[nextDir]);
                currNode.setCoorX(myNodes.get(index).getCoorX());
                currNode.setCoorY(myNodes.get(index).getCoorY());
                currNode.setPlace(myNodes.get(index).getPlace());
                currNode.setActivity(myNodes.get(index).getActivity());
                System.out.print("X value: "+myNodes.get(index).getCoorX());
                System.out.println(" Y value: "+myNodes.get(index).getCoorY());
            }
        }
    }
    if(currNode.getPlace() == "place") {
        if(xV2<currNode.getCoorX() && yV2==currNode.getCoorY()) {
            timerV2.setDelay(25);
            timerV2.start();
            xV2 += xVelocity;
            repaint();
            if(xV2==currNode.getCoorX()){
                // Print the activity of the victim or rescuer here unto the JScrollPane
                System.out.println(currNode.getActivity());
                timer.setDelay(gen.nextInt(2000)+3000);
                timerV2.start();
                neighborNode = myNodes.get(index2).getNeighbor();
                currNode.setCoorX(neighborNode[0].getCoorX());
                currNode.setCoorY(neighborNode[0].getCoorY());
                currNode.setPlace(neighborNode[0].getPlace());
                currNode.setActivity(neighborNode[0].getActivity());
                index2 = myNodes.indexOf(neighborNode[0]);
            }
        }else if(yV2<currNode.getCoorY() && xV2==currNode.getCoorX()) {
            timerV2.setDelay(25);
            timerV2.start();
            yV2 += yVelocity;
            repaint();
            if(yV2==currNode.getCoorY()){
                // Print the activity of the victim or rescuer here unto the JScrollPane
                System.out.println(currNode.getActivity());
                timer.setDelay(gen.nextInt(2000)+3000);
                timerV2.start();
                neighborNode = myNodes.get(index2).getNeighbor();
                currNode.setCoorX(neighborNode[0].getCoorX());
                currNode.setCoorY(neighborNode[0].getCoorY());
                currNode.setPlace(neighborNode[0].getPlace());
                currNode.setActivity(neighborNode[0].getActivity());
                index2 = myNodes.indexOf(neighborNode[0]);
            }
        }else if(xV2>currNode.getCoorX() && yV2==currNode.getCoorY()) {
            timerV2.setDelay(25);
            timerV2.start();
            xV2 -= xVelocity;
            repaint();
            if(xV2==currNode.getCoorX()){
                // Print the activity of the victim or rescuer here unto the JScrollPane
                System.out.println(currNode.getActivity());
                timer.setDelay(gen.nextInt(2000)+3000);
                timerV2.start();
                neighborNode = myNodes.get(index2).getNeighbor();
                currNode.setCoorX(neighborNode[0].getCoorX());
                currNode.setCoorY(neighborNode[0].getCoorY());
                currNode.setPlace(neighborNode[0].getPlace());
                currNode.setActivity(neighborNode[0].getActivity());
                index2 = myNodes.indexOf(neighborNode[0]);
            }
        }else if(yV2>currNode.getCoorY() && xV2==currNode.getCoorX()) {
            timerV2.setDelay(25);
            timerV2.start();
            yV2 -= yVelocity;
            repaint();
            if(yV2==currNode.getCoorY()){
                // Print the activity of the victim or rescuer here unto the JScrollPane
                System.out.println(currNode.getActivity());
                timer.setDelay(gen.nextInt(2000)+3000);
                timerV2.start();
                neighborNode = myNodes.get(index2).getNeighbor();
                currNode.setCoorX(neighborNode[0].getCoorX());
                currNode.setCoorY(neighborNode[0].getCoorY());
                currNode.setPlace(neighborNode[0].getPlace());
                currNode.setActivity(neighborNode[0].getActivity());
                index2 = myNodes.indexOf(neighborNode[0]);
            }
        }
    }

    if(currNode.getPlace() == "road") {

        if(xV2<currNode.getCoorX() && yV2==currNode.getCoorY()) {
            timerV2.setDelay(10);
            timerV2.start();
            xV2 += xVelocity;
            repaint();
            if(xV2==currNode.getCoorX()){
                nextDir2 = gen.nextInt(myNodes.get(index2).getNeighbor().length);
                neighborNode = myNodes.get(index2).getNeighbor();
                index2 = myNodes.indexOf(neighborNode[nextDir2]);
                currNode.setCoorX(myNodes.get(index2).getCoorX());
                currNode.setCoorY(myNodes.get(index2).getCoorY());
                currNode.setPlace(myNodes.get(index2).getPlace());
                currNode.setActivity(myNodes.get(index2).getActivity());
            }
        }else if(yV2<currNode.getCoorY() && xV2==currNode.getCoorX()) {
            timerV2.setDelay(10);
            timerV2.start();
            yV2 += yVelocity;
            repaint();
            if(yV2==currNode.getCoorY()){
                nextDir2 = gen.nextInt(myNodes.get(index2).getNeighbor().length);
                neighborNode = myNodes.get(index).getNeighbor();
                index2 = myNodes.indexOf(neighborNode[nextDir2]);
                currNode.setCoorX(myNodes.get(index2).getCoorX());
                currNode.setCoorY(myNodes.get(index2).getCoorY());
                currNode.setPlace(myNodes.get(index2).getPlace());
                currNode.setActivity(myNodes.get(index2).getActivity());
                System.out.print("X value: "+myNodes.get(index2).getCoorX());
                System.out.println(" Y value: "+myNodes.get(index2).getCoorY());
            }
        }else if(xV2>currNode.getCoorX() && yV2==currNode.getCoorY()) {
            timerV2.setDelay(10);
            timerV2.start();
            xV2 -= xVelocity;
            repaint();
            if(xV2==currNode.getCoorX()){
                nextDir2 = gen.nextInt(myNodes.get(index2).getNeighbor().length);
                neighborNode = myNodes.get(index2).getNeighbor();
                index2 = myNodes.indexOf(neighborNode[nextDir]);
                currNode.setCoorX(myNodes.get(index2).getCoorX());
                currNode.setCoorY(myNodes.get(index2).getCoorY());
                currNode.setPlace(myNodes.get(index2).getPlace());
                currNode.setActivity(myNodes.get(index2).getActivity());
            }
        }else if(yV2>currNode.getCoorY() && xV2==currNode.getCoorX()) {
            timerV2.setDelay(10);
            timerV2.start();
            yV2 -= yVelocity;
            repaint();
            if(yV2==currNode.getCoorY()){
                nextDir2 = gen.nextInt(myNodes.get(index2).getNeighbor().length);
                neighborNode = myNodes.get(index2).getNeighbor();
                index2 = myNodes.indexOf(neighborNode[nextDir2]);
                currNode.setCoorX(myNodes.get(index2).getCoorX());
                currNode.setCoorY(myNodes.get(index2).getCoorY());
                currNode.setPlace(myNodes.get(index2).getPlace());
                currNode.setActivity(myNodes.get(index2).getActivity());
            }
        }
    }
if(currNode.getPlace()=“place”){
if(xV2currNode.getCoorY()&&xV2==currNode.getCoorX()){
timerV2.设置延迟(25);
timerV2.start();
yV2-=yVelocity;
重新油漆();
if(yV2==currNode.getCoorY()){
//将受害者或救援人员的活动打印到JScrollPane
System.out.println(currNode.getActivity());
定时器设置延迟(gen.nextInt(2000)+3000);
timerV2.start();
neighborNode=myNodes.get(index2.getNeighbor();
currNode.setCoorX(nextorNode[0].getCoorX());
currNode.setCoorY(nextorNode[0].getCoorY());
currNode.setPlace(neighborNode[0].getPlace());
currNode.setActivity(邻居节点[0].getActivity());
index2=myNodes.indexOf(nextornode[0]);
}
}
}
if(currNode.getPlace()=“道路”){
if(xV2currNode.getCoorY()&&xV2==currNode.getCoorX()){
timerV2.设置延迟(10);
timerV2.start();
yV2-=yVelocity;
重新油漆();
if(yV2==currNode.getCoorY()){
nextDir2=gen.nextInt(myNodes.get(index2.getNeighbor().length);
neighborNode=myNodes.get(index2.getNeighbor();
index2=myNodes.indexOf(nextrnode[nextDir2]);
currNode.setCoorX(myNodes.get(index2.getCoorX());
currNode.setCoorY(myNodes.get(index2.getCoorY());
currNode.setPlace(myNodes.get(index2.getPlace());
currNode.setActivity(myNodes.get(index2.getActivity());
}
}
}
如上所示,我创建了用于移动person1的计时器对象'timer'和用于移动person2的对象计时器'timerV2'。但是,它不会工作,因为我知道Java Swing计时器只在单个线程中工作