Beispiel #1
0
 public Simulation()
 {
     ListeRoutes = new List<Route>();
     ListeFeux = new List<Feu>();
     ListeParcours = new List<Parcours>();
     GrilleSimulation = new Grille(33, 50, 0, 0);
 }
Beispiel #2
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);
        }
Beispiel #3
0
 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);
 }
Beispiel #4
0
 public Simulation()
 {
     ListeRoutes      = new List <Route>();
     ListeFeux        = new List <Feu>();
     ListeParcours    = new List <Parcours>();
     GrilleSimulation = new Grille(33, 50, 0, 0);
 }
 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);
 }
        private bool tryDirection(Direction newDirection, Grille grille)
        {
            bool success = false;
            if (success=validDirection(newDirection, grille))
                carActualDirection = newDirection;

            return success;
        }
Beispiel #7
0
        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;
 }
Beispiel #9
0
        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);
        }
Beispiel #10
0
        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);
        }
Beispiel #11
0
        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);
        }
Beispiel #12
0
 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;
        }