Ejemplo n.º 1
0
        public void runParcours(int temps)
        {
            double speed = MaVoiture.update(temps, GrilleSimulation);

            deplaceVoiture(MaVoiture, speed);
            foreach (Parcours parcours in ListeParcours)
            {
                //mouvement des voitures
                string  ParcoursDirection = parcours.getDirection();
                Voiture voitureTerminee   = null;
                foreach (Voiture voiture in parcours.ListeVoitures)
                {
                    deplaceVoiture(voiture, (double)parcours.Vitesse);
                    //si atteint la fin, disparait
                    if ((Math.Abs(voiture.CoordonneeX - parcours.XDebut) + Math.Abs(voiture.CoordonneeX - parcours.XFin)) > Math.Abs(parcours.XFin - parcours.XDebut))
                    {
                        voitureTerminee = voiture;
                    }
                    else if ((Math.Abs(voiture.CoordonneeY - parcours.YDebut) + Math.Abs(voiture.CoordonneeY - parcours.YFin)) > Math.Abs(parcours.YFin - parcours.YDebut))
                    {
                        voitureTerminee = voiture;
                    }
                }

                if (voitureTerminee != null)
                {
                    parcours.ListeVoitures.Remove(voitureTerminee);
                }

                //Ajout des voitures
                int tempsAjuste = temps - parcours.Phase;
                if (tempsAjuste >= 0)
                {
                    if (tempsAjuste % (parcours.Periode) == 0)
                    {
                        parcours.ListeVoitures.Add(new Voiture(parcours.XDebut, parcours.YDebut, GrilleSimulation.TailleCellules, ParcoursDirection));
                    }
                }
            }
        }
Ejemplo n.º 2
0
        private void deplaceVoiture(Voiture voiture, double vitesse)
        {
            //regarde si feu rouge
            Cellule celluleDroiteDeLaVoiture = GrilleSimulation.getCelluleDroite((int)voiture.CoordonneeX, (int)voiture.CoordonneeY, voiture.getCarDirectionString());
            bool    changedCell = false;

            if (celluleDroiteDeLaVoiture.GetType() == typeof(Feu))
            {
                Feu feu = (Feu)celluleDroiteDeLaVoiture;

                if (enFaceFeuRouge(feu, voiture))
                {
                    //Si rouge, bouge pas !
                    voiture.MovingFlag = false;
                    return;
                }
            }
            else if (!voiture.MovingFlag)
            {
                voiture.MovingFlag = true;
            }

            voiture.run(vitesse / (double)ParametresSimulation.Echelle);
        }
Ejemplo n.º 3
0
 private bool enFaceFeuRouge(Feu feu, Voiture voiture)
 {
     return (feu.CouleurFeu == Couleur.Rouge || feu.CouleurFeu == Couleur.Rouge) && feu.Position == getDirectionOpposee(voiture.getCarDirectionString());
 }
Ejemplo n.º 4
0
        private void deplaceVoiture(Voiture voiture, double vitesse)
        {
            //regarde si feu rouge
            Cellule celluleDroiteDeLaVoiture = GrilleSimulation.getCelluleDroite((int)voiture.CoordonneeX, (int)voiture.CoordonneeY, voiture.getCarDirectionString());
            bool changedCell = false;

            if (celluleDroiteDeLaVoiture.GetType() == typeof(Feu))
            {
                Feu feu = (Feu)celluleDroiteDeLaVoiture;

                if (enFaceFeuRouge(feu, voiture))
                {
                    //Si rouge, bouge pas !
                    voiture.MovingFlag = false;
                    return;
                }

            }
            else if (!voiture.MovingFlag)
            {
                voiture.MovingFlag = true;
            }

            voiture.run(vitesse / (double)ParametresSimulation.Echelle);
            
        }
Ejemplo n.º 5
0
 private bool enFaceFeuRouge(Feu feu, Voiture voiture)
 {
     return((feu.CouleurFeu == Couleur.Rouge || feu.CouleurFeu == Couleur.Rouge) && feu.Position == getDirectionOpposee(voiture.getCarDirectionString()));
 }