import java.util.*; import javax.swing.*; import javax.swing.event.*; import java.awt.*; import java.awt.event.*; class Fenetre extends JFrame { static double debit = 0.05; static Autoroute route; Fenetre(Autoroute r) { super("Simulation d'autoroute"); setSize(800,400); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); route = r; getContentPane().add(new PanneauDessin()); setVisible(true); } } class PanneauDessin extends JComponent { PanneauDessin() { super(); setOpaque(true); setBackground(Color.white); } public void paintComponent(Graphics g) { super.paintComponent(g); g.setColor(Color.green); g.fillRect(0,0,getWidth(),70); g.fillRect(0,110,getWidth(),getHeight()-20*Fenetre.route.nVoies()); g.setColor(Color.black); g.fillRect(0,70,getWidth(),20*Fenetre.route.nVoies()); g.setColor(Color.white); for (int i = 0; i < Fenetre.route.nVoies()-1; i++) g.fillRect(0,90+20*i,getWidth(),5); g.setColor(Color.red); for (int voie = 0; voie < Fenetre.route.nVoies(); voie++) for (int i = 0; i < Fenetre.route.longueur(); i++) if (Fenetre.route.existeVehicule(voie,i) != null) g.fillRect(i*getWidth()/Fenetre.route.longueur(),80+20*voie,10,6); } } class Test { static Autoroute A62; public static void main(String args[]) { A62 = new Autoroute(3,1000); Fenetre f = new Fenetre(A62); while (true) { // On ajoute de temps en temps des vehicules au debut de la route if (Math.random() < Fenetre.debit*A62.nVoies()) { Vehicule auto = Vehicule.vehiculeAleatoire(A62); A62.ajouteVehicule(Vehicule.vehiculeAleatoire(A62)); } // On fait bouger ces vehicules ListeV listeAuto = A62.listeVehicules(); while (!listeAuto.estVide()) {listeAuto.valeur().avance(); listeAuto = listeAuto.reste(); } // On dessine la fenetre f.repaint(); // On attend un peu try { Thread.sleep(50); } catch (Exception e) {}; } } }