public Robo(INavegacao navegacao) { // De acordo com sentido de sua frente o robo muda de comportamento dinamicamente alterando sua classe (State Pattern) _navegacao = navegacao; string sentido = _navegacao.GetSentido(); switch (sentido.ToUpper()) { case Facing.North: Direcao = new Norte(_navegacao); break; case Facing.East: Direcao = new Leste(_navegacao); break; case Facing.South: Direcao = new Sul(_navegacao); break; case Facing.West: Direcao = new Oeste(_navegacao); break; } }
public string RealizarMovimentacoes(coordenada coordenada) { List <Modelo> lista = new List <Modelo>(); Modelo modelo; String[] vetorCoordenadas = coordenada.Criterios.Split(';'); foreach (string modelos in vetorCoordenadas) { string[] dadosModelo = modelos.Split(','); modelo = new Modelo { Direacao = char.Parse(dadosModelo[0].ToUpper()), Intensidade = int.Parse(dadosModelo[1]) }; lista.Add(modelo); } foreach (Modelo mode in lista) { EnumDirecao retorno = (EnumDirecao)Enum.ToObject(typeof(EnumDirecao), mode.Direacao); Type type = Type.GetType("Cartesiano." + retorno.ToString()); IDirecao objeto = (IDirecao)Activator.CreateInstance(type); objeto.Add(coordenada, mode); coordenada = objeto.GetRetorno(); } return(coordenada.CoordenadaX.ToString() + "," + coordenada.CoordenadaY.ToString()); }
public void RotacionarDireita() { Direcao = Direcao.RotacionaDireita(); }
public void RotacionarEsquerda() { Direcao = Direcao.RotacionaEsquerda(); }