예제 #1
0
        private void IniciarGrafo(Tablero tablero)
        {
            grafo = new Matriz(tablero.Alto, tablero.Ancho);

            for (int x = 0; x < tablero.Ancho; x++)
            {
                for (int y = 0; y < tablero.Alto; y++)
                {
                    if (tablero.GetEstado(x, y) == Estado.libre)
                    {
                        int        id      = tablero.GetId(x, y);
                        List <int> vecinos = tablero.CasillasAdyacentes(x, y);

                        vecinos.ForEach(vecino => {
                            if (tablero.GetEstado(vecino) != Estado.ocupado && !grafo.IsConectado(id, vecino))
                            {
                                float dist = tablero.GetDistancia(id, vecino);
                                grafo.AddArista(id, vecino, dist);
                            }
                        });
                    }
                }
            }

            Console.WriteLine("El grafo es: \n" + grafo.ToString());
        }