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)); } } } }
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); }
private bool enFaceFeuRouge(Feu feu, Voiture voiture) { return (feu.CouleurFeu == Couleur.Rouge || feu.CouleurFeu == Couleur.Rouge) && feu.Position == getDirectionOpposee(voiture.getCarDirectionString()); }
private bool enFaceFeuRouge(Feu feu, Voiture voiture) { return((feu.CouleurFeu == Couleur.Rouge || feu.CouleurFeu == Couleur.Rouge) && feu.Position == getDirectionOpposee(voiture.getCarDirectionString())); }