public Simulation() { ListeRoutes = new List<Route>(); ListeFeux = new List<Feu>(); ListeParcours = new List<Parcours>(); GrilleSimulation = new Grille(33, 50, 0, 0); }
public double update(int temps, Grille grille) { OldDirection = carActualDirection; updateAvailableDirection(grille); Asphalte myActualCell = (Asphalte)grille.getCellule(CoordonneeXInt, CoordonneeYInt); if (actualRoute != null && myActualCell.ListeRoute.Contains(actualRoute)) { speed = actualRoute.Vitesse; } else { foreach (Route route in myActualCell.ListeRoute) { actualRoute = route; speed = route.Vitesse; break; } } if (updateToMyBestDirectionIfPossible(grille)) { return(speed); } return(speed); }
private void updateAvailableDirection(Grille grille) { AvailableDirection.est = isAsphalt(grille, CoordonneeXInt + 1, CoordonneeYInt); AvailableDirection.nord = isAsphalt(grille, CoordonneeXInt, CoordonneeYInt - 1); AvailableDirection.ouest = isAsphalt(grille, CoordonneeXInt - 1, CoordonneeYInt); AvailableDirection.sud = isAsphalt(grille, CoordonneeXInt, CoordonneeYInt + 1); }
public Simulation() { ListeRoutes = new List <Route>(); ListeFeux = new List <Feu>(); ListeParcours = new List <Parcours>(); GrilleSimulation = new Grille(33, 50, 0, 0); }
private bool tryDirection(Direction newDirection, Grille grille) { bool success = false; if (success=validDirection(newDirection, grille)) carActualDirection = newDirection; return success; }
private bool tryDirection(Direction newDirection, Grille grille) { bool success = false; if (success = validDirection(newDirection, grille)) { carActualDirection = newDirection; } return(success); }
private List<Direction> directionsAvailable(Grille grille) { List<Direction> list = new List<Direction>(); Direction old = carActualDirection; foreach (Direction dir in Enum.GetValues(typeof(Direction))) { if (tryDirection(dir, grille)) { list.Add(dir); } } carActualDirection = old; return list; }
private List <Direction> directionsAvailable(Grille grille) { List <Direction> list = new List <Direction>(); Direction old = carActualDirection; foreach (Direction dir in Enum.GetValues(typeof(Direction))) { if (tryDirection(dir, grille)) { list.Add(dir); } } carActualDirection = old; return(list); }
private bool validDirection(Direction direction, Grille grille) { bool success = false; switch (direction) { case Direction.EST: if (isAsphalt(grille, CoordonneeXInt + 1, CoordonneeYInt)) { CoordonneeX = CoordonneeXInt + 1; CoordonneeY = CoordonneeYInt; success = true; } break; case Direction.NORD: if (isAsphalt(grille, CoordonneeXInt, CoordonneeYInt - 1)) { CoordonneeX = CoordonneeXInt; CoordonneeY = CoordonneeYInt - 1; success = true; } break; case Direction.OUEST: if (isAsphalt(grille, CoordonneeXInt - 1, CoordonneeYInt)) { CoordonneeX = CoordonneeXInt - 1; CoordonneeY = CoordonneeYInt; success = true; } break; case Direction.SUD: if (isAsphalt(grille, CoordonneeXInt, CoordonneeYInt + 1)) { CoordonneeX = CoordonneeXInt; CoordonneeY = CoordonneeYInt + 1; success = true; } break; } return(success); }
private bool updateToMyBestDirectionIfPossible(Grille grille) { bool chooseEast = CoordonneeDeFinX - CoordonneeXInt > 0; bool chooseSouth = CoordonneeDeFinY - CoordonneeYInt > 0; bool changeDirectionSucceed = false; if (isOldDirectionStillValid(chooseEast, chooseSouth)) { return(changeDirectionSucceed); } if (CoordonneeXInt == (int)CoordonneeDeFinX && CoordonneeYInt == (int)CoordonneeDeFinY) { speed = 0; return(changeDirectionSucceed); } if (chooseEast && carActualDirection != Direction.OUEST && carActualDirection != Direction.EST) { changeDirectionSucceed = tryDirection(Direction.EST, grille);; } if (!chooseEast && carActualDirection != Direction.EST && carActualDirection != Direction.OUEST) { changeDirectionSucceed = tryDirection(Direction.OUEST, grille); } if (chooseSouth && carActualDirection != Direction.NORD && carActualDirection != Direction.SUD) { changeDirectionSucceed = tryDirection(Direction.SUD, grille); } if (!chooseSouth && carActualDirection != Direction.SUD && carActualDirection != Direction.NORD) { changeDirectionSucceed = tryDirection(Direction.NORD, grille); } return(changeDirectionSucceed); }
private bool isAsphalt(Grille grille, int i, int j) { return(grille.getCellule(i, j) is Asphalte); }
private bool validDirection(Direction direction, Grille grille) { bool success = false; switch (direction) { case Direction.EST: if (isAsphalt(grille, CoordonneeXInt + 1, CoordonneeYInt)) { CoordonneeX = CoordonneeXInt + 1; CoordonneeY = CoordonneeYInt; success = true; } break; case Direction.NORD: if (isAsphalt(grille, CoordonneeXInt, CoordonneeYInt - 1)) { CoordonneeX = CoordonneeXInt; CoordonneeY = CoordonneeYInt - 1; success = true; } break; case Direction.OUEST: if (isAsphalt(grille, CoordonneeXInt - 1, CoordonneeYInt)) { CoordonneeX = CoordonneeXInt - 1; CoordonneeY = CoordonneeYInt; success = true; } break; case Direction.SUD: if (isAsphalt(grille, CoordonneeXInt, CoordonneeYInt + 1)) { CoordonneeX = CoordonneeXInt; CoordonneeY = CoordonneeYInt + 1; success = true; } break; } return success; }
private bool isAsphalt(Grille grille, int i, int j) { return grille.getCellule(i, j) is Asphalte; }
public double update(int temps, Grille grille) { OldDirection = carActualDirection; updateAvailableDirection(grille); Asphalte myActualCell = (Asphalte)grille.getCellule(CoordonneeXInt, CoordonneeYInt); if (actualRoute != null && myActualCell.ListeRoute.Contains(actualRoute)) { speed = actualRoute.Vitesse; } else { foreach (Route route in myActualCell.ListeRoute) { actualRoute = route; speed = route.Vitesse; break; } } if (updateToMyBestDirectionIfPossible(grille)) return speed; return speed; }
private bool updateToMyBestDirectionIfPossible(Grille grille) { bool chooseEast = CoordonneeDeFinX - CoordonneeXInt > 0; bool chooseSouth = CoordonneeDeFinY - CoordonneeYInt > 0; bool changeDirectionSucceed = false; if (isOldDirectionStillValid(chooseEast, chooseSouth)) { return changeDirectionSucceed; } if (CoordonneeXInt == (int)CoordonneeDeFinX && CoordonneeYInt == (int)CoordonneeDeFinY) { speed = 0; return changeDirectionSucceed; } if (chooseEast && carActualDirection != Direction.OUEST && carActualDirection != Direction.EST) { changeDirectionSucceed = tryDirection(Direction.EST, grille); ; } if (!chooseEast && carActualDirection != Direction.EST && carActualDirection != Direction.OUEST) { changeDirectionSucceed = tryDirection(Direction.OUEST, grille); } if (chooseSouth && carActualDirection != Direction.NORD && carActualDirection != Direction.SUD) { changeDirectionSucceed = tryDirection(Direction.SUD, grille); } if (!chooseSouth && carActualDirection != Direction.SUD && carActualDirection != Direction.NORD) { changeDirectionSucceed = tryDirection(Direction.NORD, grille); } return changeDirectionSucceed; }