private Posicion BuscarSiguiente(Posicion actual, SentidoBusqueda sentido, T loQueBusco)
        {
            var sgte = Siguiente(actual, sentido);

            if (sgte.elem != null && sgte.elem.Equals(loQueBusco))
            {
                return(sgte);
            }
            else
            {
                return(null);
            }
        }
        private CoordenadasObjetoBuscado BuscarTodoEnElSentido(Posicion posicionInicial, T[] loQueBusco, SentidoBusqueda sentido)
        {
            CoordenadasObjetoBuscado res = new CoordenadasObjetoBuscado(loQueBusco);

            Posicion posActual = posicionInicial;

            for (int i = 0; i < loQueBusco.Length; i++)
            {
                if (posActual.elem != null && posActual.elem.Equals(loQueBusco[i]))
                {
                    res.posiciones[i] = posActual;
                }
                else
                {
                    res.encontrados = false;
                    break;
                }
                posActual = Siguiente(posActual, sentido);
            }

            return(res);
        }
        private Posicion Siguiente(Posicion actual, SentidoBusqueda sentido)
        {
            var next = matriz.GetPosicion(actual.X + sentido.X, actual.Y + sentido.Y);

            return(next);
        }