Beispiel #1
0
        /// <summary>
        /// Ejecución del algoritmo
        /// </summary>
        /// <returns>Punto del mapa al que se llega</returns>
        private Baldosa CalculoAlgoritmo()
        {
            Baldosa resultado = null;
            var     salir     = false;

            while (!salir)
            {
                if (Abierta.Count == 0)
                {
                    salir = true;
                }
                else
                {
                    var actual = Abierta.Dequeue();

                    //Cerramos el nodo
                    actual.Abierto = false;
                    MainThread.BeginInvokeOnMainThread(() => { actual.Celda.BackgroundColor = Color.Teal; });

                    if (actual.Posicion.Equals(Meta.Posicion))
                    {
                        resultado = Mapa[Meta.Posicion.X, Meta.Posicion.Y];
                        salir     = true;
                    }
                    else
                    {
                        // Expansion del punto actual
                        if (MovimientoDiagonal && MovimientoOrtogonal)
                        {
                            ExpansionConDiagonales(actual);
                        }
                        else
                        {
                            if (MovimientoOrtogonal)
                            {
                                ExpansionOrtogonal(actual);
                            }
                            if (MovimientoDiagonal)
                            {
                                ExpansionDiagonal(actual);
                            }
                        }
                    }
                }
            }

            return(resultado);
        }