⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 traffic.java

📁 一些JAVA的小程序
💻 JAVA
字号:
import java.awt.*;
import java.awt.event.*;

public class traffic extends Frame implements ActionListener{
   private road oneRoad;
   private train train0;
   private train train1;
   private truck truck0;
   private truck truck1;

   private vehicle[] vehi;
   private leverage[] leve;

   //define center position
   final static int x=275;
   final static int y=290;

   public static void main(String [] args){
       traffic oneT=new traffic();
       oneT.setVisible(true);

       while (true){
           oneT.repaint();
           try{Thread.sleep(50);} catch (Exception e){}
       }
   }

       private void init(){
           oneRoad=new road(x,y);

           vehi=new vehicle[4];
           leve=new leverage[4];

           train0=new train(x+225,y,0);
           train1=new train(x+210,y,0);
           train0.setMateVehi(train1);
           train1.setMateVehi(train0);
           truck0=new truck(x,y+210,270);
           truck1=new truck(x,y+225,270);
           truck0.setMateVehi(truck1);
           truck1.setMateVehi(truck0);

           vehi[0]=train0;
           vehi[1]=train1;
           vehi[2]=truck0;
           vehi[3]=truck1;

           leve[0]=new leverage(x+85,y+115,false);
           leve[1]=new leverage(x+85,y-85,false);
           leve[2]=new leverage(x-115,y-115,false);
           leve[3]=new leverage(x-115,y+85,false);
       }

       public void actionPerformed (ActionEvent e){
           if (e.getActionCommand().equals("New display")){
               init();
               repaint();
           }
           else if(e.getActionCommand().equals("End display")){
               System.exit(0);
           }
           
       }


       public class WindowDestroyer extends WindowAdapter{
           public void windowClosing(WindowEvent e){
              System.exit(0);
           }
       }

       public traffic(){
           setSize(600,600);
           setTitle("Traffic display");
           setBackground(Color.black);
           setLayout(new BorderLayout());

           addWindowListener(new WindowDestroyer());

           Panel buttonPanel= new Panel();
           buttonPanel.setBackground(Color.white);
           buttonPanel.setLayout(new FlowLayout());

           Button goButton=new Button("New display");
           goButton.addActionListener(this);
           buttonPanel.add(goButton);

           Button endButton=new Button("End display");
           endButton.addActionListener(this);
           buttonPanel.add(endButton);
           
           add(buttonPanel,"South");

           init();
       }

       public void paint(Graphics g){
             oneRoad.draw(g);

             for (int i=0;i<4;i++){

                 if (vehi[i] instanceof truck){
                    boolean stop=false;

                    if (vehi[i].canHit()){
                       stop=true;
                       vehi[i].safeSecond=10;
                    }

                    //check if the truck is close to any intersection
                    for (int j=0;j<4;j++){
                        if (vehi[i].closeToCross(leve[j]) && leve[j].getDown()){
                            stop=true;
                            break;
                        }
                    }

                    if (! stop) {
                        if (vehi[i].safeSecond==0){
                           vehi[i].move();
                        }
                        else if (vehi[i].safeSecond==1){
                           vehi[i].safeSecond=0;
                           vehi[i].move();
                        }
                        else{
                           vehi[i].safeSecond --;
                        }
                    }
                 }
                 else {
                    vehi[i].move();
                 }

                 vehi[i].draw(g);
             }

             for (int j=0;j<4;j++){
                 if ((vehi[0].closeToCross(leve[j]) || vehi[1].closeToCross(leve[j])) && !leve[j].getDown()){
                     leve[j].setDown(true);
                 }
                 if (vehi[0].passedCross(leve[j]) && vehi[1].passedCross(leve[j]) && leve[j].getDown()){
                     leve[j].setDown(false);
                 }
                 leve[j].draw(g);
             }
       }

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -