Пример #1
0
 /// <summary>
 /// Verifica que la posición no esté por fuera de la posición final del camino
 /// </summary>
 /// <param name="viajero"></param>
 /// <param name="pos"></param>
 /// <returns></returns>
 public bool MovimientoFueraDeRango(Viajero viajero, int pos)
 {
     if (pos > camino.Count - 1)
     {
         System.Console.WriteLine("No se puede ir más allá del destino");
         return(true);
     }
     return(false);
 }
Пример #2
0
 /// <summary>
 /// Verifica que el viajer no se mueva para atrás o a la posición que tiene actualmente
 /// </summary>
 /// <param name="viajero"></param>
 /// <param name="pos"></param>
 /// <returns></returns>
 public bool MovimientoHaciaAtras(Viajero viajero, int pos)
 {
     if (pos <= viajero.GetPosicionActual()[0])
     {
         System.Console.WriteLine("No se puede ir a una posición anterior o igual a la que estás");
         return(true);
     }
     return(false);
 }
Пример #3
0
 /// <summary>
 /// Verifica que la disponibilidad del destino sea mayor a 0
 /// </summary>
 /// <param name="viajero"></param>
 /// <param name="pos"></param>
 /// <returns></returns>
 public bool MovimientoADisponibilidadCero(Viajero viajero, int pos)
 {
     System.Console.WriteLine("Disponibilidad " + camino[pos].Disponibilidad);
     if (camino[pos].Disponibilidad == 0)
     {
         System.Console.WriteLine("No hay disponibilidad en la estación a la que quieres ir");
         return(true);
     }
     return(false);
 }
Пример #4
0
        /// <summary>
        /// Es un movimineto válido si no se quiere mover fuera del rango del camino
        /// moverse haci atrás o a una experiencia sin disponibilidad
        /// </summary>
        /// <param name="viajero"></param>
        /// <param name="pos"></param>
        /// <returns></returns>
        public bool MovimientoValido(Viajero viajero, int pos)
        {
            if (!MovimientoFueraDeRango(viajero, pos) && !MovimientoHaciaAtras(viajero, pos) && !MovimientoADisponibilidadCero(viajero, pos))
            {
                System.Console.WriteLine("Movimiento válido");
                return(true);
            }

            System.Console.WriteLine("Movimiento inválido");
            return(false);
        }
Пример #5
0
 public int CantidadDeEntradas(Viajero viajero)
 {
     if (entradas.ContainsKey(viajero.Id))
     {
         int cantEntradas = entradas[viajero.Id] + 1;
         entradas[viajero.Id] = cantEntradas;
     }
     else
     {
         entradas.Add(viajero.Id, 1);
     }
     return(entradas[viajero.Id]);
 }
Пример #6
0
 /// <summary>
 /// Si el viajero no terminó el juego, si es su turno y el movimiento es válido realiza el movimiento
 /// </summary>
 /// <param name="viajero"></param>
 /// <param name="posicion"></param>
 public void MoverViajero(Viajero viajero, int posicion)
 {
     if (viajero.EnJuego == false)
     {
         System.Console.WriteLine("Ya terminaste");
         throw new MiExcepcion("Ya terminaste el juego no te puedes mover");
     }
     else if (DeQuienEsElTurno().Id != viajero.Id)
     {
         System.Console.WriteLine("No es tu turno");
         throw new MiExcepcion("No es tu turno, no te puedes mover");
     }
     else if (MovimientoValido(viajero, posicion))
     {
         camino[viajero.GetPosicionActual()[0]].Disponibilidad++;
         viajero.SetPosicionActual(posicion, camino[posicion].Disponibilidad);
         camino[posicion].Disponibilidad -= 1;
         if (posicion == camino.Count - 1)
         {
             viajero.EnJuego = false;
         }
         camino[posicion].Accion(viajero);
     }
 }
Пример #7
0
        /// <summary>
        /// Verifica si es el último de los viajeros que es al que le corresponde jugar
        /// </summary>
        /// <returns></returns>
        public Viajero DeQuienEsElTurno()
        {
            if (viajeros.Count > 0)
            {
                Viajero viajeroEnMinimaPos = viajeros[0];

                for (int i = 1; i < viajeros.Count; i++)
                {
                    if (viajeros[i].GetPosicionActual()[0] < viajeroEnMinimaPos.GetPosicionActual()[0])
                    {
                        viajeroEnMinimaPos = viajeros[i];
                    }
                    else if (viajeros[i].GetPosicionActual()[0] == viajeroEnMinimaPos.GetPosicionActual()[0])
                    {
                        if (viajeros[i].GetPosicionActual()[1] < viajeroEnMinimaPos.GetPosicionActual()[1])
                        {
                            viajeroEnMinimaPos = viajeros[i];
                        }
                    }
                }
                return(viajeroEnMinimaPos);
            }
            return(null);
        }
Пример #8
0
 /// <summary>
 /// Aumenta los puntos en 2 en cada entrada del viajero
 /// </summary>
 /// <param name="viajero"></param>
 public override void Accion(Viajero viajero)
 {
     viajero.PuntosAcumulados += 2;
 }
Пример #9
0
 /// <summary>
 /// Método para que cada experiencia implemente
 /// </summary>
 /// <param name="viajero"></param>
 public abstract void Accion(Viajero viajero);
Пример #10
0
        /// <summary>
        /// Le pasa el viajero y la posición destino a Movimientos para que se encarge del movimiento
        /// Soporta [Polimorfismo] puede recir subtipos de Viajero
        /// </summary>
        /// <param name="viajero"></param>
        /// <param name="pos"></param>

        public void MoverViajero(Viajero viajero, int pos)
        {
            Movimiento movimiento = new Movimiento(Camino, Viajeros);

            movimiento.MoverViajero(viajero, pos);
        }
Пример #11
0
        public override void Accion(Viajero viajero)
        {
            int cantidadDeEntradas = CantidadDeEntradas(viajero);

            viajero.PuntosAcumulados += (2 * cantidadDeEntradas - 1);
        }
Пример #12
0
 public override void Accion(Viajero viajero)
 {
     viajero.MonedasAcumuladas = 0;
     viajero.PuntosAcumulados  = 0;
     viajero.EnJuego           = true;
 }
Пример #13
0
 public override void Accion(Viajero viajero)
 {
     viajero.EnJuego = false;
 }
Пример #14
0
 public override void Accion(Viajero viajero)
 {
     viajero.MonedasAcumuladas += 3;
 }