public Feu(int cell_size, Feu feu) : base(feu.CoordonneeX, feu.CoordonneeY, cell_size) { // Copy constructor to create the proper derived object from Cellule. Position = feu.Position; Duree = feu.Duree; if (Position == "E") { CouleurFeu = Couleur.Vert; } else { CouleurFeu = Couleur.Rouge; } }
public Feu(int cell_size, Feu feu):base(feu.CoordonneeX, feu.CoordonneeY, cell_size) { // Copy constructor to create the proper derived object from Cellule. Position = feu.Position; Duree = feu.Duree; if (Position == "E"){ CouleurFeu = Couleur.Vert; } else { CouleurFeu = Couleur.Rouge; } }
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); }
public void RemplirGrille() { //Ajout des routes foreach (Route r in ListeRoutes) { int startX = 0, startY = 0, stopX = 0, stopY = 0; if (r.XDebut == r.XFin) { startX = r.XDebut; stopX = startX; if (r.YDebut < r.YFin) { startY = r.YDebut; stopY = r.YFin; } else { startY = r.YFin; stopY = r.YDebut; } } else if (r.YDebut == r.YFin) { startY = r.YDebut; stopY = startY; if (r.XDebut < r.XFin) { startX = r.XDebut; stopX = r.XFin; } else { startX = r.XFin; stopX = r.XDebut; } } for (int i = startX; i <= stopX; i++) { for (int j = startY; j <= stopY; j++) { if (GrilleSimulation.getCellule(i, j).GetType() != typeof(Asphalte)) { Asphalte asphalte = new Asphalte(i, j, GrilleSimulation.TailleCellules); GrilleSimulation.setCellule(i,j,asphalte); if (i > 0 && GrilleSimulation.getCellule(i - 1, j).GetType() == typeof(Asphalte)) { asphalte.addLeftRightLine(); } if (j > 0 && GrilleSimulation.getCellule(i , j - 1).GetType() == typeof(Asphalte)) { asphalte.addUpDownLine(); } } ((Asphalte)GrilleSimulation.getCellule(i, j)).ListeRoute.Add(r); } } } // Ajout des feux for (int i = 0; i<ListeFeux.Count;i++) { Feu f = ListeFeux[i]; int offsetX = 0, offsetY = 0; switch (f.Position) { case "N": offsetY = -1; offsetX = -1; break; case "S": offsetY = 1; offsetX = 1; break; case "E": offsetX = 1; offsetY = -1; break; case "O": offsetX = -1; offsetY = 1; break; } f.CoordonneeX += offsetX; f.CoordonneeY += offsetY; Feu nouveauFeu = new Feu(GrilleSimulation.TailleCellules, f); GrilleSimulation.setCellule(f.CoordonneeX,f.CoordonneeY, nouveauFeu); ListeFeux[i] = nouveauFeu; } //Ajout de la voiture int initialVoitureX = ParametresSimulation.XDepart; int initialVoitureY = ParametresSimulation.YDepart; int endVoitureX = ParametresSimulation.XArrivee; int endVoitureY = ParametresSimulation.YArrivee; if (GrilleSimulation.getCellule(initialVoitureX, initialVoitureY).GetType() == typeof(Asphalte)) { Asphalte start = (Asphalte)GrilleSimulation.getCellule(initialVoitureX, initialVoitureY); MaVoiture = new VoitureIntelligente(start.CoordonneeX, start.CoordonneeY, start.TailleCellule, "O", endVoitureX, endVoitureY); } }
private bool enFaceFeuRouge(Feu feu, Voiture voiture) { return (feu.CouleurFeu == Couleur.Rouge || feu.CouleurFeu == Couleur.Rouge) && feu.Position == getDirectionOpposee(voiture.getCarDirectionString()); }
public void RemplirGrille() { //Ajout des routes foreach (Route r in ListeRoutes) { int startX = 0, startY = 0, stopX = 0, stopY = 0; if (r.XDebut == r.XFin) { startX = r.XDebut; stopX = startX; if (r.YDebut < r.YFin) { startY = r.YDebut; stopY = r.YFin; } else { startY = r.YFin; stopY = r.YDebut; } } else if (r.YDebut == r.YFin) { startY = r.YDebut; stopY = startY; if (r.XDebut < r.XFin) { startX = r.XDebut; stopX = r.XFin; } else { startX = r.XFin; stopX = r.XDebut; } } for (int i = startX; i <= stopX; i++) { for (int j = startY; j <= stopY; j++) { if (GrilleSimulation.getCellule(i, j).GetType() != typeof(Asphalte)) { Asphalte asphalte = new Asphalte(i, j, GrilleSimulation.TailleCellules); GrilleSimulation.setCellule(i, j, asphalte); if (i > 0 && GrilleSimulation.getCellule(i - 1, j).GetType() == typeof(Asphalte)) { asphalte.addLeftRightLine(); } if (j > 0 && GrilleSimulation.getCellule(i, j - 1).GetType() == typeof(Asphalte)) { asphalte.addUpDownLine(); } } ((Asphalte)GrilleSimulation.getCellule(i, j)).ListeRoute.Add(r); } } } // Ajout des feux for (int i = 0; i < ListeFeux.Count; i++) { Feu f = ListeFeux[i]; int offsetX = 0, offsetY = 0; switch (f.Position) { case "N": offsetY = -1; offsetX = -1; break; case "S": offsetY = 1; offsetX = 1; break; case "E": offsetX = 1; offsetY = -1; break; case "O": offsetX = -1; offsetY = 1; break; } f.CoordonneeX += offsetX; f.CoordonneeY += offsetY; Feu nouveauFeu = new Feu(GrilleSimulation.TailleCellules, f); GrilleSimulation.setCellule(f.CoordonneeX, f.CoordonneeY, nouveauFeu); ListeFeux[i] = nouveauFeu; } //Ajout de la voiture int initialVoitureX = ParametresSimulation.XDepart; int initialVoitureY = ParametresSimulation.YDepart; int endVoitureX = ParametresSimulation.XArrivee; int endVoitureY = ParametresSimulation.YArrivee; if (GrilleSimulation.getCellule(initialVoitureX, initialVoitureY).GetType() == typeof(Asphalte)) { Asphalte start = (Asphalte)GrilleSimulation.getCellule(initialVoitureX, initialVoitureY); MaVoiture = new VoitureIntelligente(start.CoordonneeX, start.CoordonneeY, start.TailleCellule, "O", endVoitureX, endVoitureY); } }
private bool enFaceFeuRouge(Feu feu, Voiture voiture) { return((feu.CouleurFeu == Couleur.Rouge || feu.CouleurFeu == Couleur.Rouge) && feu.Position == getDirectionOpposee(voiture.getCarDirectionString())); }