📄 traffic.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 + -