Пример #1
0
        public void TestTurtleOffTheBoard()
        {
            //arrange
            var board = new BoardViewModel()
            {
                N = 2, M = 2
            };
            var turtle = new TurtleViewModel()
            {
                Direction = "North", X = 1, Y = 1
            };
            var exitPoint = new BoardItemViewModel()
            {
                X = 4, Y = 5
            };
            var mines = new List <BoardItemViewModel>();

            mines.Add(new BoardItemViewModel()
            {
                X = 2, Y = 2
            });
            var moves       = "mmmmrrrmmmmmmm";
            var gameService = new GameService();

            //act
            var mockGame = gameService.Start(board, turtle, exitPoint, mines);

            mockGame = gameService.Move(moves, mockGame);
            //assert
            Assert.IsTrue(mockGame.Outcome == "Moved off the board!");
            Assert.IsTrue(mockGame.IsOver);
        }
Пример #2
0
        public void TestTurtleSucceeds()
        {
            //arrange
            var board = new BoardViewModel()
            {
                N = 10, M = 10
            };
            var turtle = new TurtleViewModel()
            {
                Direction = "North", X = 1, Y = 1
            };
            var exitPoint = new BoardItemViewModel()
            {
                X = 1, Y = 3
            };
            var mines = new List <BoardItemViewModel>();

            mines.Add(new BoardItemViewModel()
            {
                X = 4, Y = 5
            });
            var moves       = "mmmm";
            var gameService = new GameService();

            //act
            var mockGame = gameService.Start(board, turtle, exitPoint, mines);

            mockGame = gameService.Move(moves, mockGame);
            //assert
            Assert.IsTrue(mockGame.Outcome == "Success!");
            Assert.IsTrue(mockGame.IsOver);
        }
Пример #3
0
        public void AddBoard()
        {
            var ret = new BoardItemViewModel()
            {
                ItemSource = Boards,
                Name       = Utils.GetUniqueName("New Board", Boards.Select(x => (x as BoardItemViewModel).Name))
            };

            Boards.Add(ret);
            Selection = ret;
        }
Пример #4
0
        private void BoardMouseDown(object sender, MouseButtonEventArgs e)
        {
            DragItem = sender as Canvas;
            BoardItemViewModel board = DragItem.DataContext as BoardItemViewModel;

            ViewModelLocator.PreviewTabViewModel.Selection = board;
            mouseDownOffset = e.GetPosition(DragItem);
            MouseHitType    = SetHitType(new Rect(board.XPos, board.YPos, board.Width, board.Height), mouseDownOffset);
            if (MouseHitType == HitType.None)
            {
                return;
            }
            SetMouseCursor();
            mouseDown = true;
            boardView.CaptureMouse();
        }
Пример #5
0
        public async Task <BoardItemView> AddInBoard(AskViewModel argViewModel)
        {
            var pItemVM = new BoardItemViewModel {
                Numero = NuevoNumeroItem(), AskViewModel = argViewModel
            };
            var pItemViewObj = Activator.CreateInstance(argViewModel.MenuItem.ViewerType);

            if (!(pItemViewObj is BoardItemView pItemView))
            {
                return(null);
            }

            pItemView.BindingContext = pItemVM;

            await AddInBoard(pItemView);

            return(pItemView);
        }
Пример #6
0
        static void Main(string[] args)
        {
            Console.WriteLine("Board?:");
            BoardViewModel board = Console.ReadLine();

            Console.WriteLine("Starting position?:");
            TurtleViewModel turtle = Console.ReadLine();

            Console.WriteLine("Exit point?:");
            BoardItemViewModel exitPoint = Console.ReadLine();

            Console.WriteLine("Mines?:");
            var mines      = new List <BoardItemViewModel>();
            var mineInputs = Console.ReadLine()?.Split(',');

            if (mineInputs != null)
            {
                mines.AddRange(mineInputs.Select(mineInput => (BoardItemViewModel)mineInput));
            }
            DisplayOutput(StartGame(board, turtle, exitPoint, mines));
        }
Пример #7
0
        private void BoardViewMove(object sender, MouseEventArgs e)
        {
            if (!mouseDown)
            {
                Canvas             itemCanvas = (sender as Canvas).Children[0] as Canvas;
                BoardItemViewModel board      = itemCanvas.DataContext as BoardItemViewModel;
                MouseHitType = SetHitType(new Rect(board.XPos, board.YPos, board.Width, board.Height), e.GetPosition(itemCanvas));
                SetMouseCursor();
                return;
            }
            if (DragItem.DataContext is BoardItemViewModel)
            {
                base.OnMouseMove(e);
                e.Handled = true;

                var  vm      = DragItem.DataContext as BoardItemViewModel;
                Rect newrect = RectTransform(new Rect(vm.XPos, vm.YPos, vm.Width, vm.Height), e.GetPosition(boardView));
                vm.XPos   = Convert.ToInt32(newrect.X);
                vm.YPos   = Convert.ToInt32(newrect.Y);
                vm.Width  = Convert.ToInt32(newrect.Width);
                vm.Height = Convert.ToInt32(newrect.Height);
                vm.RefreshValues();
            }
        }
Пример #8
0
        public PreviewTabViewModel()
        {
            var _game = ViewModelLocator.GameLoader.Game;

            if (_game.GlobalPlayer == null)
            {
                _game.GlobalPlayer = new GlobalPlayer()
                {
                    Counters = new List <Counter>(),
                    Groups   = new List <Group>()
                };
            }
            Hand       = _game.Player.Hand == null ? null : new GroupItemViewModel(_game.Player.Hand);
            TableGroup = new GroupItemViewModel(_game.Table);
            Piles      = new ObservableCollection <IdeListBoxItemBase>();
            foreach (var pile in _game.Player.Groups)
            {
                Piles.Add(new GroupItemViewModel(pile)
                {
                    ItemSource = Piles
                });
            }
            Piles.CollectionChanged += (a, b) =>
            {
                _game.Player.Groups = Piles.Select(x => (x as GroupItemViewModel)._group).ToList();
                RaisePropertyChanged("CollapsedPiles");
                RaisePropertyChanged("VisiblePiles");
            };
            AddPileCommand = new RelayCommand(AddPile);

            Counters = new ObservableCollection <IdeListBoxItemBase>();
            foreach (var counter in _game.Player.Counters)
            {
                Counters.Add(new CounterItemViewModel(counter)
                {
                    ItemSource = Counters
                });
            }
            Counters.CollectionChanged += (a, b) =>
            {
                _game.Player.Counters = Counters.Select(x => (x as CounterItemViewModel)._counter).ToList();
            };
            AddCounterCommand = new RelayCommand(AddCounter);

            GlobalPiles = new ObservableCollection <IdeListBoxItemBase>();
            foreach (var pile in _game.GlobalPlayer.Groups)
            {
                GlobalPiles.Add(new GroupItemViewModel(pile)
                {
                    ItemSource = GlobalPiles
                });
            }
            GlobalPiles.CollectionChanged += (a, b) =>
            {
                _game.GlobalPlayer.Groups = Piles.Select(x => (x as GroupItemViewModel)._group).ToList();
                RaisePropertyChanged("CollapsedGlobalPiles");
                RaisePropertyChanged("VisibleGlobalPiles");
            };
            AddGlobalPileCommand = new RelayCommand(AddGlobalPile);

            GlobalCounters = new ObservableCollection <IdeListBoxItemBase>();
            foreach (var counter in _game.GlobalPlayer.Counters)
            {
                GlobalCounters.Add(new CounterItemViewModel(counter)
                {
                    ItemSource = GlobalCounters
                });
            }

            GlobalCounters.CollectionChanged += (a, b) =>
            {
                _game.GlobalPlayer.Counters = GlobalCounters.Select(x => (x as CounterItemViewModel)._counter).ToList();
            };
            AddGlobalCounterCommand = new RelayCommand(AddGlobalCounter);

            CardSizes = new ObservableCollection <IdeListBoxItemBase>();
            foreach (var sizeDef in _game.CardSizes)
            {
                var size = new SizeItemViewModel(sizeDef.Value)
                {
                    ItemSource = CardSizes
                };
                if (sizeDef.Key == "")
                {
                    size.IsDefault = true;
                    size.CanRemove = false;
                }
                CardSizes.Add(size);
            }
            CardSizes.CollectionChanged += (a, b) =>
            {
                UpdateSizes();
            };
            AddSizeCommand = new RelayCommand(AddSize);

            Phases = new ObservableCollection <IdeListBoxItemBase>();
            foreach (var phase in _game.Phases)
            {
                Phases.Add(new PhaseItemViewModel(phase)
                {
                    ItemSource = Phases
                });
            }
            Phases.CollectionChanged += (a, b) =>
            {
                _game.Phases = Phases.Select(x => (x as PhaseItemViewModel)._phase).ToList();
            };
            AddPhaseCommand = new RelayCommand(AddPhase);

            Boards = new ObservableCollection <IdeListBoxItemBase>();
            foreach (var boardDef in _game.GameBoards)
            {
                var board = new BoardItemViewModel(boardDef.Value)
                {
                    ItemSource = Boards
                };
                if (boardDef.Key == "")
                {
                    DefaultBoard = board;
                }
                Boards.Add(board);
            }
            ActiveBoard = DefaultBoard;
            Boards.CollectionChanged += (a, b) =>
            {
                UpdateBoards();
            };
            AddBoardCommand = new RelayCommand(AddBoard);

            Table = new TableItemViewModel();

            Cards = new ObservableCollection <CardViewModel>();
            var card = new CardViewModel
            {
                Size = DefaultSize
            };

            Cards.Add(card);

            RaisePropertyChanged("Cards");
        }
Пример #9
0
 public GameViewModel Start(BoardViewModel board, TurtleViewModel turtle, BoardItemViewModel exitPoint, IEnumerable <BoardItemViewModel> mines)
 {
     return(Game.Create(board.N, board.M, turtle.X, turtle.Y, turtle.Direction, mines.Select(m => new Tuple <int, int>(m.X, m.Y)), exitPoint.X, exitPoint.Y));
 }
Пример #10
0
 private static GameViewModel StartGame(BoardViewModel board, TurtleViewModel turtle, BoardItemViewModel exitPoint, IEnumerable <BoardItemViewModel> mines)
 {
     return(_gameService.Start(board, turtle, exitPoint, mines));
 }
Пример #11
0
        private static GameViewModel StartGame(BoardViewModel board, TurtleViewModel turtle, BoardItemViewModel exitPoint, List <BoardItemViewModel> mines)
        {
            var game = StartGame(board, turtle, exitPoint, (IEnumerable <BoardItemViewModel>)mines);

            while (game != null && !game.IsOver && !game.HasErrors)
            {
                Console.WriteLine("Moves?:");
                var moves = Console.ReadLine();
                game = Move(moves, game);
            }

            return(game);
        }