Exemplo n.º 1
0
        public Strada(Corsia corsiadx, Corsia corsiasx, Semaforo semaforodx, Semaforo semaforosx)
        {
            corsiaDX = corsiadx;
            corsiaSX = corsiasx;

            if (corsiaDX.Lunghezza() != corsiaSX.Lunghezza())
            {
                throw new StradaException("Le corsie devono avere la stessa lunghezza");
            }

            semaforoDX = semaforodx;
            semaforoSX = semaforosx;

            Debug.WriteLine("---------------------------------------------------");
            Debug.WriteLine("Semaforo DX - posizione: " + Math.Round(semaforoDX.posizioneX, 2));
            Debug.WriteLine("Semaforo SX - posizione: " + Math.Round(semaforoSX.posizioneX, 2));
        }
Exemplo n.º 2
0
        private void Window_Loaded(object sender, RoutedEventArgs e)
        {
            // Creazione guidatori
            var Mamma  = new Guidatore(GuidatoreTipologia.Prudente);
            var Emilie = new Guidatore(GuidatoreTipologia.Normale);

            // Creazioni veicoli
            var primo   = new Veicolo(VeicoloTipologia.Macchina, Emilie);
            var secondo = new Veicolo(VeicoloTipologia.Macchina, Emilie);

            // Calcolo tempo di percorrenza
            double tempoMinimoDiPercorrenza   = Configuratore.TempoMinimoPercorrenza(120, VeicoloTipologia.Macchina, GuidatoreTipologia.Normale, 17.8);
            double durataSovrapposizioneRosso = Utilita.ApprossimaMaggiore(tempoMinimoDiPercorrenza, 5) + DatiGenerali.Semaforo.DurataSicurezza;

            // Creazione semaforo
            var semDX = new Semaforo(150, SemaforoLuce.Verde, DatiGenerali.Semaforo.DurataVerde, DatiGenerali.Semaforo.DurataGiallo, durataSovrapposizioneRosso, DatiGenerali.Semaforo.DurataSicurezza);
            var semSX = new Semaforo(200, SemaforoLuce.Verde, DatiGenerali.Semaforo.DurataVerde, DatiGenerali.Semaforo.DurataGiallo, durataSovrapposizioneRosso, DatiGenerali.Semaforo.DurataSicurezza);

            // Creazione corsie parti
            var cpDX1 = new CorsiaParte(19.44, 100, 3);     // 70 km/h
            var cpDX2 = new CorsiaParte(13.88, 50, 3);      // 50 km/h
            var cpDX3 = new CorsiaParte(8.33, 50, 3);       // 30 km/h   --- DEFINIRLE IN COSTANTI SIMULAZIONE ---
            var cpDX4 = new CorsiaParte(13.88, 50, 3);      // 50 km/h
            var cpDX5 = new CorsiaParte(19.44, 100, 3);     // 70 km/h

            // Creazione corsia DX
            var cDX = new Corsia(new List <CorsiaParte> {
                cpDX1, cpDX2, cpDX3, cpDX4, cpDX5
            });

            // Creazione corsia SX
            var cSX = new Corsia(new List <CorsiaParte> {
                cpDX1, cpDX2, cpDX3, cpDX4, cpDX5
            });

            Debug.WriteLine("Conteggio numero partia corsia: " + cSX.Lista.Count());
            Debug.WriteLine("Lunghezza corsia: " + cSX.Lunghezza());

            // Creazione coda
            var codaDX = new Coda(new Queue <Veicolo>(new[] { primo, secondo }));

            Debug.WriteLine("Numero Veicoli in coda: " + codaDX.codaVeicoli.Count());

            // Creazione strada
            var strada = new Strada(cDX, cSX, semDX, semSX);

            Debug.WriteLine("Lunghezza strada: " + strada.Lunghezza());



            // Inizio simulazione
            Tempo.Ora = 0;

            // Per i risultati
            StringBuilder testoRisultati = new StringBuilder();

            // SIMULAZIONE PER X VOLTE L'INTERVALLO DEFINITO
            for (int i = 0; i < 200; i++)
            {
                semDX.Ciclo();
                testoRisultati.AppendLine("--------------------------------");
                testoRisultati.AppendLine("Tempo: " + Converti.FormatoHMS(Tempo.Ora));
                testoRisultati.AppendLine("Luce : " + semDX.semaforoLuce);

                Tempo.Ora += DatiGenerali.Simulazione.Intervallo;
            }

            // Visualizza i risultati
            tbRisultati.Text = testoRisultati.ToString();
        }