예제 #1
0
        /// <summary>
        /// Set the UI size for the maze and listen for property changed events
        /// </summary>
        private void Maze_DataContextChanged(object sender, DependencyPropertyChangedEventArgs e)
        {
            _mazeViewModel = (MazeViewModel)this.DataContext;

            _mazeViewModel.PropertyChanged += MazeVM_PropertyChanged;
            SetMazeSize(this.ActualHeight, this.ActualWidth);
        }
예제 #2
0
        /// <summary>
        /// Setting the viewmodel
        /// </summary>
        /// <param name="m"></param>
        public void SetVM(MazeViewModel m)
        {
            myVM             = m as MultiViewModel;
            this.DataContext = myVM;
            MultiMazeModel tempModel = myVM.MyModel as MultiMazeModel;

            //Delegate for moving opponent's player on his board
            tempModel.OpponentMoved += delegate(Object sender, Key e)
            {
                int close = 10;
                this.Dispatcher.Invoke(() =>
                {
                    close = OpponentBoard.MovePlayer(e);

                    //Opponent won
                    if (close == -1 || close == 2)
                    {
                        LoserWindow lw = new LoserWindow();
                        lw.ShowDialog();
                        BackToMain();
                    }
                    //Opponent closed game
                    if (close == -2)
                    {
                        OtherPlayerQuit();
                    }
                });
            };
            myVM.VM_Maze = myVM.MyModel.MazeString();
        }
예제 #3
0
        private void UserKeyDown(object sender, KeyEventArgs e)
        {
            MazeViewModel maze = (MazeViewModel)this.DataContext;
            ICommand      comm = null;

            if (e.Key == Key.Down)
            {
                comm = maze.KeyDown;
            }
            else if (e.Key == Key.Up)
            {
                comm = maze.KeyUp;
            }
            else if (e.Key == Key.Right)
            {
                comm = maze.KeyRight;
            }
            else if (e.Key == Key.Left)
            {
                comm = maze.KeyLeft;
            }
            try
            {
                if (comm.CanExecute(new object()))
                {
                    comm.Execute(new object());
                }
            }
            catch (Exception exc) { }
        }
예제 #4
0
 /// <summary>
 /// Constructor.
 /// </summary>
 public MazeUserControl()
 {
     InitializeComponent();
     board = new MazeBoard(myCanvas);
     // Add game ended function to event.
     board.GameDone += GameEnded;
     vm              = new MazeViewModel(board);
 }
예제 #5
0
        private void MazeLevelToViewModel(MazeLevel mazeLevel, MazeViewModel viewModel)
        {
            viewModel.Cells = new CellType[mazeLevel.Height, mazeLevel.Width];

            foreach (var cell in mazeLevel.Cells
                     .OrderBy(x => x.Y)
                     .ThenBy(x => x.X))
            {
                viewModel.Cells[cell.Y, cell.X] = CellTypeMapper(cell);
                //viewModel.Cells[cell.Y, cell.X].X = cell.X;
                //viewModel.Cells[cell.Y, cell.X].Y = cell.Y;
            }
        }
예제 #6
0
        /// <summary>
        /// Constructor
        /// </summary>
        public SingleStartWindow()
        {
            myVM             = new SingleViewModel(new SingleMazeModel());
            this.DataContext = myVM;
            InitializeComponent();
            int success = myVM.MyModel.Connect();

            if (success < 0)
            {
                ConnectionFailedWindow c = new ConnectionFailedWindow();
                c.Show();
            }
            if (success >= 0)
            {
                GameInfo.btnStart.Click += BtnStart_Click;
                this.Show();
            }
        }
예제 #7
0
 public IActionResult GetSolution(MazeViewModel model)
 {
     try
     {
         var solver           = MazeSolverFactory.CreateMazeSolver(MazeSolverType.BFS);
         var maze             = _mapper.Map <MazeModel>(model);
         var solution         = solver.SolveMaze(maze);
         var hash             = new HashSet <int>();
         int currentCellIndex = maze.MaxIndex;
         int start            = 0;
         while (currentCellIndex != 0)
         {
             hash.Add(currentCellIndex);
             currentCellIndex = solution[currentCellIndex];
         }
         hash.Add(start);
         return(Ok(hash));
     }
     catch (Exception ex)
     {
         return(BadRequest(ex.Message));
     }
 }
예제 #8
0
 public MainWindow()
 {
     InitializeComponent();
     DataContext = new MazeViewModel();
 }
예제 #9
0
파일: HintShow.cs 프로젝트: benwex93/Mazes
 public static void LoadMazeViewModel(MazeViewModel mvm)
 {
     MVM = mvm;
 }
예제 #10
0
 public MazeView(MazeViewModel viewModel)
 {
     InitializeComponent();
     DataContext = viewModel;
 }
예제 #11
0
 /// <summary>
 /// Sets the view model for the window
 /// </summary>
 /// <param name="m"></param>
 public void SetVM(MazeViewModel m)
 {
     myVM             = m;
     this.DataContext = myVM;
     myVM.VM_Maze     = myVM.MyModel.MazeString();
 }