コード例 #1
0
        private void PathFinding(int StopSteps)
        {
            int count    = 0;
            var visited  = MainProgramInstance.Visited;
            var frontier = new Queue <int>();

            MainProgramInstance.Visited.Clear();
            frontier.Enqueue(MainProgramInstance.Input);
            while ((!visited.Contains(MainProgramInstance.Target)) && (count < StopSteps))
            {
                Console.WriteLine(frontier.Count);
                var nextFrontier = MainProgramVM.BFSPathFinder(frontier, hexList, mapDict, MainProgramInstance.Target);
                frontier = nextFrontier;
                if (visited.Contains(MainProgramInstance.Target))
                {
                    Tbx.Text           = $"We found the minimum Steps of {count}";
                    Btn_Next.IsEnabled = false;
                }
                else
                {
                    Tbx.Text = $"Start: {MainProgramInstance.Input} End: {MainProgramInstance.Target} It is the {count} Step(s)";
                }
                count++;
            }
        }
コード例 #2
0
        public MainWindow()
        {
            InitializeComponent();
            MainProgramInstance = MainProgramVM.MainProgramInstance;
            DataContext         = MainProgramInstance;

            var ret = MainProgramInstance.PrepHexMap();

            hexList = ret.Item1;
            mapDict = ret.Item2;

            foreach (var item in hexList.GetRange(0, 271))// display 271 hex on canvas
            {
                var secHex     = new HexagonDraw(item);
                var tmpPolygen = secHex.GetHexPolygon(Brushes.Gold);
                ParentCavas.Children.Add(tmpPolygen);
                tmpPolygen.MouseDown += TmpPolygen_MouseDown;
                ParentCavas.Children.Add(secHex.GetLabel());
            }

            var border = new Border
            {
                BorderThickness = new Thickness(1),
                BorderBrush     = Brushes.Black
            };

            this.WindowState = WindowState.Maximized;
            Show();
        }