/// <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); }
/// <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); }
/// <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); } }