Ejemplo n.º 1
0
        public void SetActiveStep(Point point)
        {
            var elementToActivate = _elements.FirstOrDefault(e => e.Point.X == point.X && e.Point.Y == point.Y);

            var stepSet = elementToActivate.TextBlock.Dispatcher.BeginInvoke((Action)(() =>
            {
                elementToActivate.TextBlock.Foreground = new SolidColorBrush(Colors.Green);
                if (elementToActivate.Type == ElementType.Empty)
                {
                    elementToActivate.TextBlock.Text = "O";
                }
            }));

            stepSet.Completed += (s, e) =>
            {
                if (_currentActiveStep != null)
                {
                    _currentActiveStep.TextBlock.Dispatcher.BeginInvoke((Action)(() =>
                    {
                        _currentActiveStep.TextBlock.Foreground = new SolidColorBrush(Colors.Blue);
                    })).Completed += (cs, ce) =>
                    {
                        _currentActiveStep = elementToActivate;
                    };
                }
                else
                {
                    _currentActiveStep = elementToActivate;
                }
            };
        }
Ejemplo n.º 2
0
        private void DrawElement(LabyrinthElement element)
        {
            var elementText = string.Empty;

            switch (element.Type)
            {
            case ElementType.Empty:
                elementText = " ";
                break;

            case ElementType.Start:
                elementText = "S";
                break;

            case ElementType.Finish:
                elementText = "F";
                break;

            case ElementType.Wall:
                elementText = "#";
                break;
            }

            var labyrinthUIElement = new LabyrinthUIElement
            {
                Type      = element.Type,
                Point     = new Point(element.Point.X, element.Point.Y),
                TextBlock = new TextBlock
                {
                    Text     = elementText,
                    FontSize = 22
                }
            };

            _elements.Add(labyrinthUIElement);

            Canvas.SetLeft(labyrinthUIElement.TextBlock, element.Point.X * 20);
            Canvas.SetBottom(labyrinthUIElement.TextBlock, element.Point.Y * 20);

            _canvas.Children.Add(labyrinthUIElement.TextBlock);
        }